@gooddollar/goodprotocol
Version:
GoodDollar Protocol
646 lines (645 loc) • 46.3 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "Reputation",
"sourceName": "contracts/governance/Reputation.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "Burn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "Mint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MINTER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "avatar",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOfLocal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "balanceOfLocalAt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "balances",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "dao",
"outputs": [
{
"internalType": "contract Controller",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract INameService",
"name": "_ns",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nameService",
"outputs": [
{
"internalType": "contract INameService",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nativeToken",
"outputs": [
{
"internalType": "contract IGoodDollar",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "totalSupplyHistory",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupplyLocal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "totalSupplyLocalAt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "updateAvatar",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161203761004c6000396000818161078b015281816107cb01528181610871015281816108b1015261092901526120376000f3fe6080604052600436106101475760003560e01c806301ffc9a71461014c57806306fdde03146101815780631b3c90a8146101a3578063248a9ca3146101ba5780632cff4382146101e85780632f2ff15d146101fd578063313ce5671461021d57806336568abe1461024a5780633659cfe61461026a5780633e6326fc1461028a57806340c10f19146102c25780634162169f146102e25780634f1ef2861461030257806352d1902d146103155780635aef7de61461032a5780636641d9a01461034a578063798fc26b1461036a5780638392edca1461038a57806391d14854146103aa57806395d89b41146103ca5780639dc29fac146103df578063a217fddf146103ff578063ae94c72114610414578063c4d66de814610434578063cbf1304d14610454578063d539139314610474578063d547741f14610496578063e1758bd8146104b6575b600080fd5b34801561015857600080fd5b5061016c610167366004611a5b565b6104cb565b60405190151581526020015b60405180910390f35b34801561018d57600080fd5b50610196610502565b6040516101789190611aa9565b3480156101af57600080fd5b506101b8610591565b005b3480156101c657600080fd5b506101da6101d5366004611adc565b6106b8565b604051908152602001610178565b3480156101f457600080fd5b506101da6106cd565b34801561020957600080fd5b506101b8610218366004611b0a565b6106dd565b34801561022957600080fd5b50610132546102389060ff1681565b60405160ff9091168152602001610178565b34801561025657600080fd5b506101b8610265366004611b0a565b6106fe565b34801561027657600080fd5b506101b8610285366004611b3a565b610781565b34801561029657600080fd5b506067546102aa906001600160a01b031681565b6040516001600160a01b039091168152602001610178565b3480156102ce57600080fd5b5061016c6102dd366004611b57565b610849565b3480156102ee57600080fd5b506065546102aa906001600160a01b031681565b6101b8610310366004611b99565b610867565b34801561032157600080fd5b506101da61091c565b34801561033657600080fd5b506066546102aa906001600160a01b031681565b34801561035657600080fd5b506101da610365366004611adc565b6109ca565b34801561037657600080fd5b506101da610385366004611b57565b6109ec565b34801561039657600080fd5b506101da6103a5366004611adc565b610a84565b3480156103b657600080fd5b5061016c6103c5366004611b0a565b610ad7565b3480156103d657600080fd5b50610196610b02565b3480156103eb57600080fd5b5061016c6103fa366004611b57565b610b10565b34801561040b57600080fd5b506101da600081565b34801561042057600080fd5b506101da61042f366004611b3a565b610b34565b34801561044057600080fd5b506101b861044f366004611b3a565b610b40565b34801561046057600080fd5b506101da61046f366004611b57565b610c59565b34801561048057600080fd5b506101da600080516020611fe283398151915281565b3480156104a257600080fd5b506101b86104b1366004611b0a565b610c8b565b3480156104c257600080fd5b506102aa610ca7565b60006001600160e01b03198216637965db0b60e01b14806104fc57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610130805461051090611c5c565b80601f016020809104026020016040519081016040528092919081815260200182805461053c90611c5c565b80156105895780601f1061055e57610100808354040283529160200191610589565b820191906000526020600020905b81548152906001019060200180831161056c57829003601f168201915b505050505081565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156105f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106189190611c96565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190611c96565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b60006106d843610a84565b905090565b6106e6826106b8565b6106ef81610d2f565b6106f98383610d39565b505050565b6001600160a01b03811633146107735760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61077d8282610dbf565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107c95760405162461bcd60e51b815260040161076a90611cb3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107fb610e26565b6001600160a01b0316146108215760405162461bcd60e51b815260040161076a90611ced565b61082a81610e42565b6040805160008082526020820190925261084691839190610e4a565b50565b6000610853610fb5565b61085d838361101a565b5060019392505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108af5760405162461bcd60e51b815260040161076a90611cb3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108e1610e26565b6001600160a01b0316146109075760405162461bcd60e51b815260040161076a90611ced565b61091082610e42565b61077d82826001610e4a565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109b75760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161076a565b50600080516020611f9b83398151915290565b61013481815481106109db57600080fd5b600091825260209091200154905081565b6001600160a01b038216600090815261013360205260408120541580610a4d57506001600160a01b0383166000908152610133602052604081208054849290610a3757610a37611d27565b90600052602060002001546001600160801b0316115b15610a5a575060006104fc565b6001600160a01b038316600090815261013360205260409020610a7d90836110be565b90506104fc565b610134546000901580610abe575081610134600081548110610aa857610aa8611d27565b90600052602060002001546001600160801b0316115b15610acb57506000919050565b6104fc610134836110be565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610131805461051090611c5c565b60006001600160a01b0383163314610b2a57610b2a610fb5565b61085d8383611207565b60006104fc82436109ec565b600054610100900460ff1615808015610b605750600054600160ff909116105b80610b815750610b6f306112b3565b158015610b81575060005460ff166001145b610be45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161076a565b6000805460ff191660011790558015610c07576000805461ff0019166101001790555b610c10826112c2565b801561077d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6101336020528160005260406000208181548110610c7657600080fd5b90600052602060002001600091509150505481565b610c94826106b8565b610c9d81610d2f565b6106f98383610dbf565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d89190611c96565b6108468133611394565b610d438282610ad7565b61077d57600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610d7b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610dc98282610ad7565b1561077d57600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020611f9b833981519152546001600160a01b031690565b6108466113ed565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e7d576106f9836114b0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ed7575060408051601f3d908101601f19168201909252610ed491810190611d3d565b60015b610f3a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161076a565b600080516020611f9b8339815191528114610fa95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161076a565b506106f983838361154a565b610fcd600080516020611fe283398151915233610ad7565b6110185760405162461bcd60e51b815260206004820152601c60248201527b52657075746174696f6e3a206e656564206d696e74657220726f6c6560201b604482015260640161076a565b565b60008061102643610a84565b9050600061103485436109ec565b905061104b6101346110468685611d6c565b611575565b6001600160a01b038516600090815261013360205260409020611072906110468684611d6c565b846001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885856040516110ad91815260200190565b60405180910390a250919392505050565b81546000908082036110d45760009150506104fc565b6000846110e2600184611d7f565b815481106110f2576110f2611d27565b90600052602060002001549050806001600160801b0316841061111b5760801c91506104fc9050565b8460008154811061112e5761112e611d27565b90600052602060002001546001600160801b0316841015611154576000925050506104fc565b600080611162600185611d7f565b90505b818111156111da576000600261117b8484611d6c565b611186906001611d6c565b6111909190611d92565b9050868882815481106111a5576111a5611d27565b90600052602060002001546001600160801b0316116111c6578092506111d4565b6111d1600182611d7f565b91505b50611165565b60808783815481106111ee576111ee611d27565b9060005260206000200154901c94505050505092915050565b60008061121343610a84565b905082600061122286436109ec565b905081811015611230578091505b6112406101346110468486611d7f565b6001600160a01b038616600090815261013360205260409020611267906110468484611d7f565b856001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040516112a291815260200190565b60405180910390a250949350505050565b6001600160a01b03163b151590565b610132805460ff19166012179055604080518082019091526007815266476f6f6444414f60c81b6020820152610130906112fc9082611e02565b5060408051808201909152600481526311d3d3d160e21b6020820152610131906113269082611e02565b5061132f61169f565b61133761169f565b61133f61169f565b6001600160a01b03811615610846576113578161170a565b60665461136f906000906001600160a01b031661172d565b60665461084690600080516020611fe2833981519152906001600160a01b031661172d565b61139e8282610ad7565b61077d576113ab81611737565b6113b6836020611749565b6040516020016113c7929190611ec1565b60408051601f198184030181529082905262461bcd60e51b825261076a91600401611aa9565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a9190611c96565b6001600160a01b0316146110185760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161076a565b6114b9816112b3565b61151b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161076a565b600080516020611f9b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611553836118eb565b6000825111806115605750805b156106f95761156f838361192b565b50505050565b80816001600160801b0316146115c35760405162461bcd60e51b815260206004820152601360248201527272657075746174696f6e206f766572666c6f7760681b604482015260640161076a565b8154158061160457508154439083906115de90600190611d7f565b815481106115ee576115ee611d27565b90600052602060002001546001600160801b0316105b156116315781546001810183556000838152602090206001600160801b034316608084901b179101555050565b608081901b6001600160801b0383600185805490506116509190611d7f565b8154811061166057611660611d27565b90600052602060002001541617826001848054905061167f9190611d7f565b8154811061168f5761168f611d27565b6000918252602090912001555050565b600054610100900460ff166110185760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161076a565b606780546001600160a01b0319166001600160a01b038316179055610846610591565b61077d8282610d39565b60606104fc6001600160a01b03831660145b60606000611758836002611f30565b611763906002611d6c565b6001600160401b0381111561177a5761177a611b83565b6040519080825280601f01601f1916602001820160405280156117a4576020820181803683370190505b509050600360fc1b816000815181106117bf576117bf611d27565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106117ee576117ee611d27565b60200101906001600160f81b031916908160001a9053506000611812846002611f30565b61181d906001611d6c565b90505b6001811115611895576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061185157611851611d27565b1a60f81b82828151811061186757611867611d27565b60200101906001600160f81b031916908160001a90535060049490941c9361188e81611f47565b9050611820565b5083156118e45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161076a565b9392505050565b6118f4816114b0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611936836112b3565b6119915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161076a565b600080846001600160a01b0316846040516119ac9190611f5e565b600060405180830381855af49150503d80600081146119e7576040519150601f19603f3d011682016040523d82523d6000602084013e6119ec565b606091505b5091509150611a148282604051806060016040528060278152602001611fbb60279139611a1d565b95945050505050565b60608315611a2c5750816118e4565b6118e48383815115611a415781518083602001fd5b8060405162461bcd60e51b815260040161076a9190611aa9565b600060208284031215611a6d57600080fd5b81356001600160e01b0319811681146118e457600080fd5b60005b83811015611aa0578181015183820152602001611a88565b50506000910152565b6020815260008251806020840152611ac8816040850160208701611a85565b601f01601f19169190910160400192915050565b600060208284031215611aee57600080fd5b5035919050565b6001600160a01b038116811461084657600080fd5b60008060408385031215611b1d57600080fd5b823591506020830135611b2f81611af5565b809150509250929050565b600060208284031215611b4c57600080fd5b81356118e481611af5565b60008060408385031215611b6a57600080fd5b8235611b7581611af5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611bac57600080fd5b8235611bb781611af5565b915060208301356001600160401b0380821115611bd357600080fd5b818501915085601f830112611be757600080fd5b813581811115611bf957611bf9611b83565b604051601f8201601f19908116603f01168101908382118183101715611c2157611c21611b83565b81604052828152886020848701011115611c3a57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600181811c90821680611c7057607f821691505b602082108103611c9057634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611ca857600080fd5b81516118e481611af5565b6020808252602c90820152600080516020611f7b83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020611f7b83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d4f57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104fc576104fc611d56565b818103818111156104fc576104fc611d56565b600082611daf57634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156106f957600081815260208120601f850160051c81016020861015611ddb5750805b601f850160051c820191505b81811015611dfa57828155600101611de7565b505050505050565b81516001600160401b03811115611e1b57611e1b611b83565b611e2f81611e298454611c5c565b84611db4565b602080601f831160018114611e645760008415611e4c5750858301515b600019600386901b1c1916600185901b178555611dfa565b600085815260208120601f198616915b82811015611e9357888601518255948401946001909101908401611e74565b5085821015611eb15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351611ef3816017850160208801611a85565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611f24816028840160208801611a85565b01602801949350505050565b80820281158282048414176104fc576104fc611d56565b600081611f5657611f56611d56565b506000190190565b60008251611f70818460208701611a85565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220099cb20d385168132aba4db46daaf19b5f70721d3a6b03eb1ea75736be98f06264736f6c63430008130033",
"deployedBytecode": "0x6080604052600436106101475760003560e01c806301ffc9a71461014c57806306fdde03146101815780631b3c90a8146101a3578063248a9ca3146101ba5780632cff4382146101e85780632f2ff15d146101fd578063313ce5671461021d57806336568abe1461024a5780633659cfe61461026a5780633e6326fc1461028a57806340c10f19146102c25780634162169f146102e25780634f1ef2861461030257806352d1902d146103155780635aef7de61461032a5780636641d9a01461034a578063798fc26b1461036a5780638392edca1461038a57806391d14854146103aa57806395d89b41146103ca5780639dc29fac146103df578063a217fddf146103ff578063ae94c72114610414578063c4d66de814610434578063cbf1304d14610454578063d539139314610474578063d547741f14610496578063e1758bd8146104b6575b600080fd5b34801561015857600080fd5b5061016c610167366004611a5b565b6104cb565b60405190151581526020015b60405180910390f35b34801561018d57600080fd5b50610196610502565b6040516101789190611aa9565b3480156101af57600080fd5b506101b8610591565b005b3480156101c657600080fd5b506101da6101d5366004611adc565b6106b8565b604051908152602001610178565b3480156101f457600080fd5b506101da6106cd565b34801561020957600080fd5b506101b8610218366004611b0a565b6106dd565b34801561022957600080fd5b50610132546102389060ff1681565b60405160ff9091168152602001610178565b34801561025657600080fd5b506101b8610265366004611b0a565b6106fe565b34801561027657600080fd5b506101b8610285366004611b3a565b610781565b34801561029657600080fd5b506067546102aa906001600160a01b031681565b6040516001600160a01b039091168152602001610178565b3480156102ce57600080fd5b5061016c6102dd366004611b57565b610849565b3480156102ee57600080fd5b506065546102aa906001600160a01b031681565b6101b8610310366004611b99565b610867565b34801561032157600080fd5b506101da61091c565b34801561033657600080fd5b506066546102aa906001600160a01b031681565b34801561035657600080fd5b506101da610365366004611adc565b6109ca565b34801561037657600080fd5b506101da610385366004611b57565b6109ec565b34801561039657600080fd5b506101da6103a5366004611adc565b610a84565b3480156103b657600080fd5b5061016c6103c5366004611b0a565b610ad7565b3480156103d657600080fd5b50610196610b02565b3480156103eb57600080fd5b5061016c6103fa366004611b57565b610b10565b34801561040b57600080fd5b506101da600081565b34801561042057600080fd5b506101da61042f366004611b3a565b610b34565b34801561044057600080fd5b506101b861044f366004611b3a565b610b40565b34801561046057600080fd5b506101da61046f366004611b57565b610c59565b34801561048057600080fd5b506101da600080516020611fe283398151915281565b3480156104a257600080fd5b506101b86104b1366004611b0a565b610c8b565b3480156104c257600080fd5b506102aa610ca7565b60006001600160e01b03198216637965db0b60e01b14806104fc57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610130805461051090611c5c565b80601f016020809104026020016040519081016040528092919081815260200182805461053c90611c5c565b80156105895780601f1061055e57610100808354040283529160200191610589565b820191906000526020600020905b81548152906001019060200180831161056c57829003601f168201915b505050505081565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156105f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106189190611c96565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190611c96565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b60006106d843610a84565b905090565b6106e6826106b8565b6106ef81610d2f565b6106f98383610d39565b505050565b6001600160a01b03811633146107735760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61077d8282610dbf565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107c95760405162461bcd60e51b815260040161076a90611cb3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107fb610e26565b6001600160a01b0316146108215760405162461bcd60e51b815260040161076a90611ced565b61082a81610e42565b6040805160008082526020820190925261084691839190610e4a565b50565b6000610853610fb5565b61085d838361101a565b5060019392505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108af5760405162461bcd60e51b815260040161076a90611cb3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108e1610e26565b6001600160a01b0316146109075760405162461bcd60e51b815260040161076a90611ced565b61091082610e42565b61077d82826001610e4a565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109b75760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161076a565b50600080516020611f9b83398151915290565b61013481815481106109db57600080fd5b600091825260209091200154905081565b6001600160a01b038216600090815261013360205260408120541580610a4d57506001600160a01b0383166000908152610133602052604081208054849290610a3757610a37611d27565b90600052602060002001546001600160801b0316115b15610a5a575060006104fc565b6001600160a01b038316600090815261013360205260409020610a7d90836110be565b90506104fc565b610134546000901580610abe575081610134600081548110610aa857610aa8611d27565b90600052602060002001546001600160801b0316115b15610acb57506000919050565b6104fc610134836110be565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610131805461051090611c5c565b60006001600160a01b0383163314610b2a57610b2a610fb5565b61085d8383611207565b60006104fc82436109ec565b600054610100900460ff1615808015610b605750600054600160ff909116105b80610b815750610b6f306112b3565b158015610b81575060005460ff166001145b610be45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161076a565b6000805460ff191660011790558015610c07576000805461ff0019166101001790555b610c10826112c2565b801561077d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6101336020528160005260406000208181548110610c7657600080fd5b90600052602060002001600091509150505481565b610c94826106b8565b610c9d81610d2f565b6106f98383610dbf565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d89190611c96565b6108468133611394565b610d438282610ad7565b61077d57600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610d7b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610dc98282610ad7565b1561077d57600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020611f9b833981519152546001600160a01b031690565b6108466113ed565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e7d576106f9836114b0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ed7575060408051601f3d908101601f19168201909252610ed491810190611d3d565b60015b610f3a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161076a565b600080516020611f9b8339815191528114610fa95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161076a565b506106f983838361154a565b610fcd600080516020611fe283398151915233610ad7565b6110185760405162461bcd60e51b815260206004820152601c60248201527b52657075746174696f6e3a206e656564206d696e74657220726f6c6560201b604482015260640161076a565b565b60008061102643610a84565b9050600061103485436109ec565b905061104b6101346110468685611d6c565b611575565b6001600160a01b038516600090815261013360205260409020611072906110468684611d6c565b846001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885856040516110ad91815260200190565b60405180910390a250919392505050565b81546000908082036110d45760009150506104fc565b6000846110e2600184611d7f565b815481106110f2576110f2611d27565b90600052602060002001549050806001600160801b0316841061111b5760801c91506104fc9050565b8460008154811061112e5761112e611d27565b90600052602060002001546001600160801b0316841015611154576000925050506104fc565b600080611162600185611d7f565b90505b818111156111da576000600261117b8484611d6c565b611186906001611d6c565b6111909190611d92565b9050868882815481106111a5576111a5611d27565b90600052602060002001546001600160801b0316116111c6578092506111d4565b6111d1600182611d7f565b91505b50611165565b60808783815481106111ee576111ee611d27565b9060005260206000200154901c94505050505092915050565b60008061121343610a84565b905082600061122286436109ec565b905081811015611230578091505b6112406101346110468486611d7f565b6001600160a01b038616600090815261013360205260409020611267906110468484611d7f565b856001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040516112a291815260200190565b60405180910390a250949350505050565b6001600160a01b03163b151590565b610132805460ff19166012179055604080518082019091526007815266476f6f6444414f60c81b6020820152610130906112fc9082611e02565b5060408051808201909152600481526311d3d3d160e21b6020820152610131906113269082611e02565b5061132f61169f565b61133761169f565b61133f61169f565b6001600160a01b03811615610846576113578161170a565b60665461136f906000906001600160a01b031661172d565b60665461084690600080516020611fe2833981519152906001600160a01b031661172d565b61139e8282610ad7565b61077d576113ab81611737565b6113b6836020611749565b6040516020016113c7929190611ec1565b60408051601f198184030181529082905262461bcd60e51b825261076a91600401611aa9565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a9190611c96565b6001600160a01b0316146110185760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161076a565b6114b9816112b3565b61151b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161076a565b600080516020611f9b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611553836118eb565b6000825111806115605750805b156106f95761156f838361192b565b50505050565b80816001600160801b0316146115c35760405162461bcd60e51b815260206004820152601360248201527272657075746174696f6e206f766572666c6f7760681b604482015260640161076a565b8154158061160457508154439083906115de90600190611d7f565b815481106115ee576115ee611d27565b90600052602060002001546001600160801b0316105b156116315781546001810183556000838152602090206001600160801b034316608084901b179101555050565b608081901b6001600160801b0383600185805490506116509190611d7f565b8154811061166057611660611d27565b90600052602060002001541617826001848054905061167f9190611d7f565b8154811061168f5761168f611d27565b6000918252602090912001555050565b600054610100900460ff166110185760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161076a565b606780546001600160a01b0319166001600160a01b038316179055610846610591565b61077d8282610d39565b60606104fc6001600160a01b03831660145b60606000611758836002611f30565b611763906002611d6c565b6001600160401b0381111561177a5761177a611b83565b6040519080825280601f01601f1916602001820160405280156117a4576020820181803683370190505b509050600360fc1b816000815181106117bf576117bf611d27565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106117ee576117ee611d27565b60200101906001600160f81b031916908160001a9053506000611812846002611f30565b61181d906001611d6c565b90505b6001811115611895576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061185157611851611d27565b1a60f81b82828151811061186757611867611d27565b60200101906001600160f81b031916908160001a90535060049490941c9361188e81611f47565b9050611820565b5083156118e45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161076a565b9392505050565b6118f4816114b0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611936836112b3565b6119915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161076a565b600080846001600160a01b0316846040516119ac9190611f5e565b600060405180830381855af49150503d80600081146119e7576040519150601f19603f3d011682016040523d82523d6000602084013e6119ec565b606091505b5091509150611a148282604051806060016040528060278152602001611fbb60279139611a1d565b95945050505050565b60608315611a2c5750816118e4565b6118e48383815115611a415781518083602001fd5b8060405162461bcd60e51b815260040161076a9190611aa9565b600060208284031215611a6d57600080fd5b81356001600160e01b0319811681146118e457600080fd5b60005b83811015611aa0578181015183820152602001611a88565b50506000910152565b6020815260008251806020840152611ac8816040850160208701611a85565b601f01601f19169190910160400192915050565b600060208284031215611aee57600080fd5b5035919050565b6001600160a01b038116811461084657600080fd5b60008060408385031215611b1d57600080fd5b823591506020830135611b2f81611af5565b809150509250929050565b600060208284031215611b4c57600080fd5b81356118e481611af5565b60008060408385031215611b6a57600080fd5b8235611b7581611af5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611bac57600080fd5b8235611bb781611af5565b915060208301356001600160401b0380821115611bd357600080fd5b818501915085601f830112611be757600080fd5b813581811115611bf957611bf9611b83565b604051601f8201601f19908116603f01168101908382118183101715611c2157611c21611b83565b81604052828152886020848701011115611c3a57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600181811c90821680611c7057607f821691505b602082108103611c9057634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611ca857600080fd5b81516118e481611af5565b6020808252602c90820152600080516020611f7b83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020611f7b83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d4f57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104fc576104fc611d56565b818103818111156104fc576104fc611d56565b600082611daf57634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156106f957600081815260208120601f850160051c81016020861015611ddb5750805b601f850160051c820191505b81811015611dfa57828155600101611de7565b505050505050565b81516001600160401b03811115611e1b57611e1b611b83565b611e2f81611e298454611c5c565b84611db4565b602080601f831160018114611e645760008415611e4c5750858301515b600019600386901b1c1916600185901b178555611dfa565b600085815260208120601f198616915b82811015611e9357888601518255948401946001909101908401611e74565b5085821015611eb15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351611ef3816017850160208801611a85565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611f24816028840160208801611a85565b01602801949350505050565b80820281158282048414176104fc576104fc611d56565b600081611f5657611f56611d56565b506000190190565b60008251611f70818460208701611a85565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220099cb20d385168132aba4db46daaf19b5f70721d3a6b03eb1ea75736be98f06264736f6c63430008130033",
"linkReferences": {},
"deployedLinkReferences": {}
}