@gooddollar/goodcontracts
Version:
GoodDollar Contracts
527 lines • 317 kB
JSON
{
"contractName": "AvatarMock",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_orgName",
"type": "string"
},
{
"internalType": "address",
"name": "_nativeToken",
"type": "address"
},
{
"internalType": "contract Reputation",
"name": "_nativeReputation",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_externalToken",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "ExternalTokenApproval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_externalToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "ExternalTokenTransfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_externalToken",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "ExternalTokenTransferFrom",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_contract",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes",
"name": "_data",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_value",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "_success",
"type": "bool"
}
],
"name": "GenericCall",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "_metaData",
"type": "string"
}
],
"name": "MetaData",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "ReceiveEther",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_amountInWei",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
}
],
"name": "SendEther",
"type": "event"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "nativeReputation",
"outputs": [
{
"internalType": "contract Reputation",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "nativeToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "orgName",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_contract",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "genericCall",
"outputs": [
{
"internalType": "bool",
"name": "success",
"type": "bool"
},
{
"internalType": "bytes",
"name": "returnValue",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_amountInWei",
"type": "uint256"
},
{
"internalType": "address payable",
"name": "_to",
"type": "address"
}
],
"name": "sendEther",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "contract IERC20",
"name": "_externalToken",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "externalTokenTransfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "contract IERC20",
"name": "_externalToken",
"type": "address"
},
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "externalTokenTransferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "contract IERC20",
"name": "_externalToken",
"type": "address"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "externalTokenApproval",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "string",
"name": "_metaData",
"type": "string"
}
],
"name": "metaData",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_nativeToken\",\"type\":\"address\"},{\"internalType\":\"contract Reputation\",\"name\":\"_nativeReputation\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_externalToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"ExternalTokenApproval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_externalToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"ExternalTokenTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_externalToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"ExternalTokenTransferFrom\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_success\",\"type\":\"bool\"}],\"name\":\"GenericCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_metaData\",\"type\":\"string\"}],\"name\":\"MetaData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"ReceiveEther\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amountInWei\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"SendEther\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_externalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"externalTokenApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_externalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"externalTokenTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_externalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"externalTokenTransferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"genericCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnValue\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metaData\",\"type\":\"string\"}],\"name\":\"metaData\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nativeReputation\",\"outputs\":[{\"internalType\":\"contract Reputation\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nativeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"orgName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountInWei\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"sendEther\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"constructor\":{\"details\":\"the constructor takes organization name, native token and reputation system and creates an avatar for a controller\"},\"externalTokenApproval(address,address,uint256)\":{\"details\":\"externalTokenApproval approve the spender address to spend a specified amount of tokens on behalf of msg.sender.\",\"params\":{\"_externalToken\":\"the address of the Token Contract\",\"_spender\":\"address\",\"_value\":\"the amount of ether (in Wei) which the approval is referring to.\"},\"return\":\"bool which represents a success\"},\"externalTokenTransfer(address,address,uint256)\":{\"details\":\"external token transfer\",\"params\":{\"_externalToken\":\"the token contract\",\"_to\":\"the destination address\",\"_value\":\"the amount of tokens to transfer\"},\"return\":\"bool which represents success\"},\"externalTokenTransferFrom(address,address,address,uint256)\":{\"details\":\"external token transfer from a specific account\",\"params\":{\"_externalToken\":\"the token contract\",\"_from\":\"the account to spend token from\",\"_to\":\"the destination address\",\"_value\":\"the amount of tokens to transfer\"},\"return\":\"bool which represents success\"},\"genericCall(address,bytes,uint256)\":{\"details\":\"perform a generic call to an arbitrary contract\",\"params\":{\"_contract\":\"the contract's address to call\",\"_data\":\"ABI-encoded contract call to call `_contract` address.\",\"_value\":\"value (ETH) to transfer with the transaction\"},\"return\":\"bool success or fail bytes - the return bytes of the called contract's function.\"},\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"metaData(string)\":{\"details\":\"metaData emits an event with a string, should contain the hash of some meta data.\",\"params\":{\"_metaData\":\"a string representing a hash of the meta data\"},\"return\":\"bool which represents a success\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"sendEther(uint256,address)\":{\"details\":\"send ethers from the avatar's wallet\",\"params\":{\"_amountInWei\":\"amount to send in Wei units\",\"_to\":\"send the ethers to this address\"},\"return\":\"bool which represents success\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}}},\"title\":\"An Avatar holds tokens, reputation and ether for a controller\"},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/mocks/AvatarMock.sol\":\"AvatarMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/mocks/AvatarMock.sol\":{\"keccak256\":\"0x248bd0db5b6addc3b49131b91b3402c0370884d47c7d11838dd6ebded132f762\",\"urls\":[\"bzz-raw://16c9892278f23cc537eac8cc86dd1ab4ff61c8e2cc6c7b46797a28868547a9ca\",\"dweb:/ipfs/QmSZsc6QrrtXcW1KHrBe2pMZCZVnLrpx39cCUfShBen62c\"]},\"@daostack/infra/contracts/Reputation.sol\":{\"keccak256\":\"0x3d226dac0fe7d758f0287fb28bc25fcec1f69d19888ae3a550fa49856d61c482\",\"urls\":[\"bzz-raw://8856852c8fe0ba1c9aab326f0a9a6e7f31a238de2778fa5188e6fc399f7eb352\",\"dweb:/ipfs/QmVH4ppR9Dk7v8yxaSgeArdMv9gBBVoQxEf4E3UsqQ4rY2\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzz-raw://ee762ff5b7746e41d27dcbcea00c7a3034b58adb1b45ddadddb5b721aff450df\",\"dweb:/ipfs/QmdxqtgEFZjHCoiYyz6pUAQ5iBm7As25jcyEbZoTaAgyDa\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162000f0d38038062000f0d833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b5060408181526020830151920151600080546001600160a01b03191633178082559395509093506001600160a01b039290921691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a382516200015590600190602086019062000189565b50600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055506200022e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001cc57805160ff1916838001178555620001fc565b82800160010185558215620001fc579182015b82811115620001fc578251825591602001919060010190620001df565b506200020a9291506200020e565b5090565b6200022b91905b808211156200020a576000815560010162000215565b90565b610ccf806200023e6000396000f3fe6080604052600436106100c25760003560e01c80638f32d59b1161007f578063cb16d4a211610059578063cb16d4a214610491578063dab0efff146104ca578063e1758bd81461050d578063f2fde38b14610522576100c2565b80638f32d59b146103f0578063ab751f7114610405578063b756d5a214610448576100c2565b80631386dc2d146100fa5780632bf1645814610184578063715018a6146102cc578063890ac46c146102e357806389ae1c90146103aa5780638da5cb5b146103db575b60408051348152905133917ff32a9f77675fd5917534c7746608fd3e309eac68fbdcbf5925e24ca97a704396919081900360200190a2005b34801561010657600080fd5b5061010f610555565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610149578181015183820152602001610131565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019057600080fd5b50610249600480360360608110156101a757600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156101d257600080fd5b8201836020820111156101e457600080fd5b8035906020019184600183028401116401000000008311171561020657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506105e2915050565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610290578181015183820152602001610278565b50505050905090810190601f1680156102bd5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156102d857600080fd5b506102e1610761565b005b3480156102ef57600080fd5b506103966004803603602081101561030657600080fd5b81019060208101813564010000000081111561032157600080fd5b82018360208201111561033357600080fd5b8035906020019184600183028401116401000000008311171561035557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107bc945050505050565b604080519115158252519081900360200190f35b3480156103b657600080fd5b506103bf610870565b604080516001600160a01b039092168252519081900360200190f35b3480156103e757600080fd5b506103bf61087f565b3480156103fc57600080fd5b5061039661088e565b34801561041157600080fd5b506103966004803603606081101561042857600080fd5b506001600160a01b0381358116916020810135909116906040013561089f565b34801561045457600080fd5b506103966004803603608081101561046b57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561098e565b34801561049d57600080fd5b50610396600480360360408110156104b457600080fd5b50803590602001356001600160a01b0316610a82565b3480156104d657600080fd5b50610396600480360360608110156104ed57600080fd5b506001600160a01b03813581169160208101359091169060400135610b14565b34801561051957600080fd5b506103bf610c00565b34801561052e57600080fd5b506102e16004803603602081101561054557600080fd5b50356001600160a01b0316610c0f565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105da5780601f106105af576101008083540402835291602001916105da565b820191906000526020600020905b8154815290600101906020018083116105bd57829003601f168201915b505050505081565b600060606105ee61088e565b6105f757600080fd5b846001600160a01b031683856040518082805190602001908083835b602083106106325780518252601f199092019160209182019101610613565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610694576040519150601f19603f3d011682016040523d82523d6000602084013e610699565b606091505b508092508193505050846001600160a01b03167f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e0858585604051808060200184815260200183151515158152602001828103825285818151815260200191508051906020019080838360005b8381101561071d578181015183820152602001610705565b50505050905090810190601f16801561074a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2935093915050565b61076961088e565b61077257600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006107c661088e565b6107cf57600080fd5b7ff9deba4938ba20070ec5a45ddf59bccba49cf83124215228ec1232182ef0ba2b826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561082e578181015183820152602001610816565b50505050905090810190601f16801561085b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a1506001919050565b6003546001600160a01b031681565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60006108a961088e565b6108b257600080fd5b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561091257600080fd5b505af1158015610926573d6000803e3d6000fd5b505050506040513d602081101561093c57600080fd5b5050604080516001600160a01b038581168252602082018590528251908716927f3a48a4d6253b30fd10e57a347c1f9bcb0604946481fae0b2fdad6e74f2a9cbb3928290030190a25060019392505050565b600061099861088e565b6109a157600080fd5b604080516323b872dd60e01b81526001600160a01b0386811660048301528581166024830152604482018590529151918716916323b872dd916064808201926020929091908290030181600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b505050506040513d6020811015610a2657600080fd5b5050604080516001600160a01b03868116825285811660208301528183018590529151918716917f179c15de44aa7ab84896301974328eb40b5b40fe01cfe0fee2924ea712c3e8439181900360600190a2506001949350505050565b6000610a8c61088e565b610a9557600080fd5b6040516001600160a01b0383169084156108fc029085906000818181858888f19350505050158015610acb573d6000803e3d6000fd5b506040805184815290516001600160a01b038416917f22fca66666089f39bc900dd6605b489df4aae6260cc8ea8257594cfb8c84926c919081900360200190a250600192915050565b6000610b1e61088e565b610b2757600080fd5b836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b505050506040513d6020811015610bb157600080fd5b50506040805183815290516001600160a01b0380861692908716917f49dc2a60d2599a7b6932d78fb694c30dfc596fe4e0282b5d0fd184b52472c04d9181900360200190a35060019392505050565b6002546001600160a01b031681565b610c1761088e565b610c2057600080fd5b610c2981610c2c565b50565b6001600160a01b038116610c3f57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fea265627a7a723158207563447797d808b43ef744dd91491772e497510241b49a4b6faa68fe55a2328264736f6c63430005100032",
"deployedBytecode": "0x6080604052600436106100c25760003560e01c80638f32d59b1161007f578063cb16d4a211610059578063cb16d4a214610491578063dab0efff146104ca578063e1758bd81461050d578063f2fde38b14610522576100c2565b80638f32d59b146103f0578063ab751f7114610405578063b756d5a214610448576100c2565b80631386dc2d146100fa5780632bf1645814610184578063715018a6146102cc578063890ac46c146102e357806389ae1c90146103aa5780638da5cb5b146103db575b60408051348152905133917ff32a9f77675fd5917534c7746608fd3e309eac68fbdcbf5925e24ca97a704396919081900360200190a2005b34801561010657600080fd5b5061010f610555565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610149578181015183820152602001610131565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019057600080fd5b50610249600480360360608110156101a757600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156101d257600080fd5b8201836020820111156101e457600080fd5b8035906020019184600183028401116401000000008311171561020657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506105e2915050565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610290578181015183820152602001610278565b50505050905090810190601f1680156102bd5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156102d857600080fd5b506102e1610761565b005b3480156102ef57600080fd5b506103966004803603602081101561030657600080fd5b81019060208101813564010000000081111561032157600080fd5b82018360208201111561033357600080fd5b8035906020019184600183028401116401000000008311171561035557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107bc945050505050565b604080519115158252519081900360200190f35b3480156103b657600080fd5b506103bf610870565b604080516001600160a01b039092168252519081900360200190f35b3480156103e757600080fd5b506103bf61087f565b3480156103fc57600080fd5b5061039661088e565b34801561041157600080fd5b506103966004803603606081101561042857600080fd5b506001600160a01b0381358116916020810135909116906040013561089f565b34801561045457600080fd5b506103966004803603608081101561046b57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561098e565b34801561049d57600080fd5b50610396600480360360408110156104b457600080fd5b50803590602001356001600160a01b0316610a82565b3480156104d657600080fd5b50610396600480360360608110156104ed57600080fd5b506001600160a01b03813581169160208101359091169060400135610b14565b34801561051957600080fd5b506103bf610c00565b34801561052e57600080fd5b506102e16004803603602081101561054557600080fd5b50356001600160a01b0316610c0f565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105da5780601f106105af576101008083540402835291602001916105da565b820191906000526020600020905b8154815290600101906020018083116105bd57829003601f168201915b505050505081565b600060606105ee61088e565b6105f757600080fd5b846001600160a01b031683856040518082805190602001908083835b602083106106325780518252601f199092019160209182019101610613565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610694576040519150601f19603f3d011682016040523d82523d6000602084013e610699565b606091505b508092508193505050846001600160a01b03167f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e0858585604051808060200184815260200183151515158152602001828103825285818151815260200191508051906020019080838360005b8381101561071d578181015183820152602001610705565b50505050905090810190601f16801561074a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2935093915050565b61076961088e565b61077257600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006107c661088e565b6107cf57600080fd5b7ff9deba4938ba20070ec5a45ddf59bccba49cf83124215228ec1232182ef0ba2b826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561082e578181015183820152602001610816565b50505050905090810190601f16801561085b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a1506001919050565b6003546001600160a01b031681565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60006108a961088e565b6108b257600080fd5b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561091257600080fd5b505af1158015610926573d6000803e3d6000fd5b505050506040513d602081101561093c57600080fd5b5050604080516001600160a01b038581168252602082018590528251908716927f3a48a4d6253b30fd10e57a347c1f9bcb0604946481fae0b2fdad6e74f2a9cbb3928290030190a25060019392505050565b600061099861088e565b6109a157600080fd5b604080516323b872dd60e01b81526001600160a01b0386811660048301528581166024830152604482018590529151918716916323b872dd916064808201926020929091908290030181600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b505050506040513d6020811015610a2657600080fd5b5050604080516001600160a01b03868116825285811660208301528183018590529151918716917f179c15de44aa7ab84896301974328eb40b5b40fe01cfe0fee2924ea712c3e8439181900360600190a2506001949350505050565b6000610a8c61088e565b610a9557600080fd5b6040516001600160a01b0383169084156108fc029085906000818181858888f19350505050158015610acb573d6000803e3d6000fd5b506040805184815290516001600160a01b038416917f22fca66666089f39bc900dd6605b489df4aae6260cc8ea8257594cfb8c84926c919081900360200190a250600192915050565b6000610b1e61088e565b610b2757600080fd5b836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b505050506040513d6020811015610bb157600080fd5b50506040805183815290516001600160a01b0380861692908716917f49dc2a60d2599a7b6932d78fb694c30dfc596fe4e0282b5d0fd184b52472c04d9181900360200190a35060019392505050565b6002546001600160a01b031681565b610c1761088e565b610c2057600080fd5b610c2981610c2c565b50565b6001600160a01b038116610c3f57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fea265627a7a723158207563447797d808b43ef744dd91491772e497510241b49a4b6faa68fe55a2328264736f6c63430005100032",
"sourceMap": "286:4868:12:-;;;1280:242;8:9:-1;5:2;;;30:1;27;20:12;5:2;1280:242:12;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1280:242:12;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1280:242:12;;420:4:-1;411:14;;;;1280:242:12;;;;;411:14:-1;1280:242:12;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;1280:242:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1280:242:12;;;;;;;;;;;515:6:77;:19;;-1:-1:-1;;;;;;515:19:77;524:10;515:19;;;;1280:242:12;;-1:-1:-1;1280:242:12;;-1:-1:-1;;;;;;582:6:77;;;;;515;549:40;;515:6;;549:40;1415:18:12;;;;:7;;:18;;;;;:::i;:::-;-1:-1:-1;1443:11:12;:26;;-1:-1:-1;;;;;1443:26:12;;;-1:-1:-1;;;;;;1443:26:12;;;;;;;1479:16;:36;;;;;;;;;;;-1:-1:-1;286:4868:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;286:4868:12;;;-1:-1:-1;286:4868:12;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
"deployedSourceMap": "286:4868:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1635:35;;;1660:9;1635:35;;;;1648:10;;1635:35;;;;;;;;;;286:4868;323:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;323:21:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;323:21:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:364;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2070:364:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2070:364:12;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2070:364:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2070:364:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2070:364:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2070:364:12;;-1:-1:-1;;2070:364:12;;;-1:-1:-1;2070:364:12;;-1:-1:-1;;2070:364:12:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2070:364:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:137:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:137:77;;;:::i;:::-;;5015::12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5015:137:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5015:137:12;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;5015:137:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5015:137:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5015:137:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5015:137:12;;-1:-1:-1;5015:137:12;;-1:-1:-1;;;;;5015:137:12:i;:::-;;;;;;;;;;;;;;;;;;382:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:34:12;;;:::i;:::-;;;;-1:-1:-1;;;;;382:34:12;;;;;;;;;;;;;;659:77:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:77:77;;;:::i;979:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;979:90:77;;;:::i;4475:307:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:307:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4475:307:12;;;;;;;;;;;;;;;;;:::i;3747:342::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3747:342:12;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;3747:342:12;;;;;;;;;;;;;;;;;;;;;;:::i;2655:229::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2655:229:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2655:229:12;;;;;;-1:-1:-1;;;;;2655:229:12;;:::i;3131:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3131:293:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3131:293:12;;;;;;;;;;;;;;;;;:::i;350:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;350:26:12;;;:::i;1655:107:77:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1655:107:77;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1655:107:77;-1:-1:-1;;;;;1655:107:77;;:::i;323:21:12:-;;;;;;;;;;;;;;;-1:-1:-1;;323:21:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2070:364::-;2202:12;2216:24;863:9:77;:7;:9::i;:::-;855:18;;;;;;2331:9:12;-1:-1:-1;;;;;2331:14:12;2352:6;2360:5;2331:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2331:35:12;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2306:60:12;;;;;;;;2393:9;-1:-1:-1;;;;;2381:46:12;;2404:5;2411:6;2419:7;2381:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2381:46:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:364;;;;;;:::o;1347:137:77:-;863:9;:7;:9::i;:::-;855:18;;;;;;1445:1;1429:6;;1408:40;;-1:-1:-1;;;;;1429:6:77;;;;1408:40;;1445:1;;1408:40;1475:1;1458:19;;-1:-1:-1;;;;;;1458:19:77;;;1347:137::o;5015::12:-;5084:4;863:9:77;:7;:9::i;:::-;855:18;;;;;;5105:19:12;5114:9;5105:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5105:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5141:4:12;5015:137;;;:::o;382:34::-;;;-1:-1:-1;;;;;382:34:12;;:::o;659:77:77:-;697:7;723:6;-1:-1:-1;;;;;723:6:77;659:77;:::o;979:90::-;1019:4;1056:6;-1:-1:-1;;;;;1056:6:77;1042:10;:20;;979:90::o;4475:307:12:-;4619:4;863:9:77;:7;:9::i;:::-;855:18;;;;;;4635:14:12;-1:-1:-1;;;;;4635:22:12;;4658:8;4668:6;4635:40;;;;;;;;;;;;;-1:-1:-1;;;;;4635:40:12;-1:-1:-1;;;;;4635:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4635:40:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4635:40:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4690:64:12;;;-1:-1:-1;;;;;4690:64:12;;;;;4635:40;4690:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;4771:4:12;4475:307;;;;;:::o;3747:342::-;3913:4;863:9:77;:7;:9::i;:::-;855:18;;;;;;3929:47:12;;;-1:-1:-1;;;3929:47:12;;-1:-1:-1;;;;;3929:47:12;;;;;;;;;;;;;;;;;;;;;;:27;;;;;;:47;;;;;;;;;;;;;;;-1:-1:-1;3929:27:12;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;3929:47:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3929:47:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3991:70:12;;;-1:-1:-1;;;;;3991:70:12;;;;;;;;3929:47;3991:70;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4078:4:12;3747:342;;;;;;:::o;2655:229::-;2767:4;863:9:77;:7;:9::i;:::-;855:18;;;;;;2787:26:12;;-1:-1:-1;;;;;2787:12:12;;;:26;;;;;2800:12;;2787:26;;;;2800:12;2787;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2828:28:12;;;;;;;;-1:-1:-1;;;;;2828:28:12;;;;;;;;;;;;;-1:-1:-1;2873:4:12;2655:229;;;;:::o;3131:293::-;3270:4;863:9:77;:7;:9::i;:::-;855:18;;;;;;3286:14:12;-1:-1:-1;;;;;3286:23:12;;3310:3;3315:6;3286:36;;;;;;;;;;;;;-1:-1:-1;;;;;3286:36:12;-1:-1:-1;;;;;3286:36:12;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3286:36:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3286:36:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3337:59:12;;;;;;;;-1:-1:-1;;;;;3337:59:12;;;;;;;;;;;;;3286:36;3337:59;;;-1:-1:-1;3413:4:12;3131:293;;;;;:::o;350:26::-;;;-1:-1:-1;;;;;350:26:12;;:::o;1655:107:77:-;863:9;:7;:9::i;:::-;855:18;;;;;;1727:28;1746:8;1727:18;:28::i;:::-;1655:107;:::o;1906:183::-;-1:-1:-1;;;;;1979:22:77;;1971:31;;;;;;2038:6;;;2017:38;;-1:-1:-1;;;;;2017:38:77;;;;2038:6;;;2017:38;;;2065:6;:17;;-1:-1:-1;;;;;;2065:17:77;-1:-1:-1;;;;;2065:17:77;;;;;;;;;;1906:183::o",
"source": "pragma solidity >0.5.4;\n\nimport \"@daostack/infra/contracts/Reputation.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title An Avatar holds tokens, reputation and ether for a controller\n */\ncontract AvatarMock is Ownable {\n string public orgName;\n address public nativeToken;\n Reputation public nativeReputation;\n\n event GenericCall(\n address indexed _contract,\n bytes _data,\n uint256 _value,\n bool _success\n );\n event SendEther(uint256 _amountInWei, address indexed _to);\n event ExternalTokenTransfer(\n address indexed _externalToken,\n address indexed _to,\n uint256 _value\n );\n event ExternalTokenTransferFrom(\n address indexed _externalToken,\n address _from,\n address _to,\n uint256 _value\n );\n event ExternalTokenApproval(\n address indexed _externalToken,\n address _spender,\n uint256 _value\n );\n event ReceiveEther(address indexed _sender, uint256 _value);\n event MetaData(string _metaData);\n\n /**\n * @dev the constructor takes organization name, native token and reputation system\n and creates an avatar for a controller\n */\n constructor(\n string memory _orgName,\n address _nativeToken,\n Reputation _nativeReputation\n ) public {\n orgName = _orgName;\n nativeToken = _nativeToken;\n nativeReputation = _nativeReputation;\n }\n\n /**\n * @dev enables an avatar to receive ethers\n */\n function() external payable {\n emit ReceiveEther(msg.sender, msg.value);\n }\n\n /**\n * @dev perform a generic call to an arbitrary contract\n * @param _contract the contract's address to call\n * @param _data ABI-encoded contract call to call `_contract` address.\n * @param _value value (ETH) to transfer with the transaction\n * @return bool success or fail\n * bytes - the return bytes of the called contract's function.\n */\n function genericCall(\n address _contract,\n bytes memory _data,\n uint256 _value\n ) public onlyOwner returns (bool success, bytes memory returnValue) {\n // solhint-disable-next-line avoid-call-value\n (success, returnValue) = _contract.call.value(_value)(_data);\n emit GenericCall(_contract, _data, _value, success);\n }\n\n /**\n * @dev send ethers from the avatar's wallet\n * @param _amountInWei amount to send in Wei units\n * @param _to send the ethers to this address\n * @return bool which represents success\n */\n function sendEther(uint256 _amountInWei, address payable _to)\n public\n onlyOwner\n returns (bool)\n {\n _to.transfer(_amountInWei);\n emit SendEther(_amountInWei, _to);\n return true;\n }\n\n /**\n * @dev external token transfer\n * @param _externalToken the token contract\n * @param _to the destination address\n * @param _value the amount of tokens to transfer\n * @return bool which represents success\n */\n function externalTokenTransfer(\n IERC20 _externalToken,\n address _to,\n uint256 _value\n ) public onlyOwner returns (bool) {\n _externalToken.transfer(_to, _value);\n emit ExternalTokenTransfer(address(_externalToken), _to, _value);\n return true;\n }\n\n /**\n * @dev external token transfer from a specific account\n * @param _externalToken the token contract\n * @param _from the account to spend token from\n * @param _to the destination address\n * @param _value the amount of tokens to transfer\n * @return bool which represents success\n */\n function externalTokenTransferFrom(\n IERC20 _externalToken,\n address _from,\n address _to,\n uint256 _value\n ) public onlyOwner returns (bool) {\n _externalToken.transferFrom(_from, _to, _value);\n emit ExternalTokenTransferFrom(address(_externalToken), _from, _to, _value);\n return true;\n }\n\n /**\n * @dev externalTokenApproval approve the spender address to spend a specified amount of tokens\n * on behalf of msg.sender.\n * @param _externalToken the address of the Token Contract\n * @param _spender address\n * @param _value the amount of ether (in Wei) which the approval is referring to.\n * @return bool which represents a success\n */\n function externalTokenApproval(\n IERC20 _externalToken,\n address _spender,\n uint256 _value\n ) public onlyOwner returns (bool) {\n _externalToken.approve(_spender, _value);\n emit ExternalTokenApproval(address(_externalToken), _spender, _value);\n return true;\n }\n\n /**\n * @dev metaData emits an event with a string, should contain the hash of some meta data.\n * @param _metaData a string representing a hash of the meta data\n * @return bool which represents a success\n */\n function metaData(string memory _metaData) public onlyOwner returns (bool) {\n emit MetaData(_metaData);\n return true;\n }\n}\n",
"sourcePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/mocks/AvatarMock.sol",
"ast": {
"absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/mocks/AvatarMock.sol",
"exportedSymbols": {
"AvatarMock": [
2939
]
},
"id": 2940,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 2669,
"literals": [
"solidity",
">",
"0.5",
".4"
],
"nodeType": "PragmaDirective",
"src": "0:23:12"
},
{
"absolutePath": "@daostack/infra/contracts/Reputation.sol",
"file": "@daostack/infra/contracts/Reputation.sol",
"id": 2670,
"nodeType": "ImportDirective",
"scope": 2