From 78d3bb3012e85aaf7a69b1e038f6d0500b286052 Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Fri, 17 Jan 2020 15:32:54 +0300 Subject: [PATCH 01/10] fix --- src/containers/auction/index.jsx | 2 +- src/containers/auction/table.js | 77 ----------------------------- src/containers/auction/table.jsx | 85 ++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 78 deletions(-) delete mode 100644 src/containers/auction/table.js create mode 100644 src/containers/auction/table.jsx diff --git a/src/containers/auction/index.jsx b/src/containers/auction/index.jsx index ab438a288..8cd040483 100644 --- a/src/containers/auction/index.jsx +++ b/src/containers/auction/index.jsx @@ -5,7 +5,7 @@ import withWeb3 from '../../components/web3/withWeb3'; import { Statistics } from './statistics'; import ActionBarAuction from './actionBar'; import { Dinamics } from './dinamics'; -import { Table } from './table'; +import Table from './table'; import { Loading } from '../../components/index'; import { run, diff --git a/src/containers/auction/table.js b/src/containers/auction/table.js deleted file mode 100644 index 3fe9f54a1..000000000 --- a/src/containers/auction/table.js +++ /dev/null @@ -1,77 +0,0 @@ -import React, { Component } from "react"; -import { ClaimedRound } from "./claimed"; -import { FormatNumber } from '../../components/index'; - -export class Table extends Component { - render() { - const { data, TOKEN_NAME, claimed, web3, contract, round } = this.props; - const tableRow = data.map(item => ( -
-
{item.period}
-
- -
-
- -
-
- -
-
- {item.closing > 0 - ? `${item.closing} day ago` - : item.closing < 0 - ? `in ${item.closing * -1} days` - : "now"} -
-
- -
-
- -
- {item.claimed && ( -
- - Claim - -
- )} -
- )); - return ( -
-
-
Round
-
Distributed, G{TOKEN_NAME}
-
Total, ETH
-
Price, ETH/G{TOKEN_NAME}
-
Closing
-
Your ETH
-
Your G{TOKEN_NAME}
- {/* {claimed && ( -
- - Claim All - -
- )} */} -
-
{tableRow}
-
- ); - } -} diff --git a/src/containers/auction/table.jsx b/src/containers/auction/table.jsx new file mode 100644 index 000000000..6e0242739 --- /dev/null +++ b/src/containers/auction/table.jsx @@ -0,0 +1,85 @@ +import React, { Component } from 'react'; +import { ClaimedRound } from './claimed'; +import { FormatNumber } from '../../components/index'; + +const Table = ({ data, TOKEN_NAME, claimed, web3, contract, round }) => { + const tableRow = data.map(item => { + let closing; + if (item.closing > 0) { + closing = `${item.closing} day ago`; + } else if (item.closing < 0) { + closing = `in ${item.closing * -1} days`; + } else { + closing = 'now'; + } + return ( +
+
{item.period}
+
+ +
+
+ +
+
+ +
+
+ {closing} +
+
+ +
+
+ +
+ {item.claimed && ( +
+ + Claim + +
+ )} +
+ ); + }); + return ( +
+
+
Round
+
Distributed, G{TOKEN_NAME}
+
Total, ETH
+
Price, ETH/G{TOKEN_NAME}
+
Closing
+
Your ETH
+
Your G{TOKEN_NAME}
+ {/* {claimed && ( +
+ + Claim All + +
+ )} */} +
+
+ {tableRow} +
+
+ ); +}; + +export default Table; From 7dddb0ab363a2c59c566db59ac3053cf792bb89a Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Fri, 17 Jan 2020 16:45:26 +0300 Subject: [PATCH 02/10] #32 add columns with bonded amounts --- src/containers/Validators/Validators.jsx | 51 ++++++++++++++++++------ src/i18n/en.js | 15 ++++--- src/utils/config.js | 2 +- src/utils/utils.js | 33 +++++++-------- 4 files changed, 66 insertions(+), 35 deletions(-) diff --git a/src/containers/Validators/Validators.jsx b/src/containers/Validators/Validators.jsx index 0961d5ea4..e9012d618 100644 --- a/src/containers/Validators/Validators.jsx +++ b/src/containers/Validators/Validators.jsx @@ -25,10 +25,12 @@ import { formatNumber, asyncForEach, formatValidatorAddress, + roundNumber, } from '../../utils/utils'; import { FormatNumber, Loading } from '../../components'; import ActionBarContainer from './ActionBarContainer'; import { i18n } from '../../i18n/en'; +import { CYBER } from '../../utils/config'; const T = new LocalizedStrings(i18n); @@ -189,7 +191,7 @@ class Validators extends Component { ); } ); -console.log(validators); + console.log(validators); this.setState({ loading: false, validators, @@ -313,7 +315,7 @@ console.log(validators); %) - + - + + + + + + {validator.height} @@ -376,37 +394,44 @@ console.log(validators); style={{ backgroundColor: '#000', borderBottom: '1px solid #ffffff80', + marginTop: '10px', + paddingBottom: '10px', }} > - # + # - + {T.validators.table.moniker} - + {T.validators.table.operator} - + {T.validators.table.commissionProcent} - - {T.validators.table.power} + + {T.validators.table.power} - - + + {T.validators.table.selfProcent} - - + + + {T.validators.table.bondedTokens} + + + + {showJailed ? T.validators.table.unbonding : T.validators.table.rank} diff --git a/src/i18n/en.js b/src/i18n/en.js index 2992829af..e4d4a14db 100644 --- a/src/i18n/en.js +++ b/src/i18n/en.js @@ -1,14 +1,19 @@ +import { CYBER } from '../utils/config'; + +const { DENOM_CYBER, DENOM_CYBER_G } = CYBER; + const i18n = { en: { validators: { table: { moniker: 'Moniker', operator: 'Operator', - commissionProcent: 'Commission (%)', - power: 'Power (GCYB)', - selfProcent: 'Self (%)', + commissionProcent: 'Commission', + power: `Power (${DENOM_CYBER_G.toLocaleUpperCase()})`, + selfProcent: 'Self', unbonding: 'Unbonding height', rank: 'Rank', + bondedTokens: `Bonded tokens (${DENOM_CYBER_G.toLocaleUpperCase()})`, }, }, pocket: { @@ -22,12 +27,12 @@ const i18n = { }, brain: { knowledge: 'Knowledge graph', - yourTotal: 'your total EUL', + yourTotal: `your total ${DENOM_CYBER.toLocaleUpperCase()}`, cyberlinks: 'cyberlinks', objects: 'objects', subjects: 'subjects', cybernomics: 'Cybernomics', - supply: 'supply of CYB', + supply: `supply of ${DENOM_CYBER.toLocaleUpperCase()}`, staked: '% of staked CYB', price: 'price of cyberlink in RC', consensus: 'Consensus', diff --git a/src/utils/config.js b/src/utils/config.js index 273cac12a..240fb3a02 100644 --- a/src/utils/config.js +++ b/src/utils/config.js @@ -47,7 +47,7 @@ const COSMOS = { const CYBER = { DIVISOR_CYBER_G: 10 ** 9, DENOM_CYBER: 'eul', - DENOM_CYBER_G: 'G', + DENOM_CYBER_G: `GEUL`, CYBER_WEBSOCKET_URL: 'wss://titan.cybernode.ai/websocket', CYBER_NODE_URL: 'https://titan.cybernode.ai', BECH32_PREFIX_ACC_ADDR_CYBER: 'cyber', diff --git a/src/utils/utils.js b/src/utils/utils.js index 8c9021e8b..dc8b1ba60 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -3,11 +3,27 @@ import { CYBER } from './config'; const { BECH32_PREFIX_ACC_ADDR_CYBER } = CYBER; +const roundNumber = (num, scale) => { + if (!`${num}`.includes('e')) { + return +`${Math.floor(`${num}e+${scale}`)}e-${scale}`; + } + const arr = `${num}`.split('e'); + let sig = ''; + if (+arr[1] + scale > 0) { + sig = '+'; + } + const i = `${+arr[0]}e${sig}${+arr[1] + scale}`; + const j = Math.floor(i); + const k = +`${j}e-${scale}`; + return k; +}; + const formatNumber = (number, toFixed) => { let formatted = number; if (toFixed) { - formatted = formatted.toFixed(toFixed); + formatted = roundNumber(formatted, toFixed); + formatted = formatted.toFixed(toFixed + 1); } // debugger; return formatted @@ -31,21 +47,6 @@ const run = async func => { } }; -const roundNumber = (num, scale) => { - if (!`${num}`.includes('e')) { - return +`${Math.floor(`${num}e+${scale}`)}e-${scale}`; - } - const arr = `${num}`.split('e'); - let sig = ''; - if (+arr[1] + scale > 0) { - sig = '+'; - } - const i = `${+arr[0]}e${sig}${+arr[1] + scale}`; - const j = Math.floor(i); - const k = +`${j}e-${scale}`; - return k; -}; - const asyncForEach = async (array, callback) => { for (let index = 0; index < array.length; index++) { await callback(array[index], index, array); From e0aa0cc39531920d5775a44f7aa36880b8d86259 Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Fri, 17 Jan 2020 16:58:15 +0300 Subject: [PATCH 03/10] fix table --- src/containers/Validators/Validators.jsx | 35 ++++++++++++------------ 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/containers/Validators/Validators.jsx b/src/containers/Validators/Validators.jsx index e9012d618..85d4815e7 100644 --- a/src/containers/Validators/Validators.jsx +++ b/src/containers/Validators/Validators.jsx @@ -277,21 +277,21 @@ class Validators extends Component { isSelectable key={validator.operator_address} > - + - + {index + 1} - + {validator.description.moniker} - + {formatValidatorAddress(validator.operator_address)} - + - + - + - + - - + + # - + {T.validators.table.moniker} - + {T.validators.table.operator} - + {T.validators.table.commissionProcent} - + {T.validators.table.power} - + {T.validators.table.selfProcent} - + {T.validators.table.bondedTokens} - + {showJailed ? T.validators.table.unbonding From 01e65161378530a2314814f9d7a9a53961b6ab1b Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Fri, 17 Jan 2020 19:38:52 +0300 Subject: [PATCH 04/10] #32 add button bond/unbond --- src/components/ledger/stageActionBar.jsx | 31 +++--- .../Validators/ActionBarContainer.jsx | 100 ++++++++++++++---- src/i18n/en.js | 9 +- src/utils/ledger.js | 15 +++ src/utils/txs.js | 22 ++++ 5 files changed, 137 insertions(+), 40 deletions(-) diff --git a/src/components/ledger/stageActionBar.jsx b/src/components/ledger/stageActionBar.jsx index c32263b52..2e8997201 100644 --- a/src/components/ledger/stageActionBar.jsx +++ b/src/components/ledger/stageActionBar.jsx @@ -12,7 +12,7 @@ import { Textarea, } from '@cybercongress/gravity'; import { ContainetLedger, Loading, FormatNumber } from '../index'; -import { formatNumber } from '../../utils/search/utils'; +import { formatNumber } from '../../utils/utils'; import { i18n } from '../../i18n/en'; @@ -82,7 +82,7 @@ export const Confirmed = ({ txHeight, onClickBtn, onClickBtnCloce, - explorer + explorer, }) => ( @@ -531,6 +531,7 @@ export const Delegate = ({ onChangeInputAmount, toSend, disabledBtn, + delegate, }) => ( @@ -543,11 +544,15 @@ export const Delegate = ({ {address} - {T.actionBar.delegate.details} + {delegate + ? T.actionBar.delegate.details + : T.actionBar.delegate.detailsUnDelegate} - {T.actionBar.delegate.wallet} + {delegate + ? T.actionBar.delegate.wallet + : T.actionBar.delegate.yourDelegated} - {(DENOM_CYBER_G + DENOM_CYBER).toUpperCase()} + {DENOM_CYBER_G.toUpperCase()} - {T.actionBar.delegate.enterAmount}{' '} - {(DENOM_CYBER_G + DENOM_CYBER).toUpperCase()}{' '} - {T.actionBar.delegate.delegate.toLowerCase()}{' '} + {T.actionBar.delegate.enterAmount} {DENOM_CYBER_G.toUpperCase()}{' '} + {delegate + ? T.actionBar.delegate.delegate + : T.actionBar.delegate.unDelegateFrom}{' '} {moniker} @@ -694,9 +697,7 @@ export const SendLedgerAtomTot = ({

{T.actionBar.send.wallet}

{availableStake} -
+
address to: {addressTo} diff --git a/src/containers/Validators/ActionBarContainer.jsx b/src/containers/Validators/ActionBarContainer.jsx index 9546cfc22..c2c35a588 100644 --- a/src/containers/Validators/ActionBarContainer.jsx +++ b/src/containers/Validators/ActionBarContainer.jsx @@ -14,7 +14,10 @@ import { } from '../../components'; import { formatValidatorAddress, formatNumber } from '../../utils/utils'; -import { getBalanceWallet } from '../../utils/search/utils'; +import { + getBalanceWallet, + selfDelegationShares, +} from '../../utils/search/utils'; import { LEDGER, CYBER } from '../../utils/config'; @@ -38,6 +41,9 @@ const { const T = new LocalizedStrings(i18n); +export const TXTYPE_DELEGATE = 0; +export const TXTYPE_UNDELEGATE = 1; + const ActionBarContentText = ({ children, ...props }) => ( { const { address } = this.state; + const { validators } = this.props; + + const validatorAddres = validators[0].operator_address; + let addressInfo = {}; let balance = 0; try { const chainId = await this.getNetworkId(); const response = await getBalanceWallet(address.bech32); + const delegate = await selfDelegationShares( + address.bech32, + validatorAddres + ); + + console.log('delegate', delegate); if (response) { const data = response.account; - addressInfo = { chainId, ...data }; + addressInfo = { chainId, ...data, delegate }; balance = addressInfo.coins[0].amount; } @@ -219,9 +236,11 @@ class ActionBarContainer extends Component { }; generateTx = async () => { - const { ledger, address, addressInfo, toSend } = this.state; + const { ledger, address, addressInfo, toSend, txType } = this.state; const { validators } = this.props; + let tx = {}; + const validatorAddres = validators[0].operator_address; console.log(validatorAddres); @@ -238,14 +257,29 @@ class ActionBarContainer extends Component { pk: address.pk, path: address.path, }; + + switch (txType) { + case TXTYPE_DELEGATE: + tx = await ledger.txCreateDelegateCyber( + txContext, + validatorAddres, + amount, + MEMO, + denom + ); + break; + case TXTYPE_UNDELEGATE: + tx = await ledger.txCreateUndelegateCyber( + txContext, + validatorAddres, + amount, + MEMO + ); + break; + default: + break; + } // console.log('txContext', txContext); - const tx = await ledger.txCreateDelegateCyber( - txContext, - validatorAddres, - amount, - MEMO, - denom - ); console.log('tx', tx); await this.setState({ txMsg: tx, @@ -313,12 +347,6 @@ class ActionBarContainer extends Component { }); }; - toStageConnectLadger = () => { - this.setState({ - stage: STAGE_LEDGER_INIT, - }); - }; - cleatState = () => { this.setState({ stage: STAGE_INIT, @@ -348,10 +376,32 @@ class ActionBarContainer extends Component { return this.state.addressInfo !== null; } - onClickMax = () => - this.setState(prevState => ({ - toSend: prevState.balance / DIVISOR_CYBER_G, - })); + onClickMax = () => { + const { txType } = this.state; + if (txType === TXTYPE_DELEGATE) { + this.setState(prevState => ({ + toSend: prevState.balance / DIVISOR_CYBER_G, + })); + } else { + this.setState(prevState => ({ + toSend: prevState.addressInfo.delegate / DIVISOR_CYBER_G, + })); + } + }; + + onClickDelegate = () => { + this.setState({ + stage: STAGE_LEDGER_INIT, + txType: TXTYPE_DELEGATE, + }); + }; + + onClickUnDelegate = () => { + this.setState({ + stage: STAGE_LEDGER_INIT, + txType: TXTYPE_UNDELEGATE, + }); + }; render() { const { validators } = this.props; @@ -365,6 +415,8 @@ class ActionBarContainer extends Component { txMsg, txHash, txHeight, + txType, + addressInfo, } = this.state; const T_AB = T.actionBar.delegate; @@ -397,15 +449,16 @@ class ActionBarContainer extends Component { - {T_AB.delegate} + {T_AB.heroes} {validators[0].description.moniker} - + ); } @@ -428,7 +481,7 @@ class ActionBarContainer extends Component { this.generateTx()} @@ -436,6 +489,7 @@ class ActionBarContainer extends Component { onChangeInputAmount={e => this.onChangeInputAmount(e)} toSend={toSend} disabledBtn={balance === 0} + delegate={txType === TXTYPE_DELEGATE} /> ); } diff --git a/src/i18n/en.js b/src/i18n/en.js index e4d4a14db..942cfa1bd 100644 --- a/src/i18n/en.js +++ b/src/i18n/en.js @@ -79,9 +79,14 @@ const i18n = { delegate: { joinValidator: 'Join Cyberd Network As Validator', btnBecome: 'Become a validator', - delegate: 'Delegate to', - btnDelegate: 'Delegate with Ledger', + heroes: 'Heroes', + delegate: 'delegate to', + unDelegateFrom: 'undelegate from ', + yourDelegated: 'your delegated tokens:', + btnDelegate: 'DELEGATE', + btnUnDelegate: 'UNDELEGATE', details: 'Delegation Details', + detailsUnDelegate: 'UnDelegation Details', wallet: 'Your wallet contains', max: 'Max', generate: 'Generate Tx', diff --git a/src/utils/ledger.js b/src/utils/ledger.js index 5fd0297c3..4e6b7a4c2 100644 --- a/src/utils/ledger.js +++ b/src/utils/ledger.js @@ -570,6 +570,21 @@ class CosmosDelegateTool { return txs.createUndelegate(txContext, validatorBech32, uatomAmount, memo); } + txCreateUndelegateCyber = (txContext, validatorBech32, eulAmount, memo) => { + if (typeof txContext === 'undefined') { + throw new Error('undefined txContext'); + } + if (typeof txContext.bech32 === 'undefined') { + throw new Error('txContext does not contain the source address (bech32)'); + } + return txs.createUndelegateCyber( + txContext, + validatorBech32, + eulAmount, + memo + ); + }; + // Relays a signed transaction and returns a transaction hash async txSubmit(signedTx) { const txBody = { diff --git a/src/utils/txs.js b/src/utils/txs.js index 3093840e7..328c5ca9a 100644 --- a/src/utils/txs.js +++ b/src/utils/txs.js @@ -406,6 +406,27 @@ function createUndelegate(txContext, validatorBech32, uatomAmount, memo) { return txSkeleton; } +function createUndelegateCyber(txContext, validatorBech32, eulAmount, memo) { + const txSkeleton = createSkeletonCyber(txContext); + + const txMsg = { + type: 'cosmos-sdk/MsgUndelegate', + value: { + amount: { + amount: eulAmount.toString(), + denom: DENOM_CYBER, + }, + delegator_address: txContext.bech32, + validator_address: validatorBech32, + }, + }; + + txSkeleton.value.msg = [txMsg]; + txSkeleton.value.memo = memo || ''; + + return txSkeleton; +} + // Creates a new redelegation tx based on the input parameters // the function expects a complete txContext function createRedelegate( @@ -449,4 +470,5 @@ export default { createDelegateCyber, createTextProposal, createCommunityPool, + createUndelegateCyber, }; From 944334f62a7d66b84d211b50709ffc8833c4f5b6 Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Mon, 20 Jan 2020 23:27:50 +0300 Subject: [PATCH 05/10] init --- contracts/MiniMeToken.json | 590 ++ contracts/TokenManager.json | 759 ++ contracts/Vesting.json | 9478 ++++++++++++++++++ src/components/web3/web3Vesting.js | 137 + src/components/web3/withWeb3.js | 3 +- src/containers/Search/ActionBarContainer.jsx | 3 + src/containers/vesting/vesting.jsx | 72 + src/router.jsx | 2 + src/utils/config.js | 4 +- 9 files changed, 11046 insertions(+), 2 deletions(-) create mode 100644 contracts/MiniMeToken.json create mode 100644 contracts/TokenManager.json create mode 100644 contracts/Vesting.json create mode 100644 src/components/web3/web3Vesting.js create mode 100644 src/containers/vesting/vesting.jsx diff --git a/contracts/MiniMeToken.json b/contracts/MiniMeToken.json new file mode 100644 index 000000000..62f54fce2 --- /dev/null +++ b/contracts/MiniMeToken.json @@ -0,0 +1,590 @@ +{ + "contractName": "TokenManager", + "abi": + [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "creationBlock", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_newController", + "type": "address" + } + ], + "name": "changeController", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "version", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "parentToken", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "transfersEnabled", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "parentSnapShotBlock", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenFactory", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controller", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_tokenFactory", + "type": "address" + }, + { + "name": "_parentToken", + "type": "address" + }, + { + "name": "_parentSnapShotBlock", + "type": "uint256" + }, + { + "name": "_tokenName", + "type": "string" + }, + { + "name": "_decimalUnits", + "type": "uint8" + }, + { + "name": "_tokenSymbol", + "type": "string" + }, + { + "name": "_transfersEnabled", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_token", + "type": "address" + }, + { + "indexed": true, + "name": "_controller", + "type": "address" + }, + { + "indexed": false, + "name": "_amount", + "type": "uint256" + } + ], + "name": "ClaimedTokens", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_cloneToken", + "type": "address" + }, + { + "indexed": false, + "name": "_snapshotBlock", + "type": "uint256" + } + ], + "name": "NewCloneToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_extraData", + "type": "bytes" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_blockNumber", + "type": "uint256" + } + ], + "name": "balanceOfAt", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_blockNumber", + "type": "uint256" + } + ], + "name": "totalSupplyAt", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_cloneTokenName", + "type": "string" + }, + { + "name": "_cloneDecimalUnits", + "type": "uint8" + }, + { + "name": "_cloneTokenSymbol", + "type": "string" + }, + { + "name": "_snapshotBlock", + "type": "uint256" + }, + { + "name": "_transfersEnabled", + "type": "bool" + } + ], + "name": "createCloneToken", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "generateTokens", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "destroyTokens", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_transfersEnabled", + "type": "bool" + } + ], + "name": "enableTransfers", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + } + ], + "name": "claimTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/TokenManager.json b/contracts/TokenManager.json new file mode 100644 index 000000000..7a298d9c8 --- /dev/null +++ b/contracts/TokenManager.json @@ -0,0 +1,759 @@ +{ + "contractName": "TokenManager", + "abi": + [ + { + "constant": true, + "inputs": [], + "name": "hasInitialized", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_VESTINGS_PER_ADDRESS", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_script", + "type": "bytes" + } + ], + "name": "getEVMScriptExecutor", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getRecoveryVault", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "appId", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ISSUE_ROLE", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getInitializationBlock", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "vestingsLengths", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + } + ], + "name": "transferToVault", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_sender", + "type": "address" + }, + { + "name": "_role", + "type": "bytes32" + }, + { + "name": "_params", + "type": "uint256[]" + } + ], + "name": "canPerform", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getEVMScriptRegistry", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ASSIGN_ROLE", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BURN_ROLE", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "kernel", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isPetrified", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MINT_ROLE", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "maxAccountTokens", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "REVOKE_VESTINGS_ROLE", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "name": "vestingId", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "NewVesting", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "name": "vestingId", + "type": "uint256" + }, + { + "indexed": false, + "name": "nonVestedAmount", + "type": "uint256" + } + ], + "name": "RevokeVesting", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "executor", + "type": "address" + }, + { + "indexed": false, + "name": "script", + "type": "bytes" + }, + { + "indexed": false, + "name": "input", + "type": "bytes" + }, + { + "indexed": false, + "name": "returnData", + "type": "bytes" + } + ], + "name": "ScriptResult", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "RecoverToVault", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_transferable", + "type": "bool" + }, + { + "name": "_maxAccountTokens", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_receiver", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "issue", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_receiver", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "assign", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_holder", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_receiver", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_start", + "type": "uint64" + }, + { + "name": "_cliff", + "type": "uint64" + }, + { + "name": "_vested", + "type": "uint64" + }, + { + "name": "_revokable", + "type": "bool" + } + ], + "name": "assignVested", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_holder", + "type": "address" + }, + { + "name": "_vestingId", + "type": "uint256" + } + ], + "name": "revokeVesting", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "onTransfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "uint256" + } + ], + "name": "onApprove", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "proxyPayment", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isForwarder", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_evmScript", + "type": "bytes" + } + ], + "name": "forward", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_sender", + "type": "address" + }, + { + "name": "", + "type": "bytes" + } + ], + "name": "canForward", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_recipient", + "type": "address" + }, + { + "name": "_vestingId", + "type": "uint256" + } + ], + "name": "getVesting", + "outputs": [ + { + "name": "amount", + "type": "uint256" + }, + { + "name": "start", + "type": "uint64" + }, + { + "name": "cliff", + "type": "uint64" + }, + { + "name": "vesting", + "type": "uint64" + }, + { + "name": "revokable", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_holder", + "type": "address" + } + ], + "name": "spendableBalanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_holder", + "type": "address" + }, + { + "name": "_time", + "type": "uint256" + } + ], + "name": "transferableBalance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_token", + "type": "address" + } + ], + "name": "allowRecoverability", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/Vesting.json b/contracts/Vesting.json new file mode 100644 index 000000000..15abe226f --- /dev/null +++ b/contracts/Vesting.json @@ -0,0 +1,9478 @@ +{ + "contractName": "Vesting", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "hasInitialized", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "claimsLength", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_script", + "type": "bytes" + } + ], + "name": "getEVMScriptExecutor", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenManager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getRecoveryVault", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PAUSE_ROLE", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "uint256" + } + ], + "name": "proofs", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "token", + "type": "address" + } + ], + "name": "allowRecoverability", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PROOF_ROLE", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "appId", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "vestingEnd", + "outputs": [ + { + "name": "", + "type": "uint64" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getInitializationBlock", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + } + ], + "name": "transferToVault", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_sender", + "type": "address" + }, + { + "name": "_role", + "type": "bytes32" + }, + { + "name": "_params", + "type": "uint256[]" + } + ], + "name": "canPerform", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getEVMScriptRegistry", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "uint256" + } + ], + "name": "claims", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "kernel", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isPetrified", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "proofsLength", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "vestingId", + "type": "uint256" + }, + { + "indexed": true, + "name": "lockAddress", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "account", + "type": "string" + } + ], + "name": "NewLock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "claimer", + "type": "address" + }, + { + "indexed": false, + "name": "vestingId", + "type": "uint256" + }, + { + "indexed": false, + "name": "proofTx", + "type": "string" + } + ], + "name": "NewProof", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "state", + "type": "bool" + } + ], + "name": "Pause", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "executor", + "type": "address" + }, + { + "indexed": false, + "name": "script", + "type": "bytes" + }, + { + "indexed": false, + "name": "input", + "type": "bytes" + }, + { + "indexed": false, + "name": "returnData", + "type": "bytes" + } + ], + "name": "ScriptResult", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "RecoverToVault", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenManager", + "type": "address" + }, + { + "name": "_vestingEnd", + "type": "uint64" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_account", + "type": "string" + } + ], + "name": "lock", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_claimer", + "type": "address" + }, + { + "name": "_claimId", + "type": "uint256" + }, + { + "name": "_proofTx", + "type": "string" + } + ], + "name": "addProof", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_claimer", + "type": "address" + }, + { + "name": "_claimId", + "type": "uint256" + } + ], + "name": "getClaimAddress", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_claimer", + "type": "address" + }, + { + "name": "_claimId", + "type": "uint256" + } + ], + "name": "getProof", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062002727833981519152640100000000620020ce6200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062002727833981519152826401000000006200239f6200023782021704565b50565b5490565b9055565b6124dc806200024b6000396000f30060806040526004361061015e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146101635780630c1ab77e1461018c5780631792b047146102045780631798de81146102445780632914b9bd1461027f5780632a709b141461030157806332f0a3b514610316578063389ed2671461032b5780633d856fff146103405780633f4ba83a146103e65780634f5b5a52146103fb5780635c975abb1461042c578063602c7826146104415780637e7db6e1146104725780637ed9d50e146104a057806380afdea8146104b55780638456cb59146104ca57806384a1931f146104df5780638b3dd749146105115780639d4941d814610526578063a1658fad14610554578063a479e508146105c8578063ab541a85146105dd578063d4aae0c41461060e578063de4796ed14610623578063f478503914610638578063f643509c14610666575b600080fd5b34801561016f57600080fd5b506101786106c4565b604080519115158252519081900360200190f35b34801561019857600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261020294823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506106ee9650505050505050565b005b34801561021057600080fd5b5061023273ffffffffffffffffffffffffffffffffffffffff60043516610921565b60408051918252519081900360200190f35b34801561025057600080fd5b5061020273ffffffffffffffffffffffffffffffffffffffff6004351667ffffffffffffffff60243516610933565b34801561028b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102d8943694929360249392840191908190840183828082843750949750610b3f9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561030d57600080fd5b506102d8610c4b565b34801561032257600080fd5b506102d8610c67565b34801561033757600080fd5b50610232610d06565b34801561034c57600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435610d3b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ab578181015183820152602001610393565b50505050905090810190601f1680156103d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f257600080fd5b50610202610dfd565b34801561040757600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435610f47565b34801561043857600080fd5b5061017861110b565b34801561044d57600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435611134565b34801561047e57600080fd5b5061017873ffffffffffffffffffffffffffffffffffffffff600435166112bf565b3480156104ac57600080fd5b506102326112c5565b3480156104c157600080fd5b506102326112fa565b3480156104d657600080fd5b5061020261132a565b3480156104eb57600080fd5b506104f4611493565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561051d57600080fd5b506102326114bb565b34801561053257600080fd5b5061020273ffffffffffffffffffffffffffffffffffffffff600435166114e6565b34801561056057600080fd5b50604080516020600460443581810135838102808601850190965280855261017895833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506118089650505050505050565b3480156105d457600080fd5b506102d8611998565b3480156105e957600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435611a5a565b34801561061a57600080fd5b506102d8611ae9565b34801561062f57600080fd5b50610178611b14565b34801561064457600080fd5b5061023273ffffffffffffffffffffffffffffffffffffffff60043516611b45565b34801561067257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610232958335953695604494919390910191908190840183828082843750949750611b579650505050505050565b6000806106cf6114bb565b905080158015906106e75750806106e4611fd9565b10155b91505b5090565b604080517f50524f4f465f524f4c45000000000000000000000000000000000000000000008152815190819003600a0181206000808352602083019093529161073d9133918491905b50611808565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610816576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107db5781810151838201526020016107c3565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083208684528252909120835161085592850190612422565b5073ffffffffffffffffffffffffffffffffffffffff84166000818152600260209081526040805187815280830182815287519282019290925286517f8978b4c46d847b359248a8d11c9669d2f9192d35ddd6954d6d8d3d0c7a151cb29489948994926060850192918601918190849084905b838110156108e05781810151838201526020016108c8565b50505050905090810190601f16801561090d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250505050565b60046020526000908152604090205481565b61093b6114bb565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156109d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b506109e0611fdd565b60408051808201909152600881527f504153545f454e4400000000000000000000000000000000000000000000000060208201529067ffffffffffffffff90811690831611610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416177fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff841602177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055610b3b611fef565b5050565b6000610b49611998565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcd578181015183820152602001610bb5565b50505050905090810190601f168015610bfa5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b505050506040513d6020811015610c4357600080fd5b505192915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c71611ae9565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b505050506040513d6020811015610cfe57600080fd5b505190505b90565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b600160208181526000938452604080852082529284529282902080548351600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f81018590048502830185019093528282529092909190830182828015610df55780601f10610dca57610100808354040283529160200191610df5565b820191906000526020600020905b815481529060010190602001808311610dd857829003601f168201915b505050505081565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152815190819003600a01812060008083526020830190935291610e4a913391849190610737565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055604080516001815290517f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f4593049181900360200190a150565b60608282600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600881526020017f4e4f5f50524f4f4600000000000000000000000000000000000000000000000081525090151561102c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260016020818152604080842088855282529283902080548451600294821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911693909304601f81018390048302840183019094528383529192908301828280156110fc5780601f106110d1576101008083540402835291602001916110fc565b820191906000526020600020905b8154815290600101906020018083116110df57829003601f168201915b50505050509250505092915050565b6000547c0100000000000000000000000000000000000000000000000000000000900460ff1681565b60608282600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600881526020017f4e4f5f434c41494d000000000000000000000000000000000000000000000000815250901515611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260036020908152604080832087845282529182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156110fc5780601f106110d1576101008083540402835291602001916110fc565b50600190565b604080517f50524f4f465f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b60006113257fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6120ce565b905090565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152815190819003600a01812060008083526020830190935291611377913391849190610737565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611414576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000179055604080516001815290517f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f4593049181900360200190a150565b60005474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60006113257febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6120ce565b60008060006114f4846112bf565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5061159a610c67565b92506115a5836120d6565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff841615156116ad576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156116a7573d6000803e3d6000fd5b5061179d565b50826116d573ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61211016565b91506116fe73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61224916565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c4544000000602082015290151561179b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b6000806118136106c4565b15156118225760009150611990565b61182a611ae9565b905073ffffffffffffffffffffffffffffffffffffffff811615156118525760009150611990565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761187a886122e1565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156119125781810151838201526020016118fa565b50505050905090810190601f16801561193f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561196157600080fd5b505af1158015611975573d6000803e3d6000fd5b505050506040513d602081101561198b57600080fd5b505191505b509392505050565b6000806119a3611ae9565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610c1957600080fd5b60036020908152600092835260408084208252918352918190208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610df55780601f10610dca57610100808354040283529160200191610df5565b60006113257f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6120ce565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b3f6114bb565b14905090565b60026020526000908152604090205481565b6000805460408051808201909152600d81527f4c4f434b5f4f4e5f50415553450000000000000000000000000000000000000060208201526060918391907c0100000000000000000000000000000000000000000000000000000000900460ff1615611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50835160408051808201909152600d81527f57524f4e475f4143434f554e5400000000000000000000000000000000000000602082015285935090602c14611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5060008054604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815233600482015260248101899052905173ffffffffffffffffffffffffffffffffffffffff90921692639dc29fac9260448084019382900301818387803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b505060008054604080517fcc872b66000000000000000000000000000000000000000000000000000000008152600481018b9052905173ffffffffffffffffffffffffffffffffffffffff909216945063cc872b669350602480820193929182900301818387803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b505060005473ffffffffffffffffffffffffffffffffffffffff1691506321cb18cd90503387611e02611fdd565b60008054604080517c010000000000000000000000000000000000000000000000000000000063ffffffff891602815273ffffffffffffffffffffffffffffffffffffffff9096166004870152602486019490945267ffffffffffffffff92831660448601527401000000000000000000000000000000000000000090049190911660648401819052608484015260a48301819052905160c4808401936020939083900390910190829087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b505050506040513d6020811015611ee557600080fd5b505133600090815260036020908152604080832084845282529091208651929350611f14929091870190612422565b5033600081815260046020908152604080518581528083018a9052606091810182815289519282019290925288517f552f182d4b9ab267a8580e2aa80cf374b7aabc8f528b7e9eea58919eea48e87d9487948c948c949390926080850192860191908190849084905b83811015611f95578181015183820152602001611f7d565b50505050905090810190601f168015611fc25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2949350505050565b4390565b6000611325611fea6122eb565b6122ef565b611ff76114bb565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015612093576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b506120cc61209f611fd9565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61239f16565b565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156120ff576000915061210a565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818061219d86846123a3565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151561223f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906122d885826123d4565b95945050505050565b8051602002815290565b4290565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115612398576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5090919050565b9055565b6000806000806040516020818751602089018a5afa925060008311156123c857805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115612418573d8015612405576020811461240e57612416565b60019350612416565b600183511493505b505b5090949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061246357805160ff1916838001178555612490565b82800160010185558215612490579182015b82811115612490578251825591602001919060010190612475565b506106ea92610d039250905b808211156106ea576000815560010161249c5600a165627a7a723058204e1b41d39ccebaca2f03517bdb0d844dd44a79b9323ee2e6770aa732f19bd32d0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e", + "deployedBytecode": "0x60806040526004361061015e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146101635780630c1ab77e1461018c5780631792b047146102045780631798de81146102445780632914b9bd1461027f5780632a709b141461030157806332f0a3b514610316578063389ed2671461032b5780633d856fff146103405780633f4ba83a146103e65780634f5b5a52146103fb5780635c975abb1461042c578063602c7826146104415780637e7db6e1146104725780637ed9d50e146104a057806380afdea8146104b55780638456cb59146104ca57806384a1931f146104df5780638b3dd749146105115780639d4941d814610526578063a1658fad14610554578063a479e508146105c8578063ab541a85146105dd578063d4aae0c41461060e578063de4796ed14610623578063f478503914610638578063f643509c14610666575b600080fd5b34801561016f57600080fd5b506101786106c4565b604080519115158252519081900360200190f35b34801561019857600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261020294823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506106ee9650505050505050565b005b34801561021057600080fd5b5061023273ffffffffffffffffffffffffffffffffffffffff60043516610921565b60408051918252519081900360200190f35b34801561025057600080fd5b5061020273ffffffffffffffffffffffffffffffffffffffff6004351667ffffffffffffffff60243516610933565b34801561028b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102d8943694929360249392840191908190840183828082843750949750610b3f9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561030d57600080fd5b506102d8610c4b565b34801561032257600080fd5b506102d8610c67565b34801561033757600080fd5b50610232610d06565b34801561034c57600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435610d3b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ab578181015183820152602001610393565b50505050905090810190601f1680156103d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f257600080fd5b50610202610dfd565b34801561040757600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435610f47565b34801561043857600080fd5b5061017861110b565b34801561044d57600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435611134565b34801561047e57600080fd5b5061017873ffffffffffffffffffffffffffffffffffffffff600435166112bf565b3480156104ac57600080fd5b506102326112c5565b3480156104c157600080fd5b506102326112fa565b3480156104d657600080fd5b5061020261132a565b3480156104eb57600080fd5b506104f4611493565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561051d57600080fd5b506102326114bb565b34801561053257600080fd5b5061020273ffffffffffffffffffffffffffffffffffffffff600435166114e6565b34801561056057600080fd5b50604080516020600460443581810135838102808601850190965280855261017895833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506118089650505050505050565b3480156105d457600080fd5b506102d8611998565b3480156105e957600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435611a5a565b34801561061a57600080fd5b506102d8611ae9565b34801561062f57600080fd5b50610178611b14565b34801561064457600080fd5b5061023273ffffffffffffffffffffffffffffffffffffffff60043516611b45565b34801561067257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610232958335953695604494919390910191908190840183828082843750949750611b579650505050505050565b6000806106cf6114bb565b905080158015906106e75750806106e4611fd9565b10155b91505b5090565b604080517f50524f4f465f524f4c45000000000000000000000000000000000000000000008152815190819003600a0181206000808352602083019093529161073d9133918491905b50611808565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610816576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107db5781810151838201526020016107c3565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083208684528252909120835161085592850190612422565b5073ffffffffffffffffffffffffffffffffffffffff84166000818152600260209081526040805187815280830182815287519282019290925286517f8978b4c46d847b359248a8d11c9669d2f9192d35ddd6954d6d8d3d0c7a151cb29489948994926060850192918601918190849084905b838110156108e05781810151838201526020016108c8565b50505050905090810190601f16801561090d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250505050565b60046020526000908152604090205481565b61093b6114bb565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156109d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b506109e0611fdd565b60408051808201909152600881527f504153545f454e4400000000000000000000000000000000000000000000000060208201529067ffffffffffffffff90811690831611610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416177fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff841602177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055610b3b611fef565b5050565b6000610b49611998565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcd578181015183820152602001610bb5565b50505050905090810190601f168015610bfa5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b505050506040513d6020811015610c4357600080fd5b505192915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c71611ae9565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b505050506040513d6020811015610cfe57600080fd5b505190505b90565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b600160208181526000938452604080852082529284529282902080548351600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f81018590048502830185019093528282529092909190830182828015610df55780601f10610dca57610100808354040283529160200191610df5565b820191906000526020600020905b815481529060010190602001808311610dd857829003601f168201915b505050505081565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152815190819003600a01812060008083526020830190935291610e4a913391849190610737565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055604080516001815290517f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f4593049181900360200190a150565b60608282600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600881526020017f4e4f5f50524f4f4600000000000000000000000000000000000000000000000081525090151561102c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260016020818152604080842088855282529283902080548451600294821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911693909304601f81018390048302840183019094528383529192908301828280156110fc5780601f106110d1576101008083540402835291602001916110fc565b820191906000526020600020905b8154815290600101906020018083116110df57829003601f168201915b50505050509250505092915050565b6000547c0100000000000000000000000000000000000000000000000000000000900460ff1681565b60608282600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600881526020017f4e4f5f434c41494d000000000000000000000000000000000000000000000000815250901515611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260036020908152604080832087845282529182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156110fc5780601f106110d1576101008083540402835291602001916110fc565b50600190565b604080517f50524f4f465f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b60006113257fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6120ce565b905090565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152815190819003600a01812060008083526020830190935291611377913391849190610737565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611414576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000179055604080516001815290517f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f4593049181900360200190a150565b60005474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60006113257febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6120ce565b60008060006114f4846112bf565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5061159a610c67565b92506115a5836120d6565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff841615156116ad576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156116a7573d6000803e3d6000fd5b5061179d565b50826116d573ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61211016565b91506116fe73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61224916565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c4544000000602082015290151561179b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b6000806118136106c4565b15156118225760009150611990565b61182a611ae9565b905073ffffffffffffffffffffffffffffffffffffffff811615156118525760009150611990565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761187a886122e1565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156119125781810151838201526020016118fa565b50505050905090810190601f16801561193f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561196157600080fd5b505af1158015611975573d6000803e3d6000fd5b505050506040513d602081101561198b57600080fd5b505191505b509392505050565b6000806119a3611ae9565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610c1957600080fd5b60036020908152600092835260408084208252918352918190208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610df55780601f10610dca57610100808354040283529160200191610df5565b60006113257f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6120ce565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b3f6114bb565b14905090565b60026020526000908152604090205481565b6000805460408051808201909152600d81527f4c4f434b5f4f4e5f50415553450000000000000000000000000000000000000060208201526060918391907c0100000000000000000000000000000000000000000000000000000000900460ff1615611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50835160408051808201909152600d81527f57524f4e475f4143434f554e5400000000000000000000000000000000000000602082015285935090602c14611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5060008054604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815233600482015260248101899052905173ffffffffffffffffffffffffffffffffffffffff90921692639dc29fac9260448084019382900301818387803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b505060008054604080517fcc872b66000000000000000000000000000000000000000000000000000000008152600481018b9052905173ffffffffffffffffffffffffffffffffffffffff909216945063cc872b669350602480820193929182900301818387803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b505060005473ffffffffffffffffffffffffffffffffffffffff1691506321cb18cd90503387611e02611fdd565b60008054604080517c010000000000000000000000000000000000000000000000000000000063ffffffff891602815273ffffffffffffffffffffffffffffffffffffffff9096166004870152602486019490945267ffffffffffffffff92831660448601527401000000000000000000000000000000000000000090049190911660648401819052608484015260a48301819052905160c4808401936020939083900390910190829087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b505050506040513d6020811015611ee557600080fd5b505133600090815260036020908152604080832084845282529091208651929350611f14929091870190612422565b5033600081815260046020908152604080518581528083018a9052606091810182815289519282019290925288517f552f182d4b9ab267a8580e2aa80cf374b7aabc8f528b7e9eea58919eea48e87d9487948c948c949390926080850192860191908190849084905b83811015611f95578181015183820152602001611f7d565b50505050905090810190601f168015611fc25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2949350505050565b4390565b6000611325611fea6122eb565b6122ef565b611ff76114bb565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015612093576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b506120cc61209f611fd9565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61239f16565b565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156120ff576000915061210a565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818061219d86846123a3565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151561223f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906122d885826123d4565b95945050505050565b8051602002815290565b4290565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115612398576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5090919050565b9055565b6000806000806040516020818751602089018a5afa925060008311156123c857805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115612418573d8015612405576020811461240e57612416565b60019350612416565b600183511493505b505b5090949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061246357805160ff1916838001178555612490565b82800160010185558215612490579182015b82811115612490578251825591602001919060010190612475565b506106ea92610d039250905b808211156106ea576000815560010161249c5600a165627a7a723058204e1b41d39ccebaca2f03517bdb0d844dd44a79b9323ee2e6770aa732f19bd32d0029", + "sourceMap": "205:3611:1:-;;;344:9:18;:7;;;;:9;:::i;:::-;205:3611:1;;590:84:28;615:24:26;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:28;-1:-1:-1;;637:13:28;;;;:30;:::i;:::-;590:84::o;881:137:26:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:26;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:26;-1:-1:-1;1824:61:26;-1:-1:-1;;;;;;;;;;;1872:12:26;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:33:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;205:3611:1:-;;;;;;;", + "deployedSourceMap": "205:3611:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:26;;;;;;;;;;;;;;;;;;;;;;2821:319:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2821:319:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2821:319:1;;-1:-1:-1;2821:319:1;;-1:-1:-1;;;;;;;2821:319:1;;;764:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;764:48:1;;;;;;;;;;;;;;;;;;;;;;;1579:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1579:327:1;;;;;;;;;;;795:179:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:36;;-1:-1:-1;795:179:36;;-1:-1:-1;;;;;;;795:179:36;;;;;;;;;;;;;;;;;;;;480:32:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;480:32:1;;;;2253:229:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2253:229:17;;;;831:60:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;831:60:1;;;;573:62;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;573:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;573:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3714:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3714:100:1;;;;3382:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3382:223:1;;;;;;;;;548:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;548:18:1;;;;3146:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3146:230:1;;;;;;;;;1659:99:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1659:99:34;;;;;;;897:60:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;897:60:1;;;;796:106:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:16;;;;3611:97:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3611:97:1;;;;518:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;518:24:1;;;;;;;;;;;;;;;;;;;;;;;881:137:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:26;;;;836:623:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:34;;;;;;;1641:496:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1641:496:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1641:496:17;;-1:-1:-1;1641:496:17;;-1:-1:-1;;;;;;;1641:496:17;980:231:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:36;;;;696:62:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;696:62:1;;;;;;;;;674:116:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:16;;;;287:117:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:28;;;;641:48:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;641:48:1;;;;;;;2054:761;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2054:761:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2054:761:1;;-1:-1:-1;2054:761:1;;-1:-1:-1;;;;;;;2054:761:1;1128:208:26;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:26;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;;:::o;2821:319:1:-;934:23;;;;;;;;;;;;;;;;1034:1:17;1020:16;;;;;;;;;934:23:1;990:47:17;;1001:10;;934:23:1;;;1020:16:17;;990:10;:47::i;:::-;1039:17;;;;;;;;;;;;;;;;;;982:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;982:75:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2983:16:1;;;;;;;:6;:16;;;;;;;;:26;;;;;;;;:37;;;;;;;;:::i;:::-;-1:-1:-1;3055:22:1;;;;;;;:12;:22;;;;;3095:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3095:38:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:319;;;;:::o;764:48::-;;;;;;;;;;;;;:::o;1579:327::-;615:24:26;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:26;;1732:16:1;:14;:16::i;:::-;1750:14;;;;;;;;;;;;;;;;;;1718:30;;;;;;;;1710:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1710:55:1;-1:-1:-1;1775:12:1;:42;;;;;;;;1827:24;;;;;;;;1861:14;;;;1886:13;:11;:13::i;:::-;1579:327;;:::o;795:179:36:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;917:49:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:36;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:36;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:36;;795:179;-1:-1:-1;;795:179:36:o;480:32:1:-;;;;;;:::o;2253:229:17:-;2302:7;2408:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2408:27:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2408:27:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2408:27:17;;-1:-1:-1;2253:229:17;;:::o;831:60:1:-;868:23;;;;;;;;;;;;;;;;831:60;:::o;573:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3714:100::-;868:23;;;;;;;;;;;;;;;;1034:1:17;1020:16;;;;;;;;;868:23:1;990:47:17;;1001:10;;868:23:1;;;1020:16:17;;990:47;1039:17;;;;;;;;;;;;;;;;;;982:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;982:75:17;-1:-1:-1;3776:5:1;3767:14;;;;;;3796:11;;;3767:14;3796:11;;;;;;;;;;;;;3714:100;:::o;3382:223::-;3543:6;3506:8;3516;1517:12;:21;1530:7;1517:21;;;;;;;;;;;;;;;;1506:8;:32;1540:14;;;;;;;;;;;;;;;;;;1498:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1498:57:1;-1:-1:-1;3572:16:1;;;;;;;:6;:16;;;;;;;;:26;;;;;;;;;3565:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3572:26;3565:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3382:223;;;;;;:::o;548:18::-;;;;;;;;;:::o;3146:230::-;3314:6;3277:8;3287;1370:12;:21;1383:7;1370:21;;;;;;;;;;;;;;;;1359:8;:32;1393:14;;;;;;;;;;;;;;;;;;1351:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1351:57:1;-1:-1:-1;3343:16:1;;;;;;;:6;:16;;;;;;;;:26;;;;;;;;;3336:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3343:26;;3336:33;;3343:26;3336:33;;;;;;;;;;;;;;;;;;;;;;;;1659:99:34;-1:-1:-1;1747:4:34;;1659:99::o;897:60:1:-;934:23;;;;;;;;;;;;;;;;897:60;:::o;796:106:16:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;3611:97:1:-;868:23;;;;;;;;;;;;;;;;1034:1:17;1020:16;;;;;;;;;868:23:1;990:47:17;;1001:10;;868:23:1;;;1020:16:17;;990:47;1039:17;;;;;;;;;;;;;;;;;;982:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;982:75:17;-1:-1:-1;3662:6:1;:13;;;;;;;;3690:11;;;3671:4;3690:11;;;;;;;;;;;;;3611:97;:::o;518:24::-;;;;;;;;;:::o;881:137:26:-;936:7;962:49;345:66;962:47;:49::i;836:623:34:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;896:54:34;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:34;-1:-1:-1;1096:13:34;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:34;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:34;1092:307;;;-1:-1:-1;1244:6:34;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:34;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:34;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;1641:496:17:-;1733:4;1819:20;1754:16;:14;:16::i;:::-;1753:17;1749:60;;;1793:5;1786:12;;;;1749:60;1842:8;:6;:8::i;:::-;1819:31;-1:-1:-1;1864:35:17;;;;1860:78;;;1922:5;1915:12;;;;1860:78;1955:12;:26;;;1995:7;2024:4;2043:5;2062:58;2112:7;2062:49;:58::i;:::-;1955:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1955:175:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:175:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1955:175:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1955:175:17;;-1:-1:-1;1641:496:17;;;;;;;:::o;980:231:36:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:47;1086:69:36;;;;330:66:38;1086:69:36;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;696:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;674:116:16;713:7;747:35;485:66;747:33;:35::i;287:117:28:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;641:48:1:-;;;;;;;;;;;;;:::o;2054:761::-;2163:7;2194:6;;2211:19;;;;;;;;;;;;;;;;;2242:25;;2163:7;;2211:19;2194:6;;;;;:15;2186:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2186:45:1;-1:-1:-1;2303:19:1;;2330;;;;;;;;;;;;;;;;;2276:8;;-1:-1:-1;2330:19:1;2326:2;2303:25;2295:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2295:55:1;-1:-1:-1;2409:12:1;;;:38;;;;;;2427:10;2409:38;;;;;;;;;;;;:12;;;;;:17;;:38;;;;;;;;;;:12;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;2409:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2457:12:1;;;:27;;;;;;;;;;;;;;:12;;;;;-1:-1:-1;2457:18:1;;-1:-1:-1;2457:27:1;;;;;:12;:27;;;;;;:12;;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;2457:27:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2513:12:1;;;;;-1:-1:-1;2513:25:1;;-1:-1:-1;2539:10:1;2551:7;2560:16;:14;:16::i;:::-;2578:10;;;2513:95;;;;;;;;;;;;;;;;;;;;;;;;;2578:10;2513:95;;;;;;;2578:10;;;;;;;2513:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;2513:95:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2513:95:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2513:95:1;2626:10;2619:18;;;;:6;2513:95;2619:18;;;;;;;:27;;;;;;;;:38;;2513:95;;-1:-1:-1;2619:38:1;;:27;;:38;;;;:::i;:::-;-1:-1:-1;2707:10:1;2694:24;;;;:12;:24;;;;;2736:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2736:47:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2801:7;2054:761;-1:-1:-1;;;;2054:761:1:o;347:94:31:-;422:12;347:94;:::o;1261:106::-;1310:6;1335:25;:14;:12;:14::i;:::-;:23;:25::i;1447:123:26:-;615:24;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:26;;1498;1546:16;:14;:16::i;:::-;345:66;;1498:65;:47;:65;:::i;:::-;1447:123::o;379:134:33:-;490:15;;480:27::o;519:134::-;630:15;;620:27::o;426:244:27:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;4578:403:30:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:30;;;;;;;;25:18:-1;;61:17;;4708:91:30;182:15:-1;4744:25:30;179:29:-1;160:49;;4656:7:30;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:30;-1:-1:-1;4898:46:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4898:46:30;-1:-1:-1;4962:12:30;4578:403;-1:-1:-1;;;;;4578:403:30:o;3100:304::-;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:30;;;;;;;;25:18:-1;;61:17;;3232:101:30;182:15:-1;3268:17:30;179:29:-1;160:49;;3184:4:30;;3350:47;3372:6;3232:101;3350:21;:47::i;:::-;3343:54;3100:304;-1:-1:-1;;;;;3100:304:30:o;142:539:19:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;926:144:31:-;999:15;926:144;:::o;188:149:32:-;283:20;;;;;;;;;;;;;;;;;240:6;;271:10;266:15;;;258:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;258:46:32;-1:-1:-1;328:1:32;;188:149;-1:-1:-1;188:149:32:o;1028:119:33:-;1117:22;;1115:26::o;2148:774:30:-;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:30;;2911:3;;-1:-1:-1;2148:774:30;-1:-1:-1;;;2148:774:30:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:30;;800:1342;-1:-1:-1;;;;800:1342:30:o;205:3611:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;205:3611:1;;;;-1:-1:-1;205:3611:1;;;;;;;;;;;;;;", + "source": "pragma solidity ^0.4.24;\n\nimport \"@aragon/os/contracts/apps/AragonApp.sol\";\nimport \"@aragon/apps-token-manager/contracts/TokenManager.sol\";\nimport \"@aragon/apps-shared-minime/contracts/MiniMeToken.sol\";\n\n\ncontract Vesting is AragonApp {\n\n /// Events\n event NewLock(uint256 vestingId, address indexed lockAddress, uint256 amount, string account);\n event NewProof(address indexed claimer, uint256 vestingId, string proofTx);\n event Pause(bool state);\n\n /// State\n TokenManager public tokenManager;\n uint64 public vestingEnd;\n bool public paused;\n\n mapping (address => mapping (uint256 => string)) public proofs;\n mapping (address => uint256) public proofsLength;\n\n mapping (address => mapping (uint256 => string)) public claims;\n mapping (address => uint256) public claimsLength;\n\n /// ACL\n bytes32 constant public PAUSE_ROLE = keccak256(\"PAUSE_ROLE\");\n bytes32 constant public PROOF_ROLE = keccak256(\"PROOF_ROLE\");\n\n /// ERRORS\n string private constant ERROR_LOCK_ON_PAUSE = \"LOCK_ON_PAUSE\";\n string private constant ERROR_WRONG_ACCOUNT = \"WRONG_ACCOUNT\";\n string private constant ERROR_PAST_END = \"PAST_END\";\n string private constant ERROR_NO_CLAIM = \"NO_CLAIM\";\n string private constant ERROR_NO_PROOF = \"NO_PROOF\";\n\n modifier claimExists(address _holder, uint256 _claimId) {\n require(_claimId < claimsLength[_holder], ERROR_NO_CLAIM);\n _;\n }\n\n modifier proofExists(address _holder, uint256 _claimId) {\n require(_claimId < claimsLength[_holder], ERROR_NO_PROOF);\n _;\n }\n\n function initialize(\n address _tokenManager,\n uint64 _vestingEnd\n )\n public\n onlyInit\n {\n require(_vestingEnd > getTimestamp64(), ERROR_PAST_END);\n tokenManager = TokenManager(_tokenManager);\n vestingEnd = _vestingEnd;\n paused = false;\n\n initialized();\n }\n\n /**\n * @notice Vest `amount` GOLs till the end of action and create proposal to claim `amount` EULs\n * @return vesting ID\n */\n function lock(\n uint256 _amount,\n string memory _account\n )\n public\n returns (uint256)\n {\n require(paused == false, ERROR_LOCK_ON_PAUSE);\n\n bytes memory accountBytes = bytes(_account);\n require(accountBytes.length == 44, ERROR_WRONG_ACCOUNT); // cyber1arvngwny4zxlk2xgzwjvt0w8l78yqr5tvnmue5\n\n tokenManager.burn(msg.sender, _amount);\n tokenManager.issue(_amount);\n\n uint256 claimId = tokenManager.assignVested(msg.sender, _amount, getTimestamp64(), vestingEnd, vestingEnd, false);\n\n claims[msg.sender][claimId] = _account;\n claimsLength[msg.sender] = claimsLength[msg.sender]++;\n\n emit NewLock(claimId, msg.sender, _amount, _account);\n\n return claimId;\n }\n\n function addProof(\n address _claimer,\n uint256 _claimId,\n string memory _proofTx\n )\n public\n auth(PROOF_ROLE)\n {\n proofs[_claimer][_claimId] = _proofTx;\n proofsLength[_claimer] = proofsLength[_claimer]++;\n\n emit NewProof(_claimer, _claimId, _proofTx);\n }\n\n function getClaimAddress(\n address _claimer,\n uint256 _claimId\n )\n public\n view\n claimExists(_claimer, _claimId)\n returns (string)\n {\n return claims[_claimer][_claimId];\n }\n\n function getProof(\n address _claimer,\n uint256 _claimId\n )\n public\n view\n proofExists(_claimer, _claimId)\n returns (string)\n {\n return proofs[_claimer][_claimId];\n }\n\n function pause() public auth(PAUSE_ROLE) {\n paused = true;\n emit Pause(true);\n }\n\n function unpause() public auth(PAUSE_ROLE) {\n paused = false;\n emit Pause(true);\n }\n}\n", + "sourcePath": "/Users/litvintech/Projects/aragon-claim-app/contracts/Vesting.sol", + "ast": { + "absolutePath": "/Users/litvintech/Projects/aragon-claim-app/contracts/Vesting.sol", + "exportedSymbols": { + "Vesting": [ + 864 + ] + }, + "id": 865, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 521, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol", + "file": "@aragon/os/contracts/apps/AragonApp.sol", + "id": 522, + "nodeType": "ImportDirective", + "scope": 865, + "sourceUnit": 6570, + "src": "26:49:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@aragon/apps-token-manager/contracts/TokenManager.sol", + "file": "@aragon/apps-token-manager/contracts/TokenManager.sol", + "id": 523, + "nodeType": "ImportDirective", + "scope": 865, + "sourceUnit": 2953, + "src": "76:63:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol", + "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol", + "id": 524, + "nodeType": "ImportDirective", + "scope": 865, + "sourceUnit": 2061, + "src": "140:62:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 525, + "name": "AragonApp", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6569, + "src": "225:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AragonApp_$6569", + "typeString": "contract AragonApp" + } + }, + "id": 526, + "nodeType": "InheritanceSpecifier", + "src": "225:9:1" + } + ], + "contractDependencies": [ + 5657, + 6445, + 6569, + 6582, + 6742, + 6792, + 6890, + 6918, + 6951, + 6988, + 7280, + 7502, + 7903, + 7930, + 9194 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 864, + "linearizedBaseContracts": [ + 864, + 6569, + 5657, + 7903, + 9194, + 7930, + 6988, + 7502, + 6918, + 6742, + 6792, + 6582, + 6951, + 6890, + 7280, + 6445 + ], + "name": "Vesting", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": "Events", + "id": 536, + "name": "NewLock", + "nodeType": "EventDefinition", + "parameters": { + "id": 535, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 528, + "indexed": false, + "name": "vestingId", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "271:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 527, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "271:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "indexed": true, + "name": "lockAddress", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "290:27:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "290:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 532, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "319:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "319:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 534, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "335:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 533, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "335:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "270:80:1" + }, + "src": "257:94:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 544, + "name": "NewProof", + "nodeType": "EventDefinition", + "parameters": { + "id": 543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 538, + "indexed": true, + "name": "claimer", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "371:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "371:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 540, + "indexed": false, + "name": "vestingId", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "396:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "396:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 542, + "indexed": false, + "name": "proofTx", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "415:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 541, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "415:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "370:60:1" + }, + "src": "356:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 548, + "name": "Pause", + "nodeType": "EventDefinition", + "parameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 546, + "indexed": false, + "name": "state", + "nodeType": "VariableDeclaration", + "scope": 548, + "src": "448:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 545, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "448:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "447:12:1" + }, + "src": "436:24:1" + }, + { + "constant": false, + "id": 550, + "name": "tokenManager", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "480:32:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + }, + "typeName": { + "contractScope": null, + "id": 549, + "name": "TokenManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2952, + "src": "480:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 552, + "name": "vestingEnd", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "518:24:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 551, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "518:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 554, + "name": "paused", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "548:18:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 553, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 560, + "name": "proofs", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "573:62:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string))" + }, + "typeName": { + "id": 559, + "keyType": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "582:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "573:48:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string))" + }, + "valueType": { + "id": 558, + "keyType": { + "id": 556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "602:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "593:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 557, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "613:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 564, + "name": "proofsLength", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "641:48:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 563, + "keyType": { + "id": 561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "650:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "641:28:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 570, + "name": "claims", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "696:62:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string))" + }, + "typeName": { + "id": 569, + "keyType": { + "id": 565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "696:48:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string))" + }, + "valueType": { + "id": 568, + "keyType": { + "id": 566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "725:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "716:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 567, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "736:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 574, + "name": "claimsLength", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "764:48:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 573, + "keyType": { + "id": 571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "773:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "764:28:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "784:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": true, + "id": 579, + "name": "PAUSE_ROLE", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "831:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "831:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "50415553455f524f4c45", + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:12:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d", + "typeString": "literal_string \"PAUSE_ROLE\"" + }, + "value": "PAUSE_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d", + "typeString": "literal_string \"PAUSE_ROLE\"" + } + ], + "id": 576, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10383, + "src": "868:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "868:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 584, + "name": "PROOF_ROLE", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "897:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 580, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "897:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "50524f4f465f524f4c45", + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "944:12:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2b830be32f2d084904c6415d5dc933ae2dd5db1ba38188bd6c1bbb1d65bc05e0", + "typeString": "literal_string \"PROOF_ROLE\"" + }, + "value": "PROOF_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_2b830be32f2d084904c6415d5dc933ae2dd5db1ba38188bd6c1bbb1d65bc05e0", + "typeString": "literal_string \"PROOF_ROLE\"" + } + ], + "id": 581, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10383, + "src": "934:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "934:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 587, + "name": "ERROR_LOCK_ON_PAUSE", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "979:61:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 585, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "979:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4c4f434b5f4f4e5f5041555345", + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1025:15:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0ae21999e8bf56a431acd673f4085ba015134369389997f6bbcd00f663f5161a", + "typeString": "literal_string \"LOCK_ON_PAUSE\"" + }, + "value": "LOCK_ON_PAUSE" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 590, + "name": "ERROR_WRONG_ACCOUNT", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "1046:61:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 588, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1046:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57524f4e475f4143434f554e54", + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1092:15:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_18ea94dd4cfa8e3a6271749d994a163ad8962f4279ee9ae8f583f362dd378d49", + "typeString": "literal_string \"WRONG_ACCOUNT\"" + }, + "value": "WRONG_ACCOUNT" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 593, + "name": "ERROR_PAST_END", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "1113:51:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 591, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1113:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "504153545f454e44", + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1154:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1cce3891fad58d01d893d62533ea2b0618aff8caf1566597e1d49dc857129861", + "typeString": "literal_string \"PAST_END\"" + }, + "value": "PAST_END" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 596, + "name": "ERROR_NO_CLAIM", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "1170:51:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 594, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1170:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4e4f5f434c41494d", + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1211:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f605d37398943b6f757af9b46d06eaf0749241f913cf7b27d19d82cbce8af49", + "typeString": "literal_string \"NO_CLAIM\"" + }, + "value": "NO_CLAIM" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 599, + "name": "ERROR_NO_PROOF", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "1227:51:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 597, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1227:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4e4f5f50524f4f46", + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1268:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6994ca21a4731e99f5aea98ba0a342c3d42441d7658930b86bb9401bbb5e8a79", + "typeString": "literal_string \"NO_PROOF\"" + }, + "value": "NO_PROOF" + }, + "visibility": "private" + }, + { + "body": { + "id": 615, + "nodeType": "Block", + "src": "1341:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 606, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 603, + "src": "1359:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 607, + "name": "claimsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1370:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 609, + "indexExpression": { + "argumentTypes": null, + "id": 608, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "1383:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1370:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1359:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 611, + "name": "ERROR_NO_CLAIM", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "1393:14:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 605, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "1351:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1351:57:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 613, + "nodeType": "ExpressionStatement", + "src": "1351:57:1" + }, + { + "id": 614, + "nodeType": "PlaceholderStatement", + "src": "1418:1:1" + } + ] + }, + "documentation": null, + "id": 616, + "name": "claimExists", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 601, + "name": "_holder", + "nodeType": "VariableDeclaration", + "scope": 616, + "src": "1306:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 600, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1306:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 603, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 616, + "src": "1323:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 602, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1323:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1305:35:1" + }, + "src": "1285:141:1", + "visibility": "internal" + }, + { + "body": { + "id": 632, + "nodeType": "Block", + "src": "1488:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 623, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "1506:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 624, + "name": "claimsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1517:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 626, + "indexExpression": { + "argumentTypes": null, + "id": 625, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "1530:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1517:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1506:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 628, + "name": "ERROR_NO_PROOF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "1540:14:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 622, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "1498:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1498:57:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 630, + "nodeType": "ExpressionStatement", + "src": "1498:57:1" + }, + { + "id": 631, + "nodeType": "PlaceholderStatement", + "src": "1565:1:1" + } + ] + }, + "documentation": null, + "id": 633, + "name": "proofExists", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 618, + "name": "_holder", + "nodeType": "VariableDeclaration", + "scope": 633, + "src": "1453:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 617, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1453:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 620, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 633, + "src": "1470:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 619, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1470:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1452:35:1" + }, + "src": "1432:141:1", + "visibility": "internal" + }, + { + "body": { + "id": 667, + "nodeType": "Block", + "src": "1700:206:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 643, + "name": "_vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "1718:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 644, + "name": "getTimestamp64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7279, + "src": "1732:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$", + "typeString": "function () view returns (uint64)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1732:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1718:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 647, + "name": "ERROR_PAST_END", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "1750:14:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 642, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "1710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1710:55:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 649, + "nodeType": "ExpressionStatement", + "src": "1710:55:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 650, + "name": "tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "1775:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 652, + "name": "_tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 635, + "src": "1803:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 651, + "name": "TokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2952, + "src": "1790:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TokenManager_$2952_$", + "typeString": "type(contract TokenManager)" + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1790:27:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "src": "1775:42:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "id": 655, + "nodeType": "ExpressionStatement", + "src": "1775:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 656, + "name": "vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "1827:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 657, + "name": "_vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "1840:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1827:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 659, + "nodeType": "ExpressionStatement", + "src": "1827:24:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 660, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "1861:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1870:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1861:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 663, + "nodeType": "ExpressionStatement", + "src": "1861:14:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 664, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6875, + "src": "1886:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1886:13:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 666, + "nodeType": "ExpressionStatement", + "src": "1886:13:1" + } + ] + }, + "documentation": null, + "id": 668, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 640, + "modifierName": { + "argumentTypes": null, + "id": 639, + "name": "onlyInit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6822, + "src": "1687:8:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1687:8:1" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 635, + "name": "_tokenManager", + "nodeType": "VariableDeclaration", + "scope": 668, + "src": "1608:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 637, + "name": "_vestingEnd", + "nodeType": "VariableDeclaration", + "scope": 668, + "src": "1639:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 636, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1639:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1598:65:1" + }, + "payable": false, + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [], + "src": "1700:0:1" + }, + "scope": 864, + "src": "1579:327:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 756, + "nodeType": "Block", + "src": "2176:639:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 678, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "2194:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2204:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2194:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 681, + "name": "ERROR_LOCK_ON_PAUSE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "2211:19:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 677, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "2186:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2186:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 683, + "nodeType": "ExpressionStatement", + "src": "2186:45:1" + }, + { + "assignments": [ + 685 + ], + "declarations": [ + { + "constant": false, + "id": 685, + "name": "accountBytes", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2242:25:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 684, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2242:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 689, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 687, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "2276:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2270:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2270:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2242:43:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 691, + "name": "accountBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "2303:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2303:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3434", + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2326:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_44_by_1", + "typeString": "int_const 44" + }, + "value": "44" + }, + "src": "2303:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 695, + "name": "ERROR_WRONG_ACCOUNT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 590, + "src": "2330:19:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 690, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "2295:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2295:55:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 697, + "nodeType": "ExpressionStatement", + "src": "2295:55:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 701, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2427:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2427:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 703, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "2439:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 698, + "name": "tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2409:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2357, + "src": "2409:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2409:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 705, + "nodeType": "ExpressionStatement", + "src": "2409:38:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 709, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "2476:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 706, + "name": "tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2457:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "issue", + "nodeType": "MemberAccess", + "referencedDeclaration": 2315, + "src": "2457:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2457:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 711, + "nodeType": "ExpressionStatement", + "src": "2457:27:1" + }, + { + "assignments": [ + 713 + ], + "declarations": [ + { + "constant": false, + "id": 713, + "name": "claimId", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2495:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 712, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2495:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 725, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 716, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2539:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2539:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 718, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "2551:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 719, + "name": "getTimestamp64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7279, + "src": "2560:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$", + "typeString": "function () view returns (uint64)" + } + }, + "id": 720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2560:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "id": 721, + "name": "vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "2578:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "id": 722, + "name": "vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "2590:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2602:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 714, + "name": "tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2513:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "assignVested", + "nodeType": "MemberAccess", + "referencedDeclaration": 2445, + "src": "2513:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_uint64_$_t_uint64_$_t_bool_$returns$_t_uint256_$", + "typeString": "function (address,uint256,uint64,uint64,uint64,bool) external returns (uint256)" + } + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2513:95:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2495:113:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 726, + "name": "claims", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "2619:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string storage ref))" + } + }, + "id": 730, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 727, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2626:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2626:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2619:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 731, + "indexExpression": { + "argumentTypes": null, + "id": 729, + "name": "claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "2638:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2619:27:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 732, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "2649:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2619:38:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 734, + "nodeType": "ExpressionStatement", + "src": "2619:38:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 735, + "name": "claimsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "2667:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 738, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 736, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2680:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2680:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2667:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2694:26:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 739, + "name": "claimsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "2694:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 742, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 740, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2707:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2707:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2694:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2667:53:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 745, + "nodeType": "ExpressionStatement", + "src": "2667:53:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 747, + "name": "claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "2744:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 748, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2753:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2753:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 750, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "2765:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 751, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "2774:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 746, + "name": "NewLock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "2736:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,address,uint256,string memory)" + } + }, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2736:47:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 753, + "nodeType": "EmitStatement", + "src": "2731:52:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 754, + "name": "claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "2801:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 676, + "id": 755, + "nodeType": "Return", + "src": "2794:14:1" + } + ] + }, + "documentation": "@notice Vest `amount` GOLs till the end of action and create proposal to claim `amount` EULs\n@return vesting ID", + "id": 757, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "lock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 670, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2077:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2077:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 672, + "name": "_account", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2102:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 671, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2102:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2067:63:1" + }, + "payable": false, + "returnParameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 675, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2163:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2162:9:1" + }, + "scope": 864, + "src": "2054:761:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 792, + "nodeType": "Block", + "src": "2973:167:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 769, + "name": "proofs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "2983:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string storage ref))" + } + }, + "id": 772, + "indexExpression": { + "argumentTypes": null, + "id": 770, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "2990:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2983:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 773, + "indexExpression": { + "argumentTypes": null, + "id": 771, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "3000:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2983:26:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 774, + "name": "_proofTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "3012:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2983:37:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 776, + "nodeType": "ExpressionStatement", + "src": "2983:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 777, + "name": "proofsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "3030:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 779, + "indexExpression": { + "argumentTypes": null, + "id": 778, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "3043:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3030:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3055:24:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 780, + "name": "proofsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "3055:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 782, + "indexExpression": { + "argumentTypes": null, + "id": 781, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "3068:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3055:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3030:49:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "3030:49:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 787, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "3104:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 788, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "3114:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 789, + "name": "_proofTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "3124:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 786, + "name": "NewProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 544, + "src": "3095:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,string memory)" + } + }, + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3095:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 791, + "nodeType": "EmitStatement", + "src": "3090:43:1" + } + ] + }, + "documentation": null, + "id": 793, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 766, + "name": "PROOF_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 584, + "src": "2957:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 767, + "modifierName": { + "argumentTypes": null, + "id": 765, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6489, + "src": "2952:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_bytes32_$", + "typeString": "modifier (bytes32)" + } + }, + "nodeType": "ModifierInvocation", + "src": "2952:16:1" + } + ], + "name": "addProof", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 759, + "name": "_claimer", + "nodeType": "VariableDeclaration", + "scope": 793, + "src": "2848:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2848:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 761, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 793, + "src": "2874:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2874:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 763, + "name": "_proofTx", + "nodeType": "VariableDeclaration", + "scope": 793, + "src": "2900:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 762, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2900:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2838:90:1" + }, + "payable": false, + "returnParameters": { + "id": 768, + "nodeType": "ParameterList", + "parameters": [], + "src": "2973:0:1" + }, + "scope": 864, + "src": "2821:319:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 812, + "nodeType": "Block", + "src": "3326:50:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 806, + "name": "claims", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "3343:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string storage ref))" + } + }, + "id": 808, + "indexExpression": { + "argumentTypes": null, + "id": 807, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "3350:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3343:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 810, + "indexExpression": { + "argumentTypes": null, + "id": 809, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "3360:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3343:26:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 805, + "id": 811, + "nodeType": "Return", + "src": "3336:33:1" + } + ] + }, + "documentation": null, + "id": 813, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 800, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "3277:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 801, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "3287:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 802, + "modifierName": { + "argumentTypes": null, + "id": 799, + "name": "claimExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "3265:11:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_uint256_$", + "typeString": "modifier (address,uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3265:31:1" + } + ], + "name": "getClaimAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 795, + "name": "_claimer", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "3180:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3180:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "3206:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3206:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3170:58:1" + }, + "payable": false, + "returnParameters": { + "id": 805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 804, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "3314:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 803, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3314:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3313:8:1" + }, + "scope": 864, + "src": "3146:230:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 832, + "nodeType": "Block", + "src": "3555:50:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 826, + "name": "proofs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "3572:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string storage ref))" + } + }, + "id": 828, + "indexExpression": { + "argumentTypes": null, + "id": 827, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "3579:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3572:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 830, + "indexExpression": { + "argumentTypes": null, + "id": 829, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "3589:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3572:26:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 825, + "id": 831, + "nodeType": "Return", + "src": "3565:33:1" + } + ] + }, + "documentation": null, + "id": 833, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 820, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "3506:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 821, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "3516:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 822, + "modifierName": { + "argumentTypes": null, + "id": 819, + "name": "proofExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 633, + "src": "3494:11:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_uint256_$", + "typeString": "modifier (address,uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3494:31:1" + } + ], + "name": "getProof", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 815, + "name": "_claimer", + "nodeType": "VariableDeclaration", + "scope": 833, + "src": "3409:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3409:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 817, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 833, + "src": "3435:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 816, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3435:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3399:58:1" + }, + "payable": false, + "returnParameters": { + "id": 825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 824, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 833, + "src": "3543:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 823, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3543:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3542:8:1" + }, + "scope": 864, + "src": "3382:223:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 847, + "nodeType": "Block", + "src": "3652:56:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 839, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "3662:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3671:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3662:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 842, + "nodeType": "ExpressionStatement", + "src": "3662:13:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3696:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 843, + "name": "Pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "3690:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3690:11:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 846, + "nodeType": "EmitStatement", + "src": "3685:16:1" + } + ] + }, + "documentation": null, + "id": 848, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 836, + "name": "PAUSE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "3640:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 837, + "modifierName": { + "argumentTypes": null, + "id": 835, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6489, + "src": "3635:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_bytes32_$", + "typeString": "modifier (bytes32)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3635:16:1" + } + ], + "name": "pause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 834, + "nodeType": "ParameterList", + "parameters": [], + "src": "3625:2:1" + }, + "payable": false, + "returnParameters": { + "id": 838, + "nodeType": "ParameterList", + "parameters": [], + "src": "3652:0:1" + }, + "scope": 864, + "src": "3611:97:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 862, + "nodeType": "Block", + "src": "3757:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 854, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "3767:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3776:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3767:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 857, + "nodeType": "ExpressionStatement", + "src": "3767:14:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3802:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 858, + "name": "Pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "3796:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3796:11:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 861, + "nodeType": "EmitStatement", + "src": "3791:16:1" + } + ] + }, + "documentation": null, + "id": 863, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 851, + "name": "PAUSE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "3745:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 852, + "modifierName": { + "argumentTypes": null, + "id": 850, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6489, + "src": "3740:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_bytes32_$", + "typeString": "modifier (bytes32)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3740:16:1" + } + ], + "name": "unpause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 849, + "nodeType": "ParameterList", + "parameters": [], + "src": "3730:2:1" + }, + "payable": false, + "returnParameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [], + "src": "3757:0:1" + }, + "scope": 864, + "src": "3714:100:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 865, + "src": "205:3611:1" + } + ], + "src": "0:3817:1" + }, + "legacyAST": { + "absolutePath": "/Users/litvintech/Projects/aragon-claim-app/contracts/Vesting.sol", + "exportedSymbols": { + "Vesting": [ + 864 + ] + }, + "id": 865, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 521, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol", + "file": "@aragon/os/contracts/apps/AragonApp.sol", + "id": 522, + "nodeType": "ImportDirective", + "scope": 865, + "sourceUnit": 6570, + "src": "26:49:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@aragon/apps-token-manager/contracts/TokenManager.sol", + "file": "@aragon/apps-token-manager/contracts/TokenManager.sol", + "id": 523, + "nodeType": "ImportDirective", + "scope": 865, + "sourceUnit": 2953, + "src": "76:63:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol", + "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol", + "id": 524, + "nodeType": "ImportDirective", + "scope": 865, + "sourceUnit": 2061, + "src": "140:62:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 525, + "name": "AragonApp", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6569, + "src": "225:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AragonApp_$6569", + "typeString": "contract AragonApp" + } + }, + "id": 526, + "nodeType": "InheritanceSpecifier", + "src": "225:9:1" + } + ], + "contractDependencies": [ + 5657, + 6445, + 6569, + 6582, + 6742, + 6792, + 6890, + 6918, + 6951, + 6988, + 7280, + 7502, + 7903, + 7930, + 9194 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 864, + "linearizedBaseContracts": [ + 864, + 6569, + 5657, + 7903, + 9194, + 7930, + 6988, + 7502, + 6918, + 6742, + 6792, + 6582, + 6951, + 6890, + 7280, + 6445 + ], + "name": "Vesting", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": "Events", + "id": 536, + "name": "NewLock", + "nodeType": "EventDefinition", + "parameters": { + "id": 535, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 528, + "indexed": false, + "name": "vestingId", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "271:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 527, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "271:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "indexed": true, + "name": "lockAddress", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "290:27:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "290:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 532, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "319:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "319:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 534, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "335:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 533, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "335:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "270:80:1" + }, + "src": "257:94:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 544, + "name": "NewProof", + "nodeType": "EventDefinition", + "parameters": { + "id": 543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 538, + "indexed": true, + "name": "claimer", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "371:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "371:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 540, + "indexed": false, + "name": "vestingId", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "396:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "396:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 542, + "indexed": false, + "name": "proofTx", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "415:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 541, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "415:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "370:60:1" + }, + "src": "356:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 548, + "name": "Pause", + "nodeType": "EventDefinition", + "parameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 546, + "indexed": false, + "name": "state", + "nodeType": "VariableDeclaration", + "scope": 548, + "src": "448:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 545, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "448:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "447:12:1" + }, + "src": "436:24:1" + }, + { + "constant": false, + "id": 550, + "name": "tokenManager", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "480:32:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + }, + "typeName": { + "contractScope": null, + "id": 549, + "name": "TokenManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2952, + "src": "480:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 552, + "name": "vestingEnd", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "518:24:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 551, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "518:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 554, + "name": "paused", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "548:18:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 553, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 560, + "name": "proofs", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "573:62:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string))" + }, + "typeName": { + "id": 559, + "keyType": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "582:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "573:48:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string))" + }, + "valueType": { + "id": 558, + "keyType": { + "id": 556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "602:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "593:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 557, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "613:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 564, + "name": "proofsLength", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "641:48:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 563, + "keyType": { + "id": 561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "650:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "641:28:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 570, + "name": "claims", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "696:62:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string))" + }, + "typeName": { + "id": 569, + "keyType": { + "id": 565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "696:48:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string))" + }, + "valueType": { + "id": 568, + "keyType": { + "id": 566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "725:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "716:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 567, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "736:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 574, + "name": "claimsLength", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "764:48:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 573, + "keyType": { + "id": 571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "773:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "764:28:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "784:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": true, + "id": 579, + "name": "PAUSE_ROLE", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "831:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "831:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "50415553455f524f4c45", + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:12:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d", + "typeString": "literal_string \"PAUSE_ROLE\"" + }, + "value": "PAUSE_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d", + "typeString": "literal_string \"PAUSE_ROLE\"" + } + ], + "id": 576, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10383, + "src": "868:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "868:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 584, + "name": "PROOF_ROLE", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "897:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 580, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "897:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "50524f4f465f524f4c45", + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "944:12:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2b830be32f2d084904c6415d5dc933ae2dd5db1ba38188bd6c1bbb1d65bc05e0", + "typeString": "literal_string \"PROOF_ROLE\"" + }, + "value": "PROOF_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_2b830be32f2d084904c6415d5dc933ae2dd5db1ba38188bd6c1bbb1d65bc05e0", + "typeString": "literal_string \"PROOF_ROLE\"" + } + ], + "id": 581, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10383, + "src": "934:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "934:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 587, + "name": "ERROR_LOCK_ON_PAUSE", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "979:61:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 585, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "979:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4c4f434b5f4f4e5f5041555345", + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1025:15:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0ae21999e8bf56a431acd673f4085ba015134369389997f6bbcd00f663f5161a", + "typeString": "literal_string \"LOCK_ON_PAUSE\"" + }, + "value": "LOCK_ON_PAUSE" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 590, + "name": "ERROR_WRONG_ACCOUNT", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "1046:61:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 588, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1046:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57524f4e475f4143434f554e54", + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1092:15:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_18ea94dd4cfa8e3a6271749d994a163ad8962f4279ee9ae8f583f362dd378d49", + "typeString": "literal_string \"WRONG_ACCOUNT\"" + }, + "value": "WRONG_ACCOUNT" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 593, + "name": "ERROR_PAST_END", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "1113:51:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 591, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1113:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "504153545f454e44", + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1154:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1cce3891fad58d01d893d62533ea2b0618aff8caf1566597e1d49dc857129861", + "typeString": "literal_string \"PAST_END\"" + }, + "value": "PAST_END" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 596, + "name": "ERROR_NO_CLAIM", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "1170:51:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 594, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1170:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4e4f5f434c41494d", + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1211:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f605d37398943b6f757af9b46d06eaf0749241f913cf7b27d19d82cbce8af49", + "typeString": "literal_string \"NO_CLAIM\"" + }, + "value": "NO_CLAIM" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 599, + "name": "ERROR_NO_PROOF", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "1227:51:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 597, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1227:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4e4f5f50524f4f46", + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1268:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6994ca21a4731e99f5aea98ba0a342c3d42441d7658930b86bb9401bbb5e8a79", + "typeString": "literal_string \"NO_PROOF\"" + }, + "value": "NO_PROOF" + }, + "visibility": "private" + }, + { + "body": { + "id": 615, + "nodeType": "Block", + "src": "1341:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 606, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 603, + "src": "1359:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 607, + "name": "claimsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1370:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 609, + "indexExpression": { + "argumentTypes": null, + "id": 608, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "1383:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1370:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1359:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 611, + "name": "ERROR_NO_CLAIM", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "1393:14:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 605, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "1351:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1351:57:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 613, + "nodeType": "ExpressionStatement", + "src": "1351:57:1" + }, + { + "id": 614, + "nodeType": "PlaceholderStatement", + "src": "1418:1:1" + } + ] + }, + "documentation": null, + "id": 616, + "name": "claimExists", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 601, + "name": "_holder", + "nodeType": "VariableDeclaration", + "scope": 616, + "src": "1306:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 600, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1306:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 603, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 616, + "src": "1323:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 602, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1323:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1305:35:1" + }, + "src": "1285:141:1", + "visibility": "internal" + }, + { + "body": { + "id": 632, + "nodeType": "Block", + "src": "1488:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 623, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "1506:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 624, + "name": "claimsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1517:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 626, + "indexExpression": { + "argumentTypes": null, + "id": 625, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "1530:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1517:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1506:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 628, + "name": "ERROR_NO_PROOF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "1540:14:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 622, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "1498:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1498:57:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 630, + "nodeType": "ExpressionStatement", + "src": "1498:57:1" + }, + { + "id": 631, + "nodeType": "PlaceholderStatement", + "src": "1565:1:1" + } + ] + }, + "documentation": null, + "id": 633, + "name": "proofExists", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 618, + "name": "_holder", + "nodeType": "VariableDeclaration", + "scope": 633, + "src": "1453:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 617, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1453:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 620, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 633, + "src": "1470:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 619, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1470:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1452:35:1" + }, + "src": "1432:141:1", + "visibility": "internal" + }, + { + "body": { + "id": 667, + "nodeType": "Block", + "src": "1700:206:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 643, + "name": "_vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "1718:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 644, + "name": "getTimestamp64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7279, + "src": "1732:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$", + "typeString": "function () view returns (uint64)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1732:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1718:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 647, + "name": "ERROR_PAST_END", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "1750:14:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 642, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "1710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1710:55:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 649, + "nodeType": "ExpressionStatement", + "src": "1710:55:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 650, + "name": "tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "1775:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 652, + "name": "_tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 635, + "src": "1803:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 651, + "name": "TokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2952, + "src": "1790:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TokenManager_$2952_$", + "typeString": "type(contract TokenManager)" + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1790:27:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "src": "1775:42:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "id": 655, + "nodeType": "ExpressionStatement", + "src": "1775:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 656, + "name": "vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "1827:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 657, + "name": "_vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "1840:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "1827:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 659, + "nodeType": "ExpressionStatement", + "src": "1827:24:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 660, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "1861:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1870:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1861:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 663, + "nodeType": "ExpressionStatement", + "src": "1861:14:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 664, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6875, + "src": "1886:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1886:13:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 666, + "nodeType": "ExpressionStatement", + "src": "1886:13:1" + } + ] + }, + "documentation": null, + "id": 668, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 640, + "modifierName": { + "argumentTypes": null, + "id": 639, + "name": "onlyInit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6822, + "src": "1687:8:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1687:8:1" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 635, + "name": "_tokenManager", + "nodeType": "VariableDeclaration", + "scope": 668, + "src": "1608:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 637, + "name": "_vestingEnd", + "nodeType": "VariableDeclaration", + "scope": 668, + "src": "1639:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 636, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1639:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1598:65:1" + }, + "payable": false, + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [], + "src": "1700:0:1" + }, + "scope": 864, + "src": "1579:327:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 756, + "nodeType": "Block", + "src": "2176:639:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 678, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "2194:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2204:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2194:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 681, + "name": "ERROR_LOCK_ON_PAUSE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "2211:19:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 677, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "2186:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2186:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 683, + "nodeType": "ExpressionStatement", + "src": "2186:45:1" + }, + { + "assignments": [ + 685 + ], + "declarations": [ + { + "constant": false, + "id": 685, + "name": "accountBytes", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2242:25:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 684, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2242:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 689, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 687, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "2276:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2270:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2270:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2242:43:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 691, + "name": "accountBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "2303:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2303:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3434", + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2326:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_44_by_1", + "typeString": "int_const 44" + }, + "value": "44" + }, + "src": "2303:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 695, + "name": "ERROR_WRONG_ACCOUNT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 590, + "src": "2330:19:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 690, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10392, + 10393 + ], + "referencedDeclaration": 10393, + "src": "2295:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2295:55:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 697, + "nodeType": "ExpressionStatement", + "src": "2295:55:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 701, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2427:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2427:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 703, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "2439:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 698, + "name": "tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2409:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2357, + "src": "2409:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2409:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 705, + "nodeType": "ExpressionStatement", + "src": "2409:38:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 709, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "2476:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 706, + "name": "tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2457:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "issue", + "nodeType": "MemberAccess", + "referencedDeclaration": 2315, + "src": "2457:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2457:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 711, + "nodeType": "ExpressionStatement", + "src": "2457:27:1" + }, + { + "assignments": [ + 713 + ], + "declarations": [ + { + "constant": false, + "id": 713, + "name": "claimId", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2495:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 712, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2495:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 725, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 716, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2539:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2539:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 718, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "2551:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 719, + "name": "getTimestamp64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7279, + "src": "2560:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$", + "typeString": "function () view returns (uint64)" + } + }, + "id": 720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2560:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "id": 721, + "name": "vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "2578:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "id": 722, + "name": "vestingEnd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "2590:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2602:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 714, + "name": "tokenManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2513:12:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenManager_$2952", + "typeString": "contract TokenManager" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "assignVested", + "nodeType": "MemberAccess", + "referencedDeclaration": 2445, + "src": "2513:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_uint64_$_t_uint64_$_t_bool_$returns$_t_uint256_$", + "typeString": "function (address,uint256,uint64,uint64,uint64,bool) external returns (uint256)" + } + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2513:95:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2495:113:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 726, + "name": "claims", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "2619:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string storage ref))" + } + }, + "id": 730, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 727, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2626:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2626:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2619:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 731, + "indexExpression": { + "argumentTypes": null, + "id": 729, + "name": "claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "2638:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2619:27:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 732, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "2649:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2619:38:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 734, + "nodeType": "ExpressionStatement", + "src": "2619:38:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 735, + "name": "claimsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "2667:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 738, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 736, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2680:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2680:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2667:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2694:26:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 739, + "name": "claimsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "2694:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 742, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 740, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2707:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2707:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2694:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2667:53:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 745, + "nodeType": "ExpressionStatement", + "src": "2667:53:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 747, + "name": "claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "2744:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 748, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "2753:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2753:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 750, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "2765:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 751, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "2774:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 746, + "name": "NewLock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "2736:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,address,uint256,string memory)" + } + }, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2736:47:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 753, + "nodeType": "EmitStatement", + "src": "2731:52:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 754, + "name": "claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "2801:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 676, + "id": 755, + "nodeType": "Return", + "src": "2794:14:1" + } + ] + }, + "documentation": "@notice Vest `amount` GOLs till the end of action and create proposal to claim `amount` EULs\n@return vesting ID", + "id": 757, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "lock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 670, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2077:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2077:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 672, + "name": "_account", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2102:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 671, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2102:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2067:63:1" + }, + "payable": false, + "returnParameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 675, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2163:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2162:9:1" + }, + "scope": 864, + "src": "2054:761:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 792, + "nodeType": "Block", + "src": "2973:167:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 769, + "name": "proofs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "2983:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string storage ref))" + } + }, + "id": 772, + "indexExpression": { + "argumentTypes": null, + "id": 770, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "2990:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2983:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 773, + "indexExpression": { + "argumentTypes": null, + "id": 771, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "3000:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2983:26:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 774, + "name": "_proofTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "3012:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2983:37:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 776, + "nodeType": "ExpressionStatement", + "src": "2983:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 777, + "name": "proofsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "3030:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 779, + "indexExpression": { + "argumentTypes": null, + "id": 778, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "3043:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3030:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3055:24:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 780, + "name": "proofsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "3055:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 782, + "indexExpression": { + "argumentTypes": null, + "id": 781, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "3068:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3055:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3030:49:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "3030:49:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 787, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "3104:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 788, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "3114:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 789, + "name": "_proofTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "3124:8:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 786, + "name": "NewProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 544, + "src": "3095:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,string memory)" + } + }, + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3095:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 791, + "nodeType": "EmitStatement", + "src": "3090:43:1" + } + ] + }, + "documentation": null, + "id": 793, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 766, + "name": "PROOF_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 584, + "src": "2957:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 767, + "modifierName": { + "argumentTypes": null, + "id": 765, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6489, + "src": "2952:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_bytes32_$", + "typeString": "modifier (bytes32)" + } + }, + "nodeType": "ModifierInvocation", + "src": "2952:16:1" + } + ], + "name": "addProof", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 759, + "name": "_claimer", + "nodeType": "VariableDeclaration", + "scope": 793, + "src": "2848:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2848:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 761, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 793, + "src": "2874:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2874:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 763, + "name": "_proofTx", + "nodeType": "VariableDeclaration", + "scope": 793, + "src": "2900:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 762, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2900:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2838:90:1" + }, + "payable": false, + "returnParameters": { + "id": 768, + "nodeType": "ParameterList", + "parameters": [], + "src": "2973:0:1" + }, + "scope": 864, + "src": "2821:319:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 812, + "nodeType": "Block", + "src": "3326:50:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 806, + "name": "claims", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "3343:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string storage ref))" + } + }, + "id": 808, + "indexExpression": { + "argumentTypes": null, + "id": 807, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "3350:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3343:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 810, + "indexExpression": { + "argumentTypes": null, + "id": 809, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "3360:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3343:26:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 805, + "id": 811, + "nodeType": "Return", + "src": "3336:33:1" + } + ] + }, + "documentation": null, + "id": 813, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 800, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "3277:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 801, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "3287:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 802, + "modifierName": { + "argumentTypes": null, + "id": 799, + "name": "claimExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "3265:11:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_uint256_$", + "typeString": "modifier (address,uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3265:31:1" + } + ], + "name": "getClaimAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 795, + "name": "_claimer", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "3180:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3180:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "3206:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3206:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3170:58:1" + }, + "payable": false, + "returnParameters": { + "id": 805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 804, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "3314:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 803, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3314:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3313:8:1" + }, + "scope": 864, + "src": "3146:230:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 832, + "nodeType": "Block", + "src": "3555:50:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 826, + "name": "proofs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "3572:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_string_storage_$_$", + "typeString": "mapping(address => mapping(uint256 => string storage ref))" + } + }, + "id": 828, + "indexExpression": { + "argumentTypes": null, + "id": 827, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "3579:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3572:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 830, + "indexExpression": { + "argumentTypes": null, + "id": 829, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "3589:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3572:26:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 825, + "id": 831, + "nodeType": "Return", + "src": "3565:33:1" + } + ] + }, + "documentation": null, + "id": 833, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 820, + "name": "_claimer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "3506:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 821, + "name": "_claimId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "3516:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 822, + "modifierName": { + "argumentTypes": null, + "id": 819, + "name": "proofExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 633, + "src": "3494:11:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_uint256_$", + "typeString": "modifier (address,uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3494:31:1" + } + ], + "name": "getProof", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 815, + "name": "_claimer", + "nodeType": "VariableDeclaration", + "scope": 833, + "src": "3409:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3409:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 817, + "name": "_claimId", + "nodeType": "VariableDeclaration", + "scope": 833, + "src": "3435:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 816, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3435:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3399:58:1" + }, + "payable": false, + "returnParameters": { + "id": 825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 824, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 833, + "src": "3543:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 823, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3543:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3542:8:1" + }, + "scope": 864, + "src": "3382:223:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 847, + "nodeType": "Block", + "src": "3652:56:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 839, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "3662:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3671:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3662:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 842, + "nodeType": "ExpressionStatement", + "src": "3662:13:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3696:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 843, + "name": "Pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "3690:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3690:11:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 846, + "nodeType": "EmitStatement", + "src": "3685:16:1" + } + ] + }, + "documentation": null, + "id": 848, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 836, + "name": "PAUSE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "3640:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 837, + "modifierName": { + "argumentTypes": null, + "id": 835, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6489, + "src": "3635:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_bytes32_$", + "typeString": "modifier (bytes32)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3635:16:1" + } + ], + "name": "pause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 834, + "nodeType": "ParameterList", + "parameters": [], + "src": "3625:2:1" + }, + "payable": false, + "returnParameters": { + "id": 838, + "nodeType": "ParameterList", + "parameters": [], + "src": "3652:0:1" + }, + "scope": 864, + "src": "3611:97:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 862, + "nodeType": "Block", + "src": "3757:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 854, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "3767:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3776:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3767:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 857, + "nodeType": "ExpressionStatement", + "src": "3767:14:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3802:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 858, + "name": "Pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "3796:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3796:11:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 861, + "nodeType": "EmitStatement", + "src": "3791:16:1" + } + ] + }, + "documentation": null, + "id": 863, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 851, + "name": "PAUSE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "3745:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 852, + "modifierName": { + "argumentTypes": null, + "id": 850, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6489, + "src": "3740:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_bytes32_$", + "typeString": "modifier (bytes32)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3740:16:1" + } + ], + "name": "unpause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 849, + "nodeType": "ParameterList", + "parameters": [], + "src": "3730:2:1" + }, + "payable": false, + "returnParameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [], + "src": "3757:0:1" + }, + "scope": 864, + "src": "3714:100:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 865, + "src": "205:3611:1" + } + ], + "src": "0:3817:1" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.1", + "updatedAt": "2020-01-20T16:06:11.846Z" +} \ No newline at end of file diff --git a/src/components/web3/web3Vesting.js b/src/components/web3/web3Vesting.js new file mode 100644 index 000000000..813646b3d --- /dev/null +++ b/src/components/web3/web3Vesting.js @@ -0,0 +1,137 @@ +import React, { PureComponent } from 'react'; +import waitForWeb3 from './waitForWeb3'; + +import Token from '../../../contracts/Token.json'; +import Auction from '../../../contracts/Auction.json'; +import VestingConstract from '../../../contracts/Vesting.json'; +import TokenManager from '../../../contracts/TokenManager.json'; + +import { Loading } from '../index'; +import NotFound from '../../containers/application/notFound'; + +import { AUCTION } from '../../utils/config'; + +const injectWeb3Vesting = InnerComponent => + class extends PureComponent { + constructor(props) { + super(props); + this.state = { + web3: null, + contractVesting: null, + loading: true, + accounts: null, + networkId: null, + buyTransactionSuccess: false, + isCorrectNetwork: true, + contractTokenManager: null, + contractToken: null, + }; + this.getWeb3 = this.getWeb3.bind(this); + this.smartVesting = AUCTION.ADDR_VESTING; + } + + componentDidMount() { + this.getWeb3().then(() => this.setState({ loading: false })); + // this.checkBuy(); + } + + async getWeb3() { + await window.ethereum.enable(); + try { + const web3 = await waitForWeb3(); + + const contractVesting = await new web3.eth.Contract( + VestingConstract.abi, + this.smartVesting + ); + + const tokenManagerAddress = await contractVesting.methods + .tokenManager() + .call(); + + const contractTokenManager = await new web3.eth.Contract( + TokenManager.abi, + tokenManagerAddress + ); + + const tokenAddress = await contractTokenManager.methods.token().call(); + + const contractToken = await new web3.eth.Contract( + Token.abi, + tokenAddress + ); + if (web3.givenProvider === null) { + this.setState({ + web3, + contractVesting, + contractTokenManager, + contractToken, + accounts: null, + networkId: null, + isCorrectNetwork: true, + }); + } else { + const networkContract = Object.keys(Auction.networks); + const networkId = await web3.eth.net.getId(); + const accounts = await web3.eth.getAccounts(); + + this.setState({ + web3, + contractVesting, + contractTokenManager, + contractToken, + accounts: accounts[0], + networkId, + isCorrectNetwork: networkContract.indexOf(`${networkId}`) !== -1, + }); + } + } catch (e) { + this.setState({ loading: false }); + } + } + + render() { + const { + web3, + loading, + accounts, + isCorrectNetwork, + contractVesting, + contractTokenManager, + contractToken, + } = this.state; + if (!isCorrectNetwork) { + return ( + + ); + } + if (loading) { + return ( +
+ +
+ ); + } + + return ( + + ); + } + }; + +export default injectWeb3Vesting; diff --git a/src/components/web3/withWeb3.js b/src/components/web3/withWeb3.js index 0857eff1a..4d83a8609 100644 --- a/src/components/web3/withWeb3.js +++ b/src/components/web3/withWeb3.js @@ -14,6 +14,7 @@ const { ADDR_SMART_CONTRACT, ADDR_SMART_CONTRACT_AUCTION_UTILS, ADDR_TOKEN, + ADDR_TOKEN_MANAGER, } = AUCTION; const injectWeb3 = InnerComponent => @@ -35,6 +36,7 @@ const injectWeb3 = InnerComponent => this.smart = ADDR_SMART_CONTRACT; this.smartAuctionUtils = ADDR_SMART_CONTRACT_AUCTION_UTILS; this.tokenAdrrs = ADDR_TOKEN; + this.tokenManager = ADDR_TOKEN_MANAGER; } componentDidMount() { @@ -45,7 +47,6 @@ const injectWeb3 = InnerComponent => async getWeb3() { try { const web3 = await waitForWeb3(); - console.log('web3.givenProvider', web3); const contract = await new web3.eth.Contract(Auction.abi, this.smart); const contractAuctionUtils = await new web3.eth.Contract( AuctionUtils.abi, diff --git a/src/containers/Search/ActionBarContainer.jsx b/src/containers/Search/ActionBarContainer.jsx index 8d55a995c..37a2cdaa0 100644 --- a/src/containers/Search/ActionBarContainer.jsx +++ b/src/containers/Search/ActionBarContainer.jsx @@ -415,6 +415,9 @@ class ActionBarContainer extends Component { txHeight, txHash, } = this.state; + + console.log('bandwidth', bandwidth); + const { valueSearchInput } = this.props; if (stage === STAGE_INIT) { diff --git a/src/containers/vesting/vesting.jsx b/src/containers/vesting/vesting.jsx new file mode 100644 index 000000000..49974b797 --- /dev/null +++ b/src/containers/vesting/vesting.jsx @@ -0,0 +1,72 @@ +import React, { PureComponent } from 'react'; +import { Pane, Text } from '@cybercongress/gravity'; +import { fromWei, toBN, toWei } from 'web3-utils'; +import injectWeb3Vesting from '../../components/web3/web3Vesting'; +import { Loading } from '../../components/index'; +import { + run, + formatNumber, + roundNumber, + asyncForEach, + timer, +} from '../../utils/utils'; + +import { AUCTION } from '../../utils/config'; +import VestingConstract from '../../../contracts/Vesting.json'; +import TokenManager from '../../../contracts/TokenManager.json'; +import Token from '../../../contracts/Token.json'; + +const { + ADDR_SMART_CONTRACT, + TOKEN_NAME, + TOPICS_SEND, + TOPICS_CLAIM, + ADDR_VESTING, +} = AUCTION; +const ROUND_DURATION = 1 * 60 * 60; + +class Vesting extends PureComponent { + constructor(props) { + super(props); + this.state = { + table: [], + accounts: null, + balance: 0, + spendableBalance: 0, + }; + } + + componentDidMount() { + this.init(); + } + + init = async () => { + const { accounts, contractTokenManager, contractToken } = this.props; + + console.log('accounts', accounts); + + const balance = await contractToken.methods.balanceOf(accounts).call(); + const spendableBalance = await contractTokenManager.methods + .spendableBalanceOf(accounts) + .call(); + + this.setState({ + balance, + spendableBalance, + }); + }; + + render() { + const { spendableBalance, balance } = this.state; + // console.log(table); + return ( +
+
{spendableBalance}
+
{spendableBalance - balance}
+
{balance}
+
+ ); + } +} + +export default injectWeb3Vesting(Vesting); diff --git a/src/router.jsx b/src/router.jsx index 01f966a3e..79f105ee4 100644 --- a/src/router.jsx +++ b/src/router.jsx @@ -17,6 +17,7 @@ import Validators from './containers/Validators/Validators'; import SearchResults from './containers/Search/SearchResults'; import Story from './containers/story/story'; import GOL from './containers/gol/gol'; +import Vesting from './containers/vesting/vesting'; export const history = createHashHistory({}); @@ -58,6 +59,7 @@ class AppRouter extends React.Component { + diff --git a/src/utils/config.js b/src/utils/config.js index 240fb3a02..9bad25271 100644 --- a/src/utils/config.js +++ b/src/utils/config.js @@ -2,7 +2,9 @@ const AUCTION = { ADDR_SMART_CONTRACT: '0xc8a0b9d38d1301391fa593728cfaa2962bc72965', ADDR_SMART_CONTRACT_AUCTION_UTILS: '0x5095b56b6607724559d21bb4d2af0d9cdab64149', - ADDR_TOKEN: '0x6b5058b9314c76af2312a6f46ad9a54cf9b48f1c', + ADDR_TOKEN: '0xce09a0c3ff16a4f5d2c66cea9b89e3cc2cf5242b', + ADDR_TOKEN_MANAGER: '0x74a653b35970c16b766a541a3410900b0f5ff024', + ADDR_VESTING: '0x59d8149f1641d839ddd441cb0e4f9047a6c2b6a9', TOKEN_NAME: 'GOL', TOPICS_SEND: '0xe054057d0479c6218d6ec87be73f88230a7e4e1f064cee6e7504e2c4cd9d6150', From 268e9d8c4175627ed5aa0e8fa652e5a531b7bf92 Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Tue, 21 Jan 2020 22:39:44 +0300 Subject: [PATCH 06/10] vesting --- src/components/web3/web3Vesting.js | 2 +- src/containers/application/application.js | 6 +- src/containers/vesting/actionBar.jsx | 289 ++++++++++++++++++++++ src/containers/vesting/balancePane.jsx | 65 +++++ src/containers/vesting/table.jsx | 85 +++++++ src/containers/vesting/vesting.jsx | 248 ++++++++++++++++--- src/router.jsx | 7 +- src/utils/config.js | 4 + src/utils/utils.js | 42 +++- 9 files changed, 707 insertions(+), 41 deletions(-) create mode 100644 src/containers/vesting/actionBar.jsx create mode 100644 src/containers/vesting/balancePane.jsx create mode 100644 src/containers/vesting/table.jsx diff --git a/src/components/web3/web3Vesting.js b/src/components/web3/web3Vesting.js index 813646b3d..2f918efe8 100644 --- a/src/components/web3/web3Vesting.js +++ b/src/components/web3/web3Vesting.js @@ -80,7 +80,7 @@ const injectWeb3Vesting = InnerComponent => contractVesting, contractTokenManager, contractToken, - accounts: accounts[0], + accounts: accounts[0].toLowerCase(), networkId, isCorrectNetwork: networkContract.indexOf(`${networkId}`) !== -1, }); diff --git a/src/containers/application/application.js b/src/containers/application/application.js index 485196485..207cae631 100644 --- a/src/containers/application/application.js +++ b/src/containers/application/application.js @@ -150,9 +150,9 @@ class App extends Component { const { openMenu, story, home, valueSearchInput } = this.state; const { children } = this.props; - if (!story) { - return
{children}
; - } + // if (!story) { + // return
{children}
; + // } return (
diff --git a/src/containers/vesting/actionBar.jsx b/src/containers/vesting/actionBar.jsx new file mode 100644 index 000000000..ec55b952a --- /dev/null +++ b/src/containers/vesting/actionBar.jsx @@ -0,0 +1,289 @@ +import React, { Component } from 'react'; +import { ActionBar, Button, Input, Pane } from '@cybercongress/gravity'; +import { AUCTION, PATTERN_CYBER, CYBER } from '../../utils/config'; + +function lament(error) { + if (error) { + document.querySelector('.before-error').outerHTML += ` +
+

${error.message}

+
${error.stack}
+
+ `; + } +} + +const hopefully = $ => (error, result) => { + if (error) { + lament(error); + } else { + $(result); + } +}; + +const ping = tx => + new Promise((resolve, reject) => { + loop(); + function loop() { + window.web3.eth.getTransactionReceipt(tx, async (error, receipt) => { + if (receipt == null) { + resolve(receipt); + } else { + setTimeout(loop, 1000); + } + + if (receipt) { + resolve(receipt); + } else { + setTimeout(loop, 1000); + } + }); + } + }); + +const ActionBarContentText = ({ children, ...props }) => ( + + {children} + +); + +const GenerateTx = ({ onClickBtn, valueAmount, account }) => ( + + + Vest {valueAmount} + {AUCTION.TOKEN_NAME}s till the end of action and create proposal to claim{' '} + {valueAmount} + {CYBER.DENOM_CYBER.toUpperCase()}s to account {account} + + + +); + +const Succesfuuly = ({ onClickBtn, hash }) => ( + + +
+ Your TX has been broadcast to the network. It is waiting to be mined & + confirned. +
+
+ Check TX status:{' '} + + {hash} + +
+
+ +
+); + +const CreateVesting = ({ + onClickBtn, + valueAddr, + valueAmount, + onChangeAmount, + onChangeAddr, + disabledBtnCreateVesting, + validAmount, + validAddr, + messageAddr, + messageAmount, +}) => ( + + + Vest + + {AUCTION.TOKEN_NAME}s to account + + + + +); + +class ActionBarVesting extends Component { + constructor(props) { + super(props); + this.state = { + step: 'start', + valueAddr: '', + valueAmount: '', + tx: null, + }; + this.smart = AUCTION.ADDR_SMART_CONTRACT; + } + + onClickLook = async accounts => { + const { web3, contractVesting } = this.props; + const { valueAmount, valueAddr } = this.state; + + // const accountsCyber = 'cyber1gw5kdey7fs9wdh05w66s0h4s24tjdvtcp5fhky'; + + const getData = await contractVesting.methods + .lock(valueAmount, valueAddr) + .encodeABI(); + + try { + web3.eth.sendTransaction( + { + from: accounts, + to: AUCTION.ADDR_VESTING, + data: getData, + }, + hopefully(result => + ping(result).then(() => { + this.setState({ + step: 'succesfuuly', + tx: result, + }); + }) + ) + ); + } catch (e) { + console.log(e); + } + }; + + onClickGenerateTx = async () => { + const { web3 } = this.props; + if (web3.currentProvider.host) { + return console.log( + 'Non-Ethereum browser detected. You should consider trying MetaMask!' + ); + } + if (window.ethereum) { + try { + const accounts = await window.ethereum.enable(); + if (accounts.length) { + this.onClickLook(accounts[0]); + } + } catch (error) { + console.log('You declined transaction', error); + } + } else if (window.web3) { + const accounts = await web3.eth.getAccounts(); + if (accounts.length) { + this.onClickLook(accounts[0]); + } + } else { + return console.log('Your metamask is locked!'); + } + }; + + onClickSaveAddress = () => { + const { update } = this.props; + this.setState({ + step: 'start', + valueAddr: '', + valueAmount: '', + tx: null, + }); + if (update) { + update(); + } + }; + + onClickTransactionCost = () => + this.setState({ + step: 'succesfuuly', + }); + + onChangeAmount = e => + this.setState({ + valueAmount: e.target.value, + }); + + onChangeAddr = e => + this.setState({ + valueAddr: e.target.value, + }); + + onClickCreateVesting = () => { + this.setState({ + step: 'generateTx', + }); + }; + + render() { + const { step, tx, valueAmount, valueAddr } = this.state; + const { web3 } = this.props; + const btnCreateVesting = valueAmount > 0 && valueAddr.match(PATTERN_CYBER); + + if (web3.givenProvider === null) { + return ( + + + Please install +   + + Metamask extension + +   + and refresh the page + + + ); + } + + if (step === 'start') { + return ( + this.onChangeAmount(e)} + onChangeAddr={e => this.onChangeAddr(e)} + disabledBtnCreateVesting={!btnCreateVesting} + /> + ); + } + + if (step === 'generateTx') { + return ( + + ); + } + + if (step === 'succesfuuly') { + return ; + } + + return null; + } +} + +export default ActionBarVesting; diff --git a/src/containers/vesting/balancePane.jsx b/src/containers/vesting/balancePane.jsx new file mode 100644 index 000000000..2f538fd32 --- /dev/null +++ b/src/containers/vesting/balancePane.jsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { Pane, Text, Avatar } from '@cybercongress/gravity'; + +import { + formatNumber, + formatValidatorAddress, + formatCurrency, +} from '../../utils/utils'; + +import { Tooltip } from '../../components'; + +import { AUCTION } from '../../utils/config'; + +const TextHeader = ({ children }) => ( + + {children} + +); + +const TextNumber = ({ children }) => ( + + {children} + +); + +const BalancePane = ({ spendableBalance, balance, accounts, ...props }) => ( + + + Total + {formatCurrency(balance)} + + + Vested + {formatCurrency(balance - spendableBalance)} + + + Available + + {formatCurrency(spendableBalance)} + + + + + {formatValidatorAddress(accounts, 6, 4)} + + +); + +export default BalancePane; diff --git a/src/containers/vesting/table.jsx b/src/containers/vesting/table.jsx new file mode 100644 index 000000000..d8b04b9f5 --- /dev/null +++ b/src/containers/vesting/table.jsx @@ -0,0 +1,85 @@ +import React from 'react'; +import { Text, TableEv as Table } from '@cybercongress/gravity'; + +import { formatValidatorAddress, formatCurrency } from '../../utils/utils'; + +const TextTable = ({ children, fontSize, color, display, ...props }) => ( + + {children} + +); + +const TableVesting = ({ data }) => { + const tableRow = data.map(item => ( + + + {item.id} + + + {formatCurrency(item.amount)} + + + {item.start} + + + + + {formatValidatorAddress(item.recipient, 8, 4)} + + + + + {item.proof} + + + )); + + return ( + + + + ID + + + Amount + + + Date + + + CYBER Recipient + + + Proof TX + + + + {tableRow} + +
+ ); +}; + +export default TableVesting; diff --git a/src/containers/vesting/vesting.jsx b/src/containers/vesting/vesting.jsx index 49974b797..44468cdb5 100644 --- a/src/containers/vesting/vesting.jsx +++ b/src/containers/vesting/vesting.jsx @@ -1,47 +1,146 @@ import React, { PureComponent } from 'react'; -import { Pane, Text } from '@cybercongress/gravity'; -import { fromWei, toBN, toWei } from 'web3-utils'; import injectWeb3Vesting from '../../components/web3/web3Vesting'; import { Loading } from '../../components/index'; -import { - run, - formatNumber, - roundNumber, - asyncForEach, - timer, -} from '../../utils/utils'; +import { asyncForEach } from '../../utils/utils'; +import TableVesting from './table'; +import BalancePane from './balancePane'; +import ActionBarVesting from './actionBar'; import { AUCTION } from '../../utils/config'; -import VestingConstract from '../../../contracts/Vesting.json'; -import TokenManager from '../../../contracts/TokenManager.json'; -import Token from '../../../contracts/Token.json'; - -const { - ADDR_SMART_CONTRACT, - TOKEN_NAME, - TOPICS_SEND, - TOPICS_CLAIM, - ADDR_VESTING, -} = AUCTION; -const ROUND_DURATION = 1 * 60 * 60; + +const dateFormat = require('dateformat'); + +const DEFAULT_PROOF = 'Processing by cyber~Congress'; + +const MILLISECONDS_IN_SECOND = 1000; class Vesting extends PureComponent { constructor(props) { super(props); this.state = { table: [], - accounts: null, balance: 0, spendableBalance: 0, + accounts: null, + tableLoading: true, }; } - componentDidMount() { - this.init(); + async componentDidMount() { + const { accounts, web3, contractVesting } = this.props; + await this.setState({ + accounts, + }); + + if (accounts !== null) { + this.getBalance(); + this.getVesting(); + } else { + console.log('accounts null'); + } + + window.ethereum.on('accountsChanged', async accountsChanged => { + const defaultAccounts = accountsChanged[0]; + const tmpAccount = defaultAccounts; + console.log(tmpAccount); + await this.setState({ + accounts: tmpAccount.toLowerCase(), + }); + this.getBalance(); + this.getVesting(); + }); + + contractVesting.events.NewLock( + { + filter: { lockAddress: accounts }, + }, + (error, event) => { + this.newLockUpdate(event); + console.log('event', event); + } + ); + + contractVesting.events.NewProof( + { + filter: { lockAddress: accounts }, + }, + (error, event) => { + this.newProofUpdate(event); + console.log('event', event); + } + ); + + // const subscription = web3.eth.subscribe( + // 'logs', + // { + // address: AUCTION.ADDR_VESTING, + // topics: [AUCTION.TOPICS_VESTING], + // }, + // (error, result) => { + // if (!error) { + // console.log(result); + // this.getBalance(); + // this.getVesting(); + // } + // } + // ); + + // // unsubscribes the subscription + // subscription.unsubscribe((error, success) => { + // if (success) { + // console.log('Successfully unsubscribed!'); + // } + // }); } - init = async () => { - const { accounts, contractTokenManager, contractToken } = this.props; + newLockUpdate = async dataEvent => { + const { table, accounts } = this.state; + const { contractTokenManager } = this.props; + if (accounts === dataEvent.returnValues.lockAddress.toLowerCase()) { + let data = []; + + const { + vestingId, + lockAddress, + amount, + account, + } = dataEvent.returnValues; + + const { start } = await contractTokenManager.methods + .getVesting(lockAddress, vestingId) + .call(); + + data = [ + { + id: parseInt(vestingId, 10), + amount, + start: dateFormat( + new Date(start * MILLISECONDS_IN_SECOND), + 'dd/mm/yyyy, hh:MM:ss tt' + ), + recipient: account, + proof: DEFAULT_PROOF, + }, + ...table, + ]; + + console.log(data); + + this.setState({ table: data }); + this.getBalance(); + } + }; + + newProofUpdate = async dataEvent => { + const { table, accounts } = this.state; + + console.log(dataEvent); + // table[] + }; + + getBalance = async () => { + const { contractTokenManager, contractToken } = this.props; + const { accounts } = this.state; console.log('accounts', accounts); @@ -56,14 +155,101 @@ class Vesting extends PureComponent { }); }; + getVesting = async () => { + const { contractTokenManager, contractVesting } = this.props; + const { accounts } = this.state; + const data = []; + + const vestingsLengths = await contractTokenManager.methods + .vestingsLengths(accounts) + .call(); + + const proofsLength = await contractVesting.methods + .proofsLength(accounts) + .call(); + + await asyncForEach( + Array.from(Array(parseInt(vestingsLengths, 10)).keys()), + async item => { + let getProof; + + const { amount, start } = await contractTokenManager.methods + .getVesting(accounts, item) + .call(); + + const getClaimAddress = await contractVesting.methods + .claims(accounts, item) + .call(); + + if (proofsLength > 0) { + getProof = await contractVesting.methods + .proofs(accounts, item) + .call(); + + if (getProof.length === 0) { + getProof = DEFAULT_PROOF; + } + } else { + getProof = DEFAULT_PROOF; + } + + data.push({ + id: item, + amount, + start: dateFormat( + new Date(start * MILLISECONDS_IN_SECOND), + 'dd/mm/yyyy, hh:MM:ss tt' + ), + recipient: getClaimAddress, + proof: getProof, + }); + } + ); + + const table = data.reverse(); + + this.setState({ table, tableLoading: false }); + }; + render() { - const { spendableBalance, balance } = this.state; - // console.log(table); + const { + accounts, + spendableBalance, + balance, + table, + tableLoading, + } = this.state; + const { web3, contractVesting } = this.props; + + console.log(table.length); + return (
-
{spendableBalance}
-
{spendableBalance - balance}
-
{balance}
+
+ + + {!tableLoading ? ( + + ) : ( +
+ +
+ )} +
+
); } diff --git a/src/router.jsx b/src/router.jsx index 79f105ee4..269420411 100644 --- a/src/router.jsx +++ b/src/router.jsx @@ -36,11 +36,12 @@ class AppRouter extends React.Component { } render() { + const { location } = this.props; const { story } = this.state; - if (!story) { - history.push('/episode-1'); - } + // if (!story && location.pathname === '/') { + // history.push('/episode-1'); + // } return ( diff --git a/src/utils/config.js b/src/utils/config.js index 9bad25271..d391c32ee 100644 --- a/src/utils/config.js +++ b/src/utils/config.js @@ -10,6 +10,8 @@ const AUCTION = { '0xe054057d0479c6218d6ec87be73f88230a7e4e1f064cee6e7504e2c4cd9d6150', TOPICS_CLAIM: '0x51223fdc0a25891366fb358b4af9fe3c381b1566e287c61a29d01c8a173fe4f4', + TOPICS_VESTING: + '0x552f182d4b9ab267a8580e2aa80cf374b7aabc8f528b7e9eea58919eea48e87d', HTTP_PROVIDER_URL: 'https://rinkeby.infura.io/metamask', }; @@ -112,6 +114,7 @@ const DISTRIBUTION = [ ]; const PATTERN = /^0x[a-fA-F0-9]{40}$|^cybervaloper[a-zA-Z0-9]{39}$|^cyber[a-zA-Z0-9]{39}$|^cosmos[a-zA-Z0-9]{39}$/g; +const PATTERN_CYBER = /^cyber[a-zA-Z0-9]{39}$/g; export { TAKEOFF, @@ -124,4 +127,5 @@ export { GENESIS_SUPPLY, TOTAL_GOL_GENESIS_SUPPLY, PATTERN, + PATTERN_CYBER, }; diff --git a/src/utils/utils.js b/src/utils/utils.js index dc8b1ba60..a8303c90e 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -1,6 +1,9 @@ import bech32 from 'bech32'; import { CYBER } from './config'; +const DEFAULT_DECIMAL_DIGITS = 3; +const DEFAULT_CURRENCY = 'GOL'; + const { BECH32_PREFIX_ACC_ADDR_CYBER } = CYBER; const roundNumber = (num, scale) => { @@ -32,6 +35,36 @@ const formatNumber = (number, toFixed) => { .replace(/,/g, ' '); }; +const PREFIXES = [ + { + prefix: 'T', + power: 10 ** 12, + }, + { + prefix: 'G', + power: 10 ** 9, + }, + { + prefix: 'M', + power: 10 ** 6, + }, + { + prefix: 'K', + power: 10 ** 3, + }, +]; + +export function formatCurrency( + value, + currency = DEFAULT_CURRENCY, + decimalDigits = DEFAULT_DECIMAL_DIGITS +) { + const { prefix = '', power = 1 } = + PREFIXES.find(({ power }) => value >= power) || {}; + + return `${roundNumber(value / power, decimalDigits)} ${prefix}${currency}`; +} + const getDecimal = (number, toFixed) => { const nstring = number.toString(); const narray = nstring.split('.'); @@ -62,10 +95,13 @@ const getDelegator = operatorAddr => { return bech32.encode(BECH32_PREFIX_ACC_ADDR_CYBER, address.words); }; -const formatValidatorAddress = address => { +const formatValidatorAddress = (address, firstArg, secondArg) => { + const first = firstArg || 3; + const second = secondArg || 8; + if (address && address.length > 11) { - return `${address.substring(0, 3)}...${address.substring( - address.length - 8 + return `${address.substring(0, first)}...${address.substring( + address.length - second )}`; } if (address && address.length < 11) { From 2a01f6f2ec03bc7b89f0028cc8fb05cad9c79d00 Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Wed, 22 Jan 2020 17:09:40 +0300 Subject: [PATCH 07/10] update abi update addr contract vesting --- contracts/Vesting.json | 72 ++++++------------------------ src/containers/vesting/vesting.jsx | 41 +++++++++-------- src/utils/config.js | 2 +- 3 files changed, 38 insertions(+), 77 deletions(-) diff --git a/contracts/Vesting.json b/contracts/Vesting.json index 15abe226f..ba75b9429 100644 --- a/contracts/Vesting.json +++ b/contracts/Vesting.json @@ -1,6 +1,7 @@ { "contractName": "Vesting", - "abi": [ + "abi": + [ { "constant": true, "inputs": [], @@ -95,29 +96,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "uint256" - } - ], - "name": "proofs", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [], @@ -262,29 +240,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "uint256" - } - ], - "name": "claims", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [], @@ -362,16 +317,16 @@ { "anonymous": false, "inputs": [ - { - "indexed": true, - "name": "claimer", - "type": "address" - }, { "indexed": false, "name": "vestingId", "type": "uint256" }, + { + "indexed": true, + "name": "claimer", + "type": "address" + }, { "indexed": false, "name": "proofTx", @@ -390,7 +345,7 @@ "type": "bool" } ], - "name": "Pause", + "name": "Paused", "type": "event" }, { @@ -464,11 +419,11 @@ "constant": false, "inputs": [ { - "name": "_amount", + "name": "amount", "type": "uint256" }, { - "name": "_account", + "name": "account", "type": "string" } ], @@ -520,7 +475,7 @@ "name": "getClaimAddress", "outputs": [ { - "name": "", + "name": "addr", "type": "string" } ], @@ -543,7 +498,7 @@ "name": "getProof", "outputs": [ { - "name": "", + "name": "proof", "type": "string" } ], @@ -569,7 +524,8 @@ "stateMutability": "nonpayable", "type": "function" } - ], +] + , "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062002727833981519152640100000000620020ce6200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062002727833981519152826401000000006200239f6200023782021704565b50565b5490565b9055565b6124dc806200024b6000396000f30060806040526004361061015e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146101635780630c1ab77e1461018c5780631792b047146102045780631798de81146102445780632914b9bd1461027f5780632a709b141461030157806332f0a3b514610316578063389ed2671461032b5780633d856fff146103405780633f4ba83a146103e65780634f5b5a52146103fb5780635c975abb1461042c578063602c7826146104415780637e7db6e1146104725780637ed9d50e146104a057806380afdea8146104b55780638456cb59146104ca57806384a1931f146104df5780638b3dd749146105115780639d4941d814610526578063a1658fad14610554578063a479e508146105c8578063ab541a85146105dd578063d4aae0c41461060e578063de4796ed14610623578063f478503914610638578063f643509c14610666575b600080fd5b34801561016f57600080fd5b506101786106c4565b604080519115158252519081900360200190f35b34801561019857600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261020294823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506106ee9650505050505050565b005b34801561021057600080fd5b5061023273ffffffffffffffffffffffffffffffffffffffff60043516610921565b60408051918252519081900360200190f35b34801561025057600080fd5b5061020273ffffffffffffffffffffffffffffffffffffffff6004351667ffffffffffffffff60243516610933565b34801561028b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102d8943694929360249392840191908190840183828082843750949750610b3f9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561030d57600080fd5b506102d8610c4b565b34801561032257600080fd5b506102d8610c67565b34801561033757600080fd5b50610232610d06565b34801561034c57600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435610d3b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ab578181015183820152602001610393565b50505050905090810190601f1680156103d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f257600080fd5b50610202610dfd565b34801561040757600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435610f47565b34801561043857600080fd5b5061017861110b565b34801561044d57600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435611134565b34801561047e57600080fd5b5061017873ffffffffffffffffffffffffffffffffffffffff600435166112bf565b3480156104ac57600080fd5b506102326112c5565b3480156104c157600080fd5b506102326112fa565b3480156104d657600080fd5b5061020261132a565b3480156104eb57600080fd5b506104f4611493565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561051d57600080fd5b506102326114bb565b34801561053257600080fd5b5061020273ffffffffffffffffffffffffffffffffffffffff600435166114e6565b34801561056057600080fd5b50604080516020600460443581810135838102808601850190965280855261017895833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506118089650505050505050565b3480156105d457600080fd5b506102d8611998565b3480156105e957600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435611a5a565b34801561061a57600080fd5b506102d8611ae9565b34801561062f57600080fd5b50610178611b14565b34801561064457600080fd5b5061023273ffffffffffffffffffffffffffffffffffffffff60043516611b45565b34801561067257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610232958335953695604494919390910191908190840183828082843750949750611b579650505050505050565b6000806106cf6114bb565b905080158015906106e75750806106e4611fd9565b10155b91505b5090565b604080517f50524f4f465f524f4c45000000000000000000000000000000000000000000008152815190819003600a0181206000808352602083019093529161073d9133918491905b50611808565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610816576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107db5781810151838201526020016107c3565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083208684528252909120835161085592850190612422565b5073ffffffffffffffffffffffffffffffffffffffff84166000818152600260209081526040805187815280830182815287519282019290925286517f8978b4c46d847b359248a8d11c9669d2f9192d35ddd6954d6d8d3d0c7a151cb29489948994926060850192918601918190849084905b838110156108e05781810151838201526020016108c8565b50505050905090810190601f16801561090d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250505050565b60046020526000908152604090205481565b61093b6114bb565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156109d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b506109e0611fdd565b60408051808201909152600881527f504153545f454e4400000000000000000000000000000000000000000000000060208201529067ffffffffffffffff90811690831611610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416177fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff841602177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055610b3b611fef565b5050565b6000610b49611998565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcd578181015183820152602001610bb5565b50505050905090810190601f168015610bfa5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b505050506040513d6020811015610c4357600080fd5b505192915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c71611ae9565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b505050506040513d6020811015610cfe57600080fd5b505190505b90565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b600160208181526000938452604080852082529284529282902080548351600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f81018590048502830185019093528282529092909190830182828015610df55780601f10610dca57610100808354040283529160200191610df5565b820191906000526020600020905b815481529060010190602001808311610dd857829003601f168201915b505050505081565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152815190819003600a01812060008083526020830190935291610e4a913391849190610737565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055604080516001815290517f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f4593049181900360200190a150565b60608282600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600881526020017f4e4f5f50524f4f4600000000000000000000000000000000000000000000000081525090151561102c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260016020818152604080842088855282529283902080548451600294821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911693909304601f81018390048302840183019094528383529192908301828280156110fc5780601f106110d1576101008083540402835291602001916110fc565b820191906000526020600020905b8154815290600101906020018083116110df57829003601f168201915b50505050509250505092915050565b6000547c0100000000000000000000000000000000000000000000000000000000900460ff1681565b60608282600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600881526020017f4e4f5f434c41494d000000000000000000000000000000000000000000000000815250901515611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260036020908152604080832087845282529182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156110fc5780601f106110d1576101008083540402835291602001916110fc565b50600190565b604080517f50524f4f465f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b60006113257fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6120ce565b905090565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152815190819003600a01812060008083526020830190935291611377913391849190610737565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611414576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000179055604080516001815290517f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f4593049181900360200190a150565b60005474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60006113257febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6120ce565b60008060006114f4846112bf565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5061159a610c67565b92506115a5836120d6565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff841615156116ad576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156116a7573d6000803e3d6000fd5b5061179d565b50826116d573ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61211016565b91506116fe73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61224916565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c4544000000602082015290151561179b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b6000806118136106c4565b15156118225760009150611990565b61182a611ae9565b905073ffffffffffffffffffffffffffffffffffffffff811615156118525760009150611990565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761187a886122e1565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156119125781810151838201526020016118fa565b50505050905090810190601f16801561193f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561196157600080fd5b505af1158015611975573d6000803e3d6000fd5b505050506040513d602081101561198b57600080fd5b505191505b509392505050565b6000806119a3611ae9565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610c1957600080fd5b60036020908152600092835260408084208252918352918190208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610df55780601f10610dca57610100808354040283529160200191610df5565b60006113257f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6120ce565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b3f6114bb565b14905090565b60026020526000908152604090205481565b6000805460408051808201909152600d81527f4c4f434b5f4f4e5f50415553450000000000000000000000000000000000000060208201526060918391907c0100000000000000000000000000000000000000000000000000000000900460ff1615611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50835160408051808201909152600d81527f57524f4e475f4143434f554e5400000000000000000000000000000000000000602082015285935090602c14611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5060008054604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815233600482015260248101899052905173ffffffffffffffffffffffffffffffffffffffff90921692639dc29fac9260448084019382900301818387803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b505060008054604080517fcc872b66000000000000000000000000000000000000000000000000000000008152600481018b9052905173ffffffffffffffffffffffffffffffffffffffff909216945063cc872b669350602480820193929182900301818387803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b505060005473ffffffffffffffffffffffffffffffffffffffff1691506321cb18cd90503387611e02611fdd565b60008054604080517c010000000000000000000000000000000000000000000000000000000063ffffffff891602815273ffffffffffffffffffffffffffffffffffffffff9096166004870152602486019490945267ffffffffffffffff92831660448601527401000000000000000000000000000000000000000090049190911660648401819052608484015260a48301819052905160c4808401936020939083900390910190829087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b505050506040513d6020811015611ee557600080fd5b505133600090815260036020908152604080832084845282529091208651929350611f14929091870190612422565b5033600081815260046020908152604080518581528083018a9052606091810182815289519282019290925288517f552f182d4b9ab267a8580e2aa80cf374b7aabc8f528b7e9eea58919eea48e87d9487948c948c949390926080850192860191908190849084905b83811015611f95578181015183820152602001611f7d565b50505050905090810190601f168015611fc25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2949350505050565b4390565b6000611325611fea6122eb565b6122ef565b611ff76114bb565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015612093576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b506120cc61209f611fd9565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61239f16565b565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156120ff576000915061210a565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818061219d86846123a3565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151561223f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906122d885826123d4565b95945050505050565b8051602002815290565b4290565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115612398576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5090919050565b9055565b6000806000806040516020818751602089018a5afa925060008311156123c857805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115612418573d8015612405576020811461240e57612416565b60019350612416565b600183511493505b505b5090949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061246357805160ff1916838001178555612490565b82800160010185558215612490579182015b82811115612490578251825591602001919060010190612475565b506106ea92610d039250905b808211156106ea576000815560010161249c5600a165627a7a723058204e1b41d39ccebaca2f03517bdb0d844dd44a79b9323ee2e6770aa732f19bd32d0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e", "deployedBytecode": "0x60806040526004361061015e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146101635780630c1ab77e1461018c5780631792b047146102045780631798de81146102445780632914b9bd1461027f5780632a709b141461030157806332f0a3b514610316578063389ed2671461032b5780633d856fff146103405780633f4ba83a146103e65780634f5b5a52146103fb5780635c975abb1461042c578063602c7826146104415780637e7db6e1146104725780637ed9d50e146104a057806380afdea8146104b55780638456cb59146104ca57806384a1931f146104df5780638b3dd749146105115780639d4941d814610526578063a1658fad14610554578063a479e508146105c8578063ab541a85146105dd578063d4aae0c41461060e578063de4796ed14610623578063f478503914610638578063f643509c14610666575b600080fd5b34801561016f57600080fd5b506101786106c4565b604080519115158252519081900360200190f35b34801561019857600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261020294823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506106ee9650505050505050565b005b34801561021057600080fd5b5061023273ffffffffffffffffffffffffffffffffffffffff60043516610921565b60408051918252519081900360200190f35b34801561025057600080fd5b5061020273ffffffffffffffffffffffffffffffffffffffff6004351667ffffffffffffffff60243516610933565b34801561028b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102d8943694929360249392840191908190840183828082843750949750610b3f9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561030d57600080fd5b506102d8610c4b565b34801561032257600080fd5b506102d8610c67565b34801561033757600080fd5b50610232610d06565b34801561034c57600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435610d3b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ab578181015183820152602001610393565b50505050905090810190601f1680156103d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f257600080fd5b50610202610dfd565b34801561040757600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435610f47565b34801561043857600080fd5b5061017861110b565b34801561044d57600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435611134565b34801561047e57600080fd5b5061017873ffffffffffffffffffffffffffffffffffffffff600435166112bf565b3480156104ac57600080fd5b506102326112c5565b3480156104c157600080fd5b506102326112fa565b3480156104d657600080fd5b5061020261132a565b3480156104eb57600080fd5b506104f4611493565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561051d57600080fd5b506102326114bb565b34801561053257600080fd5b5061020273ffffffffffffffffffffffffffffffffffffffff600435166114e6565b34801561056057600080fd5b50604080516020600460443581810135838102808601850190965280855261017895833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506118089650505050505050565b3480156105d457600080fd5b506102d8611998565b3480156105e957600080fd5b5061037173ffffffffffffffffffffffffffffffffffffffff60043516602435611a5a565b34801561061a57600080fd5b506102d8611ae9565b34801561062f57600080fd5b50610178611b14565b34801561064457600080fd5b5061023273ffffffffffffffffffffffffffffffffffffffff60043516611b45565b34801561067257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610232958335953695604494919390910191908190840183828082843750949750611b579650505050505050565b6000806106cf6114bb565b905080158015906106e75750806106e4611fd9565b10155b91505b5090565b604080517f50524f4f465f524f4c45000000000000000000000000000000000000000000008152815190819003600a0181206000808352602083019093529161073d9133918491905b50611808565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610816576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107db5781810151838201526020016107c3565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083208684528252909120835161085592850190612422565b5073ffffffffffffffffffffffffffffffffffffffff84166000818152600260209081526040805187815280830182815287519282019290925286517f8978b4c46d847b359248a8d11c9669d2f9192d35ddd6954d6d8d3d0c7a151cb29489948994926060850192918601918190849084905b838110156108e05781810151838201526020016108c8565b50505050905090810190601f16801561090d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250505050565b60046020526000908152604090205481565b61093b6114bb565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156109d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b506109e0611fdd565b60408051808201909152600881527f504153545f454e4400000000000000000000000000000000000000000000000060208201529067ffffffffffffffff90811690831611610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416177fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff841602177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055610b3b611fef565b5050565b6000610b49611998565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcd578181015183820152602001610bb5565b50505050905090810190601f168015610bfa5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b505050506040513d6020811015610c4357600080fd5b505192915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c71611ae9565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b505050506040513d6020811015610cfe57600080fd5b505190505b90565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b600160208181526000938452604080852082529284529282902080548351600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f81018590048502830185019093528282529092909190830182828015610df55780601f10610dca57610100808354040283529160200191610df5565b820191906000526020600020905b815481529060010190602001808311610dd857829003601f168201915b505050505081565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152815190819003600a01812060008083526020830190935291610e4a913391849190610737565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055604080516001815290517f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f4593049181900360200190a150565b60608282600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600881526020017f4e4f5f50524f4f4600000000000000000000000000000000000000000000000081525090151561102c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260016020818152604080842088855282529283902080548451600294821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911693909304601f81018390048302840183019094528383529192908301828280156110fc5780601f106110d1576101008083540402835291602001916110fc565b820191906000526020600020905b8154815290600101906020018083116110df57829003601f168201915b50505050509250505092915050565b6000547c0100000000000000000000000000000000000000000000000000000000900460ff1681565b60608282600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600881526020017f4e4f5f434c41494d000000000000000000000000000000000000000000000000815250901515611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260036020908152604080832087845282529182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156110fc5780601f106110d1576101008083540402835291602001916110fc565b50600190565b604080517f50524f4f465f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b60006113257fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6120ce565b905090565b604080517f50415553455f524f4c45000000000000000000000000000000000000000000008152815190819003600a01812060008083526020830190935291611377913391849190610737565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611414576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50600080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000179055604080516001815290517f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f4593049181900360200190a150565b60005474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60006113257febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6120ce565b60008060006114f4846112bf565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5061159a610c67565b92506115a5836120d6565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5073ffffffffffffffffffffffffffffffffffffffff841615156116ad576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156116a7573d6000803e3d6000fd5b5061179d565b50826116d573ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61211016565b91506116fe73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61224916565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c4544000000602082015290151561179b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b6000806118136106c4565b15156118225760009150611990565b61182a611ae9565b905073ffffffffffffffffffffffffffffffffffffffff811615156118525760009150611990565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761187a886122e1565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156119125781810151838201526020016118fa565b50505050905090810190601f16801561193f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561196157600080fd5b505af1158015611975573d6000803e3d6000fd5b505050506040513d602081101561198b57600080fd5b505191505b509392505050565b6000806119a3611ae9565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610c1957600080fd5b60036020908152600092835260408084208252918352918190208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610df55780601f10610dca57610100808354040283529160200191610df5565b60006113257f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6120ce565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b3f6114bb565b14905090565b60026020526000908152604090205481565b6000805460408051808201909152600d81527f4c4f434b5f4f4e5f50415553450000000000000000000000000000000000000060208201526060918391907c0100000000000000000000000000000000000000000000000000000000900460ff1615611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b50835160408051808201909152600d81527f57524f4e475f4143434f554e5400000000000000000000000000000000000000602082015285935090602c14611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5060008054604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815233600482015260248101899052905173ffffffffffffffffffffffffffffffffffffffff90921692639dc29fac9260448084019382900301818387803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b505060008054604080517fcc872b66000000000000000000000000000000000000000000000000000000008152600481018b9052905173ffffffffffffffffffffffffffffffffffffffff909216945063cc872b669350602480820193929182900301818387803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b505060005473ffffffffffffffffffffffffffffffffffffffff1691506321cb18cd90503387611e02611fdd565b60008054604080517c010000000000000000000000000000000000000000000000000000000063ffffffff891602815273ffffffffffffffffffffffffffffffffffffffff9096166004870152602486019490945267ffffffffffffffff92831660448601527401000000000000000000000000000000000000000090049190911660648401819052608484015260a48301819052905160c4808401936020939083900390910190829087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b505050506040513d6020811015611ee557600080fd5b505133600090815260036020908152604080832084845282529091208651929350611f14929091870190612422565b5033600081815260046020908152604080518581528083018a9052606091810182815289519282019290925288517f552f182d4b9ab267a8580e2aa80cf374b7aabc8f528b7e9eea58919eea48e87d9487948c948c949390926080850192860191908190849084905b83811015611f95578181015183820152602001611f7d565b50505050905090810190601f168015611fc25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2949350505050565b4390565b6000611325611fea6122eb565b6122ef565b611ff76114bb565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015612093576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b506120cc61209f611fd9565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61239f16565b565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156120ff576000915061210a565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818061219d86846123a3565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151561223f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906122d885826123d4565b95945050505050565b8051602002815290565b4290565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115612398576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156107db5781810151838201526020016107c3565b5090919050565b9055565b6000806000806040516020818751602089018a5afa925060008311156123c857805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115612418573d8015612405576020811461240e57612416565b60019350612416565b600183511493505b505b5090949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061246357805160ff1916838001178555612490565b82800160010185558215612490579182015b82811115612490578251825591602001919060010190612475565b506106ea92610d039250905b808211156106ea576000815560010161249c5600a165627a7a723058204e1b41d39ccebaca2f03517bdb0d844dd44a79b9323ee2e6770aa732f19bd32d0029", "sourceMap": "205:3611:1:-;;;344:9:18;:7;;;;:9;:::i;:::-;205:3611:1;;590:84:28;615:24:26;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:28;-1:-1:-1;;637:13:28;;;;:30;:::i;:::-;590:84::o;881:137:26:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:26;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:26;-1:-1:-1;1824:61:26;-1:-1:-1;;;;;;;;;;;1872:12:26;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:33:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;205:3611:1:-;;;;;;;", diff --git a/src/containers/vesting/vesting.jsx b/src/containers/vesting/vesting.jsx index 44468cdb5..73fba0eab 100644 --- a/src/containers/vesting/vesting.jsx +++ b/src/containers/vesting/vesting.jsx @@ -7,6 +7,7 @@ import TableVesting from './table'; import BalancePane from './balancePane'; import ActionBarVesting from './actionBar'; import { AUCTION } from '../../utils/config'; +import { toBN } from 'web3-utils'; const dateFormat = require('dateformat'); @@ -164,10 +165,14 @@ class Vesting extends PureComponent { .vestingsLengths(accounts) .call(); + console.log('vestingsLengths', vestingsLengths); + const proofsLength = await contractVesting.methods .proofsLength(accounts) .call(); + console.log('proofsLength', proofsLength); + await asyncForEach( Array.from(Array(parseInt(vestingsLengths, 10)).keys()), async item => { @@ -177,21 +182,21 @@ class Vesting extends PureComponent { .getVesting(accounts, item) .call(); - const getClaimAddress = await contractVesting.methods - .claims(accounts, item) - .call(); - - if (proofsLength > 0) { - getProof = await contractVesting.methods - .proofs(accounts, item) - .call(); - - if (getProof.length === 0) { - getProof = DEFAULT_PROOF; - } - } else { - getProof = DEFAULT_PROOF; - } + // const getClaimAddress = await contractVesting.methods + // .getClaimAddress(accounts, item) + // .call(); + // console.log('getClaimAddress', getClaimAddress); + + // if (parseInt(proofsLength, 10) > 0) { + // getProof = await contractVesting.methods + // .getProof(accounts, item) + // .call(); + // if (getProof.length === 0) { + // getProof = DEFAULT_PROOF; + // } + // } else { + // getProof = DEFAULT_PROOF; + // } data.push({ id: item, @@ -200,8 +205,8 @@ class Vesting extends PureComponent { new Date(start * MILLISECONDS_IN_SECOND), 'dd/mm/yyyy, hh:MM:ss tt' ), - recipient: getClaimAddress, - proof: getProof, + recipient: 'getClaimAddress', + proof: 'getProof', }); } ); @@ -221,7 +226,7 @@ class Vesting extends PureComponent { } = this.state; const { web3, contractVesting } = this.props; - console.log(table.length); + // console.log(table.length); return (
diff --git a/src/utils/config.js b/src/utils/config.js index d391c32ee..6982f3507 100644 --- a/src/utils/config.js +++ b/src/utils/config.js @@ -4,7 +4,7 @@ const AUCTION = { '0x5095b56b6607724559d21bb4d2af0d9cdab64149', ADDR_TOKEN: '0xce09a0c3ff16a4f5d2c66cea9b89e3cc2cf5242b', ADDR_TOKEN_MANAGER: '0x74a653b35970c16b766a541a3410900b0f5ff024', - ADDR_VESTING: '0x59d8149f1641d839ddd441cb0e4f9047a6c2b6a9', + ADDR_VESTING: '0x9683ffd6b45261667457aafde4b9c0e69518758c', TOKEN_NAME: 'GOL', TOPICS_SEND: '0xe054057d0479c6218d6ec87be73f88230a7e4e1f064cee6e7504e2c4cd9d6150', From b508feeeec16ff459d72699ba7ff97c11e2cbab5 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Tue, 28 Jan 2020 15:02:00 +0300 Subject: [PATCH 08/10] Fixed locks tracking, added proofs tracking --- src/components/web3/web3Vesting.js | 10 +++--- src/containers/vesting/vesting.jsx | 58 +++++++++++++++--------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/components/web3/web3Vesting.js b/src/components/web3/web3Vesting.js index 2f918efe8..7ff35354a 100644 --- a/src/components/web3/web3Vesting.js +++ b/src/components/web3/web3Vesting.js @@ -100,11 +100,11 @@ const injectWeb3Vesting = InnerComponent => contractTokenManager, contractToken, } = this.state; - if (!isCorrectNetwork) { - return ( - - ); - } + // if (!isCorrectNetwork) { + // return ( + // + // ); + // } if (loading) { return (
{ const { table, accounts } = this.state; - - console.log(dataEvent); - // table[] + if (accounts === dataEvent.returnValues.claimer.toLowerCase()) { + table.find((element, index, array) => { + if (array[index].id == dataEvent.returnValues.vestingId) { + array[index].proof = dataEvent.returnValues.proofTx + return element + } + }); + } }; getBalance = async () => { @@ -165,13 +168,7 @@ class Vesting extends PureComponent { .vestingsLengths(accounts) .call(); - console.log('vestingsLengths', vestingsLengths); - - const proofsLength = await contractVesting.methods - .proofsLength(accounts) - .call(); - - console.log('proofsLength', proofsLength); + // console.log('vestingsLengths', vestingsLengths); await asyncForEach( Array.from(Array(parseInt(vestingsLengths, 10)).keys()), @@ -182,21 +179,24 @@ class Vesting extends PureComponent { .getVesting(accounts, item) .call(); - // const getClaimAddress = await contractVesting.methods - // .getClaimAddress(accounts, item) - // .call(); - // console.log('getClaimAddress', getClaimAddress); - - // if (parseInt(proofsLength, 10) > 0) { - // getProof = await contractVesting.methods - // .getProof(accounts, item) - // .call(); - // if (getProof.length === 0) { - // getProof = DEFAULT_PROOF; - // } - // } else { - // getProof = DEFAULT_PROOF; - // } + const getClaimAddress = await contractVesting.methods + .getClaimAddress(accounts, item) + .call(); + // console.log('getClaimAddress', getClaimAddress); + // console.log('getClaimAddressLength', getClaimAddress.length); + + if (getClaimAddress.length === 0) { + return + } + + getProof = await contractVesting.methods + .getProof(accounts, item) + .call(); + // console.log('getProof', getProof); + + if (getProof.length === 0) { + getProof = DEFAULT_PROOF; + } data.push({ id: item, @@ -205,8 +205,8 @@ class Vesting extends PureComponent { new Date(start * MILLISECONDS_IN_SECOND), 'dd/mm/yyyy, hh:MM:ss tt' ), - recipient: 'getClaimAddress', - proof: 'getProof', + recipient: getClaimAddress, + proof: getProof, }); } ); From 8ab3ca39c119acaf39753b136563be7bc62a4a60 Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Tue, 28 Jan 2020 22:27:09 +0300 Subject: [PATCH 09/10] newProofUpdate --- src/containers/vesting/vesting.jsx | 24 ++++++++++++------------ src/utils/config.js | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/containers/vesting/vesting.jsx b/src/containers/vesting/vesting.jsx index 3b785ef03..4a245aaaa 100644 --- a/src/containers/vesting/vesting.jsx +++ b/src/containers/vesting/vesting.jsx @@ -1,4 +1,5 @@ import React, { PureComponent } from 'react'; +import { toBN } from 'web3-utils'; import injectWeb3Vesting from '../../components/web3/web3Vesting'; import { Loading } from '../../components/index'; import { asyncForEach } from '../../utils/utils'; @@ -7,7 +8,6 @@ import TableVesting from './table'; import BalancePane from './balancePane'; import ActionBarVesting from './actionBar'; import { AUCTION } from '../../utils/config'; -import { toBN } from 'web3-utils'; const dateFormat = require('dateformat'); @@ -67,7 +67,7 @@ class Vesting extends PureComponent { }, (error, event) => { this.newProofUpdate(event); - console.log('event', event); + console.log('NewProof', event); } ); @@ -132,13 +132,15 @@ class Vesting extends PureComponent { newProofUpdate = async dataEvent => { const { table, accounts } = this.state; + const data = [...table]; if (accounts === dataEvent.returnValues.claimer.toLowerCase()) { - table.find((element, index, array) => { - if (array[index].id == dataEvent.returnValues.vestingId) { - array[index].proof = dataEvent.returnValues.proofTx - return element + data.forEach((element, index) => { + if (element.id === parseInt(dataEvent.returnValues.vestingId, 10)) { + table[index].proof = dataEvent.returnValues.proofTx; } }); + console.log('newProofUpdate', data); + this.setState({ table: data }); } }; @@ -182,17 +184,17 @@ class Vesting extends PureComponent { const getClaimAddress = await contractVesting.methods .getClaimAddress(accounts, item) .call(); - // console.log('getClaimAddress', getClaimAddress); - // console.log('getClaimAddressLength', getClaimAddress.length); + // console.log('getClaimAddress', getClaimAddress); + // console.log('getClaimAddressLength', getClaimAddress.length); if (getClaimAddress.length === 0) { - return + return; } getProof = await contractVesting.methods .getProof(accounts, item) .call(); - // console.log('getProof', getProof); + // console.log('getProof', getProof); if (getProof.length === 0) { getProof = DEFAULT_PROOF; @@ -226,8 +228,6 @@ class Vesting extends PureComponent { } = this.state; const { web3, contractVesting } = this.props; - // console.log(table.length); - return (
diff --git a/src/utils/config.js b/src/utils/config.js index 6982f3507..532b2d563 100644 --- a/src/utils/config.js +++ b/src/utils/config.js @@ -4,7 +4,7 @@ const AUCTION = { '0x5095b56b6607724559d21bb4d2af0d9cdab64149', ADDR_TOKEN: '0xce09a0c3ff16a4f5d2c66cea9b89e3cc2cf5242b', ADDR_TOKEN_MANAGER: '0x74a653b35970c16b766a541a3410900b0f5ff024', - ADDR_VESTING: '0x9683ffd6b45261667457aafde4b9c0e69518758c', + ADDR_VESTING: '0x3ce65173b147a01eb65c6ded14efc7c202186ebd', TOKEN_NAME: 'GOL', TOPICS_SEND: '0xe054057d0479c6218d6ec87be73f88230a7e4e1f064cee6e7504e2c4cd9d6150', From de4cb2f9fbb9a66d979a3a8a07a10103348bc3d4 Mon Sep 17 00:00:00 2001 From: dimakorzhovnik Date: Wed, 5 Feb 2020 15:58:29 +0300 Subject: [PATCH 10/10] update table, balancePane, actionBar --- src/containers/vesting/actionBar.jsx | 24 ++++++- src/containers/vesting/balancePane.jsx | 91 ++++++++++++-------------- src/containers/vesting/table.jsx | 41 ++++++++---- src/containers/vesting/vesting.jsx | 68 ++++++++++--------- 4 files changed, 129 insertions(+), 95 deletions(-) diff --git a/src/containers/vesting/actionBar.jsx b/src/containers/vesting/actionBar.jsx index ec55b952a..71b2b40c0 100644 --- a/src/containers/vesting/actionBar.jsx +++ b/src/containers/vesting/actionBar.jsx @@ -143,6 +143,23 @@ class ActionBarVesting extends Component { this.smart = AUCTION.ADDR_SMART_CONTRACT; } + componentDidMount() { + const { available } = this.props; + + const data = localStorage.getItem('ledger'); + if (data !== null) { + const address = JSON.parse(data); + + this.setState({ + valueAddr: address.bech32, + }); + } + + this.setState({ + valueAmount: available, + }); + } + onClickLook = async accounts => { const { web3, contractVesting } = this.props; const { valueAmount, valueAddr } = this.state; @@ -236,8 +253,11 @@ class ActionBarVesting extends Component { render() { const { step, tx, valueAmount, valueAddr } = this.state; - const { web3 } = this.props; - const btnCreateVesting = valueAmount > 0 && valueAddr.match(PATTERN_CYBER); + const { web3, available } = this.props; + const btnCreateVesting = + valueAmount > 0 && + valueAddr.match(PATTERN_CYBER) && + valueAmount <= parseFloat(available); if (web3.givenProvider === null) { return ( diff --git a/src/containers/vesting/balancePane.jsx b/src/containers/vesting/balancePane.jsx index 2f538fd32..879760a7d 100644 --- a/src/containers/vesting/balancePane.jsx +++ b/src/containers/vesting/balancePane.jsx @@ -1,18 +1,16 @@ import React from 'react'; -import { Pane, Text, Avatar } from '@cybercongress/gravity'; - -import { - formatNumber, - formatValidatorAddress, - formatCurrency, -} from '../../utils/utils'; - -import { Tooltip } from '../../components'; - +import { Text, Tooltip, Icon } from '@cybercongress/gravity'; +import { Card, ContainerCard } from '../../components'; +import { formatNumber, formatCurrency } from '../../utils/utils'; import { AUCTION } from '../../utils/config'; const TextHeader = ({ children }) => ( - + {children} ); @@ -23,43 +21,38 @@ const TextNumber = ({ children }) => ( ); -const BalancePane = ({ spendableBalance, balance, accounts, ...props }) => ( - - - Total - {formatCurrency(balance)} - - - Vested - {formatCurrency(balance - spendableBalance)} - - - Available - - {formatCurrency(spendableBalance)} - - - - - {formatValidatorAddress(accounts, 6, 4)} - - -); +const BalancePane = ({ spendableBalance, balance, accounts, ...props }) => { + const data = { + total: balance, + vested: balance - spendableBalance, + available: spendableBalance, + }; + + const items = Object.keys(data).map(key => ( + {key}} + value={ + + {formatCurrency(data[key])} + + + + + } + /> + )); + + return ( + + {items} + + ); +}; export default BalancePane; diff --git a/src/containers/vesting/table.jsx b/src/containers/vesting/table.jsx index d8b04b9f5..1cde3ec13 100644 --- a/src/containers/vesting/table.jsx +++ b/src/containers/vesting/table.jsx @@ -1,7 +1,12 @@ import React from 'react'; -import { Text, TableEv as Table } from '@cybercongress/gravity'; +import { Text, TableEv as Table, Tooltip } from '@cybercongress/gravity'; -import { formatValidatorAddress, formatCurrency } from '../../utils/utils'; +import { + formatValidatorAddress, + formatCurrency, + formatNumber, +} from '../../utils/utils'; +import { AUCTION, CYBER } from '../../utils/config'; const TextTable = ({ children, fontSize, color, display, ...props }) => ( ( const TableVesting = ({ data }) => { const tableRow = data.map(item => ( - + {item.id} - - {formatCurrency(item.amount)} + + + + {`${formatNumber(item.amount / CYBER.DIVISOR_CYBER_G, 9)} G${ + AUCTION.TOKEN_NAME + }`} + + - + {item.start} - + - + {formatValidatorAddress(item.recipient, 8, 4)} @@ -56,13 +69,13 @@ const TableVesting = ({ data }) => { ID - + Amount - + Date - + CYBER Recipient diff --git a/src/containers/vesting/vesting.jsx b/src/containers/vesting/vesting.jsx index 4a245aaaa..1fc158ddf 100644 --- a/src/containers/vesting/vesting.jsx +++ b/src/containers/vesting/vesting.jsx @@ -1,5 +1,6 @@ import React, { PureComponent } from 'react'; import { toBN } from 'web3-utils'; +import { Pane, Text } from '@cybercongress/gravity'; import injectWeb3Vesting from '../../components/web3/web3Vesting'; import { Loading } from '../../components/index'; import { asyncForEach } from '../../utils/utils'; @@ -24,6 +25,7 @@ class Vesting extends PureComponent { spendableBalance: 0, accounts: null, tableLoading: true, + loading: true, }; } @@ -43,7 +45,6 @@ class Vesting extends PureComponent { window.ethereum.on('accountsChanged', async accountsChanged => { const defaultAccounts = accountsChanged[0]; const tmpAccount = defaultAccounts; - console.log(tmpAccount); await this.setState({ accounts: tmpAccount.toLowerCase(), }); @@ -57,7 +58,6 @@ class Vesting extends PureComponent { }, (error, event) => { this.newLockUpdate(event); - console.log('event', event); } ); @@ -70,28 +70,6 @@ class Vesting extends PureComponent { console.log('NewProof', event); } ); - - // const subscription = web3.eth.subscribe( - // 'logs', - // { - // address: AUCTION.ADDR_VESTING, - // topics: [AUCTION.TOPICS_VESTING], - // }, - // (error, result) => { - // if (!error) { - // console.log(result); - // this.getBalance(); - // this.getVesting(); - // } - // } - // ); - - // // unsubscribes the subscription - // subscription.unsubscribe((error, success) => { - // if (success) { - // console.log('Successfully unsubscribed!'); - // } - // }); } newLockUpdate = async dataEvent => { @@ -157,6 +135,7 @@ class Vesting extends PureComponent { this.setState({ balance, + loading: false, spendableBalance, }); }; @@ -170,8 +149,6 @@ class Vesting extends PureComponent { .vestingsLengths(accounts) .call(); - // console.log('vestingsLengths', vestingsLengths); - await asyncForEach( Array.from(Array(parseInt(vestingsLengths, 10)).keys()), async item => { @@ -184,8 +161,6 @@ class Vesting extends PureComponent { const getClaimAddress = await contractVesting.methods .getClaimAddress(accounts, item) .call(); - // console.log('getClaimAddress', getClaimAddress); - // console.log('getClaimAddressLength', getClaimAddress.length); if (getClaimAddress.length === 0) { return; @@ -194,7 +169,6 @@ class Vesting extends PureComponent { getProof = await contractVesting.methods .getProof(accounts, item) .call(); - // console.log('getProof', getProof); if (getProof.length === 0) { getProof = DEFAULT_PROOF; @@ -225,12 +199,42 @@ class Vesting extends PureComponent { balance, table, tableLoading, + loading, } = this.state; const { web3, contractVesting } = this.props; + if (loading) { + return ( +
+ +
+ ); + } + return (
+ + + You do not have control over the brain. You need EUL tokens to let + she hear you. If you came from Ethereum or Cosmos you can claim + the gift of gods. Then start prepare to the greatest tournament in + universe: Game of Links. + + )}
- +
); }