@gooddollar/goodprotocol
Version:
GoodDollar Protocol
865 lines • 63 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "Faucet",
"sourceName": "contracts/fuseFaucet/Faucet.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": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"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"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "whitelistedRoot",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "relayerOrWhitelisted",
"type": "address"
}
],
"name": "WalletTopped",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "RELAYER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "banAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "bans",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "canTop",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "currentDay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "dailyNewWalletsCount",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "gasPrice",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "gasRefund",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "gasTopping",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getIdentity",
"outputs": [
{
"internalType": "contract IIdentityV2",
"name": "",
"type": "address"
}
],
"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": "address",
"name": "_user",
"type": "address"
}
],
"name": "getToppingAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getToppingAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "goodDollar_unused",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"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 NameService",
"name": "_ns",
"type": "address"
},
{
"internalType": "uint64",
"name": "_gasPrice",
"type": "uint64"
},
{
"internalType": "address",
"name": "relayer",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "maxDailyNewWallets",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxDailyToppings",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxPerWeekMultiplier",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxSwapAmount_unused",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minTopping",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nameService",
"outputs": [
{
"internalType": "contract NameService",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "notFirstTime",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_from",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "onTokenTransfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "perDayRoughLimit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"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": "uint64",
"name": "_price",
"type": "uint64"
}
],
"name": "setGasPrice",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_gasUnits",
"type": "uint256"
}
],
"name": "setGasTopping",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "_minTop",
"type": "uint8"
}
],
"name": "setMinTopping",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_voting",
"type": "address"
}
],
"name": "setVotingContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "startTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_user",
"type": "address"
}
],
"name": "topWallet",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "toppings",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"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"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "votingContract",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "wallets",
"outputs": [
{
"internalType": "uint128",
"name": "lastDayTopped",
"type": "uint128"
},
{
"internalType": "uint32",
"name": "dailyToppingCount",
"type": "uint32"
},
{
"internalType": "uint128",
"name": "weeklyToppingSum",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "lastWeekTopped",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612bf061004c60003960008181610a1101528181610a51015281816110510152818161109101526111090152612bf06000f3fe6080604052600436106101f05760003560e01c806301ffc9a7146101fc578063089c25fa14610231578063151267991461025f5780631ece9b1214610274578063248a9ca3146102a25780632f2ff15d146102c25780632f5a3d15146102e457806336568abe146102fa5780633659cfe61461031a57806336afc6fa1461033a5780633771dcf81461034f5780633e6326fc1461036f5780634f1ef2861461039057806352d1902d146103a357806354fd4d50146103b85780635b61e2c1146103f25780635bc758e2146104325780635c9302c9146104485780636294c3111461045e5780636bdd72421461047e57806370c635911461049e57806378e97925146104be5780637befab10146104d45780637f49f709146104f957806389b08f111461051957806391d14854146105ab578063926d7d7f146105cb57806393a08de4146105ed578063969172c91461060b578063a069c1ac14610630578063a217fddf14610650578063a4c0ed3614610665578063aa31e45914610685578063aaab4c1d146106b6578063ad285cad146106ea578063c1fc006a14610718578063c573cb4014610739578063c5da10331461075a578063c8eb754914610793578063d547741f146107b3578063e97eefd2146107d3578063f84b40f5146107f3578063fe173b971461080957600080fd5b366101f757005b600080fd5b34801561020857600080fd5b5061021c610217366004612422565b610831565b60405190151581526020015b60405180910390f35b34801561023d57600080fd5b5061025161024c366004612461565b610868565b604051908152602001610228565b34801561026b57600080fd5b5061025161093e565b34801561028057600080fd5b5061010554610295906001600160a01b031681565b604051610228919061247e565b3480156102ae57600080fd5b506102516102bd366004612492565b61094e565b3480156102ce57600080fd5b506102e26102dd3660046124ab565b610963565b005b3480156102f057600080fd5b5061025160fc5481565b34801561030657600080fd5b506102e26103153660046124ab565b610984565b34801561032657600080fd5b506102e2610335366004612461565b610a07565b34801561034657600080fd5b50610295610acf565b34801561035b57600080fd5b506102e261036a366004612461565b610b56565b34801561037b57600080fd5b5061010054610295906001600160a01b031681565b6102e261039e366004612521565b611047565b3480156103af57600080fd5b506102516110fc565b3480156103c457600080fd5b50610106546103dd90600160401b900463ffffffff1681565b60405163ffffffff9091168152602001610228565b3480156103fe57600080fd5b506101055461041a90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610228565b34801561043e57600080fd5b5061025160fd5481565b34801561045457600080fd5b5061025160ff5481565b34801561046a57600080fd5b506102e26104793660046125e4565b6111aa565b34801561048a57600080fd5b506102e261049936600461263e565b6113a3565b3480156104aa57600080fd5b506102e26104b9366004612492565b6113dc565b3480156104ca57600080fd5b5061025160fe5481565b3480156104e057600080fd5b50610104546103dd90600160601b900463ffffffff1681565b34801561050557600080fd5b506102e2610514366004612461565b6113fe565b34801561052557600080fd5b50610572610534366004612461565b61010360205260009081526040902080546005909101546001600160801b038083169263ffffffff600160801b918290041692808316929190041684565b604080516001600160801b03958616815263ffffffff909416602085015291841691830191909152919091166060820152608001610228565b3480156105b757600080fd5b5061021c6105c63660046124ab565b611444565b3480156105d757600080fd5b50610251600080516020612b7483398151915281565b3480156105f957600080fd5b50610104546103dd9063ffffffff1681565b34801561061757600080fd5b50610104546103dd90600160801b900463ffffffff1681565b34801561063c57600080fd5b506102e261064b366004612461565b61146f565b34801561065c57600080fd5b50610251600081565b34801561067157600080fd5b5061021c610680366004612659565b61149e565b34801561069157600080fd5b5061021c6106a0366004612461565b6101026020526000908152604090205460ff1681565b3480156106c257600080fd5b50610106546106d890600160601b900460ff1681565b60405160ff9091168152602001610228565b3480156106f657600080fd5b50610251610705366004612461565b6101086020526000908152604090205481565b34801561072457600080fd5b5061010754610295906001600160a01b031681565b34801561074557600080fd5b506101065461041a906001600160401b031681565b34801561076657600080fd5b506102516107753660046124ab565b61010160209081526000928352604080842090915290825290205481565b34801561079f57600080fd5b506102e26107ae3660046126e1565b611689565b3480156107bf57600080fd5b506102e26107ce3660046124ab565b6116b6565b3480156107df57600080fd5b5061021c6107ee366004612461565b6116d2565b3480156107ff57600080fd5b5061025160fb5481565b34801561081557600080fd5b506101045461041a90600160201b90046001600160401b031681565b60006001600160e01b03198216637965db0b60e01b148061086257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101045460fc54600091829161088e91600160201b90046001600160401b03169061271a565b610107549091506001600160a01b031615610862576101075460405163a3ec138d60e01b81526001600160a01b039091169063a3ec138d906108d490869060040161247e565b6040805180830381865afa92505050801561090c575060408051601f3d908101601f1916820190925261090991810190612731565b60015b156108625760208101516001600160601b0316156109375761092f82600261271a565b949350505050565b5092915050565b600061094933610868565b905090565b600090815260c9602052604090206001015490565b61096c8261094e565b61097581611959565b61097f8383611963565b505050565b6001600160a01b03811633146109f95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a0382826119e9565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a4f5760405162461bcd60e51b81526004016109f09061279b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a81611a50565b6001600160a01b031614610aa75760405162461bcd60e51b81526004016109f0906127d5565b610ab081611a6c565b60408051600080825260208201909252610acc91839190611a77565b50565b6101005460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061280f565b60005a9050816000610b66610acf565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610b91919061247e565b602060405180830381865afa158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd2919061280f565b90506001600160a01b03811615610be95780610beb565b815b60ff54909250610bf9611be2565b8060ff5414610c145761010680546001600160401b03191690555b60ff546001600160a01b038416600090815261010360205260409020546001600160801b039081169116141580610c795750610104546001600160a01b0384166000908152610103602052604090205463ffffffff918216600160801b909104909116105b610cba5760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b60448201526064016109f0565b6001600160a01b0383166000908152610102602052604090205460ff16158015610cfd575061010554610106546001600160401b03600160a01b90920482169116105b80610d1057506001600160a01b03821615155b610d6b5760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b60648201526084016109f0565b6001600160a01b0383166000908152610103602052604090206005015462093a8090610da790600160801b90046001600160801b03164261282c565b10610ddc576001600160a01b038316600090815261010360205260409020426001600160801b0316600160801b026005909101555b6101045460fb54600160601b820463ffffffff1691610e0c91600160201b9091046001600160401b03169061271a565b610e16919061271a565b6001600160a01b038416600090815261010360205260409020600501546001600160801b031610610ea65760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b60648201526084016109f0565b846000610eb1610acf565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610edc919061247e565b602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d919061280f565b6001600160a01b0316141580610f465750610f46600080516020612b7483398151915233611444565b610f835760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b60448201526064016109f0565b6001600160a01b038116600090815261010860205260409020544211610fd45760405162461bcd60e51b815260206004820152600660248201526518985b9b995960d21b60448201526064016109f0565b610fdd86611c03565b505050505a610fec908261282c565b610ff89061a41061283f565b6101045490915033906108fc9061101f90600160201b90046001600160401b03168461271a565b6040518115909202916000818181858888f1935050505015801561097f573d6000803e3d6000fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361108f5760405162461bcd60e51b81526004016109f09061279b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110c1611a50565b6001600160a01b0316146110e75760405162461bcd60e51b81526004016109f0906127d5565b6110f082611a6c565b610a0382826001611a77565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111975760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016109f0565b50600080516020612b5483398151915290565b600054610100900460ff16158080156111ca5750600054600160ff909116105b806111eb57506111d930611f5a565b1580156111eb575060005460ff166001145b61124e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109f0565b6000805460ff191660011790558015611271576000805461ff0019166101001790555b611279611f69565b611284600083611fd6565b6001600160a01b038316156112ab576112ab600080516020612b7483398151915284611fd6565b6101048054600160201b600160601b031916600160201b6001600160401b03871602179055620f424060fc8190556112e490600261271a565b60fb5561010480544260fe5561010080546001600160a01b0319166001600160a01b03891617905563ffffffff63ffffffff60601b0119166003600160611b011790556101058054600160a01b600160e01b03191661027160a31b179055610106805460ff60601b1916600f60601b179055801561139c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60006113ae81611959565b5061010480546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b60006113e781611959565b60fc8290556113f782600261271a565b60fb555050565b600080516020612b7483398151915261141681611959565b611423426203f48061283f565b6001600160a01b039092166000908152610108602052604090209190915550565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061147a81611959565b5061010780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806114ad83850185612461565b604080516002808252606082018352929350839260009260208301908036833701905050905033816000815181106114e7576114e7612852565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611545573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611569919061280f565b8160018151811061157c5761157c612852565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af11580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd9190612868565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590611633908a9060009086908e90429060040161288a565b6000604051808303816000875af1158015611652573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261167a91908101906128fb565b50600198975050505050505050565b600061169481611959565b50610106805460ff909216600160601b0260ff60601b19909216919091179055565b6116bf8261094e565b6116c881611959565b61097f83836119e9565b6000806116de83610868565b9050826001600160a01b0316318110156116fb5750600092915050565b60006117116001600160a01b038516318361282c565b61010654909150600160601b900460ff168261172e83606461271a565b6117389190612994565b1015611748575060009392505050565b6000611752610acf565b6001600160a01b0316632d0e9b46866040518263ffffffff1660e01b815260040161177d919061247e565b602060405180830381865afa15801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be919061280f565b90506001600160a01b038116156117d557806117d7565b845b945060006201518060fe54426117ed919061282c565b6117f79190612994565b6001600160a01b03871660009081526101036020526040812054919250906001600160801b03808416911614158061185657506001600160a01b038716600090815261010360205260409020546003600160801b90910463ffffffff16105b80156118b357506001600160a01b0387166000908152610102602052604090205460ff161580156118a0575061010554610106546001600160401b03600160a01b90920482169116105b806118b357506001600160a01b03831615155b6001600160a01b038816600090815261010360205260409020600501549091506001600160801b038082169162093a80916118f691600160801b9004164261282c565b106118ff575060005b81801561194d57506101045460fb54600160601b820463ffffffff169161193791600160201b9091046001600160401b03169061271a565b611941919061271a565b816001600160801b0316105b98975050505050505050565b610acc8133611fe0565b61196d8282611444565b610a0357600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119a53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6119f38282611444565b15610a0357600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020612b54833981519152546001600160a01b031690565b6000610a0381611959565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611aaa5761097f83612039565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b04575060408051601f3d908101601f19168201909252611b01918101906129b6565b60015b611b675760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016109f0565b600080516020612b548339815191528114611bd65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016109f0565b5061097f8383836120d3565b6201518060fe5442611bf4919061282c565b611bfe9190612994565b60ff55565b806000611c0e610acf565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b8152600401611c39919061247e565b602060405180830381865afa158015611c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7a919061280f565b90506001600160a01b03811615611c915780611c93565b825b92506000611ca084610868565b90506000611cb86001600160a01b038616318361282c565b61010654909150600160601b900460ff1682611cd583606461271a565b611cdf9190612994565b1015611d195760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b60448201526064016109f0565b60ff546001600160a01b038616600090815261010360205260409020546001600160801b03918216911603611da5576001600160a01b038516600090815261010360205260409020805460019190601090611d82908490600160801b900463ffffffff166129cf565b92506101000a81548163ffffffff021916908363ffffffff160217905550611dd3565b6001600160a01b038516600090815261010360205260409020805463ffffffff60801b1916600160801b1790555b60ff546001600160a01b03861660009081526101036020526040812080546001600160801b0319166001600160801b0393841617815560050180548493919291611e1f918591166129ec565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b0385166000908152610102602052604090205460ff16158015611e7357506001600160a01b038316155b15611eb85761010680546001600160401b0316906000611e9283612a0c565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b0380861660009081526101026020526040808220805460ff19166001179055519186169183156108fc0291849190818181858888f19350505050158015611f0a573d6000803e3d6000fd5b50604080518281526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b03163b151590565b600054610100900460ff16611fd45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109f0565b565b610a038282611963565b611fea8282611444565b610a0357611ff7816120fe565b612002836020612110565b604051602001612013929190612a5e565b60408051601f198184030181529082905262461bcd60e51b82526109f091600401612acd565b61204281611f5a565b6120a45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016109f0565b600080516020612b5483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6120dc836122b2565b6000825111806120e95750805b1561097f576120f883836122f2565b50505050565b60606108626001600160a01b03831660145b6060600061211f83600261271a565b61212a90600261283f565b6001600160401b03811115612141576121416124db565b6040519080825280601f01601f19166020018201604052801561216b576020820181803683370190505b509050600360fc1b8160008151811061218657612186612852565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106121b5576121b5612852565b60200101906001600160f81b031916908160001a90535060006121d984600261271a565b6121e490600161283f565b90505b600181111561225c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061221857612218612852565b1a60f81b82828151811061222e5761222e612852565b60200101906001600160f81b031916908160001a90535060049490941c9361225581612b00565b90506121e7565b5083156122ab5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109f0565b9392505050565b6122bb81612039565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606122fd83611f5a565b6123585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016109f0565b600080846001600160a01b0316846040516123739190612b17565b600060405180830381855af49150503d80600081146123ae576040519150601f19603f3d011682016040523d82523d6000602084013e6123b3565b606091505b50915091506123db8282604051806060016040528060278152602001612b94602791396123e4565b95945050505050565b606083156123f35750816122ab565b6122ab83838151156124085781518083602001fd5b8060405162461bcd60e51b81526004016109f09190612acd565b60006020828403121561243457600080fd5b81356001600160e01b0319811681146122ab57600080fd5b6001600160a01b0381168114610acc57600080fd5b60006020828403121561247357600080fd5b81356122ab8161244c565b6001600160a01b0391909116815260200190565b6000602082840312156124a457600080fd5b5035919050565b600080604083850312156124be57600080fd5b8235915060208301356124d08161244c565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612519576125196124db565b604052919050565b6000806040838503121561253457600080fd5b823561253f8161244c565b91506020838101356001600160401b038082111561255c57600080fd5b818601915086601f83011261257057600080fd5b813581811115612582576125826124db565b612594601f8201601f191685016124f1565b915080825287848285010111156125aa57600080fd5b80848401858401376000848284010152508093505050509250929050565b80356001600160401b03811681146125df57600080fd5b919050565b600080600080608085870312156125fa57600080fd5b84356126058161244c565b9350612613602086016125c8565b925060408501356126238161244c565b915060608501356126338161244c565b939692955090935050565b60006020828403121561265057600080fd5b6122ab826125c8565b6000806000806060858703121561266f57600080fd5b843561267a8161244c565b93506020850135925060408501356001600160401b038082111561269d57600080fd5b818701915087601f8301126126b157600080fd5b8135818111156126c057600080fd5b8860208285010111156126d257600080fd5b95989497505060200194505050565b6000602082840312156126f357600080fd5b813560ff811681146122ab57600080fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761086257610862612704565b60006040828403121561274357600080fd5b604080519081016001600160401b0381118282101715612765576127656124db565b60405282516127738161244c565b815260208301516001600160601b038116811461278f57600080fd5b60208201529392505050565b6020808252602c90820152600080516020612b3483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612b3483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561282157600080fd5b81516122ab8161244c565b8181038181111561086257610862612704565b8082018082111561086257610862612704565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561287a57600080fd5b815180151581146122ab57600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128da5784516001600160a01b0316835293830193918301916001016128b5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561290e57600080fd5b82516001600160401b038082111561292557600080fd5b818501915085601f83011261293957600080fd5b81518181111561294b5761294b6124db565b8060051b915061295c8483016124f1565b818152918301840191848101908884111561297657600080fd5b938501935b8385101561194d5784518252938501939085019061297b565b6000826129b157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129c857600080fd5b5051919050565b63ffffffff81811683821601908082111561093757610937612704565b6001600160801b0381811683821601908082111561093757610937612704565b60006001600160401b038281166002600160401b03198101612a3057612a30612704565b6001019392505050565b60005b83811015612a55578181015183820152602001612a3d565b50506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612a90816017850160208801612a3a565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612ac1816028840160208801612a3a565b01602801949350505050565b6020815260008251806020840152612aec816040850160208701612a3a565b601f01601f19169190910160400192915050565b600081612b0f57612b0f612704565b506000190190565b60008251612b29818460208701612a3a565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc802cf867c2da464d4ff0ebc4dfcccdfbd65d75a8bc1c273fb02e80bf3446b516416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208dfea0d9bcc2b530e7684e20ef63805c7f2e03e503adfed7d654b89d09a272f464736f6c63430008130033",
"deployedBytecode": "0x6080604052600436106101f05760003560e01c806301ffc9a7146101fc578063089c25fa14610231578063151267991461025f5780631ece9b1214610274578063248a9ca3146102a25780632f2ff15d146102c25780632f5a3d15146102e457806336568abe146102fa5780633659cfe61461031a57806336afc6fa1461033a5780633771dcf81461034f5780633e6326fc1461036f5780634f1ef2861461039057806352d1902d146103a357806354fd4d50146103b85780635b61e2c1146103f25780635bc758e2146104325780635c9302c9146104485780636294c3111461045e5780636bdd72421461047e57806370c635911461049e57806378e97925146104be5780637befab10146104d45780637f49f709146104f957806389b08f111461051957806391d14854146105ab578063926d7d7f146105cb57806393a08de4146105ed578063969172c91461060b578063a069c1ac14610630578063a217fddf14610650578063a4c0ed3614610665578063aa31e45914610685578063aaab4c1d146106b6578063ad285cad146106ea578063c1fc006a14610718578063c573cb4014610739578063c5da10331461075a578063c8eb754914610793578063d547741f146107b3578063e97eefd2146107d3578063f84b40f5146107f3578063fe173b971461080957600080fd5b366101f757005b600080fd5b34801561020857600080fd5b5061021c610217366004612422565b610831565b60405190151581526020015b60405180910390f35b34801561023d57600080fd5b5061025161024c366004612461565b610868565b604051908152602001610228565b34801561026b57600080fd5b5061025161093e565b34801561028057600080fd5b5061010554610295906001600160a01b031681565b604051610228919061247e565b3480156102ae57600080fd5b506102516102bd366004612492565b61094e565b3480156102ce57600080fd5b506102e26102dd3660046124ab565b610963565b005b3480156102f057600080fd5b5061025160fc5481565b34801561030657600080fd5b506102e26103153660046124ab565b610984565b34801561032657600080fd5b506102e2610335366004612461565b610a07565b34801561034657600080fd5b50610295610acf565b34801561035b57600080fd5b506102e261036a366004612461565b610b56565b34801561037b57600080fd5b5061010054610295906001600160a01b031681565b6102e261039e366004612521565b611047565b3480156103af57600080fd5b506102516110fc565b3480156103c457600080fd5b50610106546103dd90600160401b900463ffffffff1681565b60405163ffffffff9091168152602001610228565b3480156103fe57600080fd5b506101055461041a90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610228565b34801561043e57600080fd5b5061025160fd5481565b34801561045457600080fd5b5061025160ff5481565b34801561046a57600080fd5b506102e26104793660046125e4565b6111aa565b34801561048a57600080fd5b506102e261049936600461263e565b6113a3565b3480156104aa57600080fd5b506102e26104b9366004612492565b6113dc565b3480156104ca57600080fd5b5061025160fe5481565b3480156104e057600080fd5b50610104546103dd90600160601b900463ffffffff1681565b34801561050557600080fd5b506102e2610514366004612461565b6113fe565b34801561052557600080fd5b50610572610534366004612461565b61010360205260009081526040902080546005909101546001600160801b038083169263ffffffff600160801b918290041692808316929190041684565b604080516001600160801b03958616815263ffffffff909416602085015291841691830191909152919091166060820152608001610228565b3480156105b757600080fd5b5061021c6105c63660046124ab565b611444565b3480156105d757600080fd5b50610251600080516020612b7483398151915281565b3480156105f957600080fd5b50610104546103dd9063ffffffff1681565b34801561061757600080fd5b50610104546103dd90600160801b900463ffffffff1681565b34801561063c57600080fd5b506102e261064b366004612461565b61146f565b34801561065c57600080fd5b50610251600081565b34801561067157600080fd5b5061021c610680366004612659565b61149e565b34801561069157600080fd5b5061021c6106a0366004612461565b6101026020526000908152604090205460ff1681565b3480156106c257600080fd5b50610106546106d890600160601b900460ff1681565b60405160ff9091168152602001610228565b3480156106f657600080fd5b50610251610705366004612461565b6101086020526000908152604090205481565b34801561072457600080fd5b5061010754610295906001600160a01b031681565b34801561074557600080fd5b506101065461041a906001600160401b031681565b34801561076657600080fd5b506102516107753660046124ab565b61010160209081526000928352604080842090915290825290205481565b34801561079f57600080fd5b506102e26107ae3660046126e1565b611689565b3480156107bf57600080fd5b506102e26107ce3660046124ab565b6116b6565b3480156107df57600080fd5b5061021c6107ee366004612461565b6116d2565b3480156107ff57600080fd5b5061025160fb5481565b34801561081557600080fd5b506101045461041a90600160201b90046001600160401b031681565b60006001600160e01b03198216637965db0b60e01b148061086257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101045460fc54600091829161088e91600160201b90046001600160401b03169061271a565b610107549091506001600160a01b031615610862576101075460405163a3ec138d60e01b81526001600160a01b039091169063a3ec138d906108d490869060040161247e565b6040805180830381865afa92505050801561090c575060408051601f3d908101601f1916820190925261090991810190612731565b60015b156108625760208101516001600160601b0316156109375761092f82600261271a565b949350505050565b5092915050565b600061094933610868565b905090565b600090815260c9602052604090206001015490565b61096c8261094e565b61097581611959565b61097f8383611963565b505050565b6001600160a01b03811633146109f95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a0382826119e9565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a4f5760405162461bcd60e51b81526004016109f09061279b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a81611a50565b6001600160a01b031614610aa75760405162461bcd60e51b81526004016109f0906127d5565b610ab081611a6c565b60408051600080825260208201909252610acc91839190611a77565b50565b6101005460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061280f565b60005a9050816000610b66610acf565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610b91919061247e565b602060405180830381865afa158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd2919061280f565b90506001600160a01b03811615610be95780610beb565b815b60ff54909250610bf9611be2565b8060ff5414610c145761010680546001600160401b03191690555b60ff546001600160a01b038416600090815261010360205260409020546001600160801b039081169116141580610c795750610104546001600160a01b0384166000908152610103602052604090205463ffffffff918216600160801b909104909116105b610cba5760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b60448201526064016109f0565b6001600160a01b0383166000908152610102602052604090205460ff16158015610cfd575061010554610106546001600160401b03600160a01b90920482169116105b80610d1057506001600160a01b03821615155b610d6b5760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b60648201526084016109f0565b6001600160a01b0383166000908152610103602052604090206005015462093a8090610da790600160801b90046001600160801b03164261282c565b10610ddc576001600160a01b038316600090815261010360205260409020426001600160801b0316600160801b026005909101555b6101045460fb54600160601b820463ffffffff1691610e0c91600160201b9091046001600160401b03169061271a565b610e16919061271a565b6001600160a01b038416600090815261010360205260409020600501546001600160801b031610610ea65760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b60648201526084016109f0565b846000610eb1610acf565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610edc919061247e565b602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d919061280f565b6001600160a01b0316141580610f465750610f46600080516020612b7483398151915233611444565b610f835760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b60448201526064016109f0565b6001600160a01b038116600090815261010860205260409020544211610fd45760405162461bcd60e51b815260206004820152600660248201526518985b9b995960d21b60448201526064016109f0565b610fdd86611c03565b505050505a610fec908261282c565b610ff89061a41061283f565b6101045490915033906108fc9061101f90600160201b90046001600160401b03168461271a565b6040518115909202916000818181858888f1935050505015801561097f573d6000803e3d6000fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361108f5760405162461bcd60e51b81526004016109f09061279b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110c1611a50565b6001600160a01b0316146110e75760405162461bcd60e51b81526004016109f0906127d5565b6110f082611a6c565b610a0382826001611a77565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111975760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016109f0565b50600080516020612b5483398151915290565b600054610100900460ff16158080156111ca5750600054600160ff909116105b806111eb57506111d930611f5a565b1580156111eb575060005460ff166001145b61124e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109f0565b6000805460ff191660011790558015611271576000805461ff0019166101001790555b611279611f69565b611284600083611fd6565b6001600160a01b038316156112ab576112ab600080516020612b7483398151915284611fd6565b6101048054600160201b600160601b031916