UNPKG

@vechain/vebetterdao-contracts

Version:

Vebetter DAO smart contracts, including their addresses, ABIs, and interfaces.

1,384 lines 114 kB
{ "_format": "hh-sol-artifact-1", "contractName": "X2EarnRewardsPool", "sourceName": "contracts/X2EarnRewardsPool.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "admin", "type": "address" } ], "name": "AppPaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "admin", "type": "address" } ], "name": "AppUnpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": true, "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "depositor", "type": "address" } ], "name": "NewDeposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "reason", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "lowLevelData", "type": "bytes" } ], "name": "RegisterActionFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": true, "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "string", "name": "proof", "type": "string" }, { "indexed": true, "internalType": "address", "name": "distributor", "type": "address" } ], "name": "RewardDistributed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": true, "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "string", "name": "metadata", "type": "string" }, { "indexed": true, "internalType": "address", "name": "distributor", "type": "address" } ], "name": "RewardMetadata", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "indexed": false, "internalType": "bool", "name": "enable", "type": "bool" } ], "name": "RewardsPoolBalanceEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "availableFunds", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rewardsPoolBalance", "type": "uint256" } ], "name": "RewardsPoolBalanceUpdated", "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": true, "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "teamWallet", "type": "address" }, { "indexed": false, "internalType": "address", "name": "withdrawer", "type": "address" }, { "indexed": false, "internalType": "string", "name": "reason", "type": "string" } ], "name": "TeamWithdrawal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "CONTRACTS_ADDRESS_MANAGER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "IMPACT_KEY_MANAGER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newKey", "type": "string" } ], "name": "addImpactKey", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "availableFunds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "b3tr", "outputs": [ { "internalType": "contract IB3TR", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string[]", "name": "proofTypes", "type": "string[]" }, { "internalType": "string[]", "name": "proofValues", "type": "string[]" }, { "internalType": "string[]", "name": "impactCodes", "type": "string[]" }, { "internalType": "uint256[]", "name": "impactValues", "type": "uint256[]" }, { "internalType": "string", "name": "description", "type": "string" } ], "name": "buildProof", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "decreaseRewardsPoolBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "deposit", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string", "name": "", "type": "string" } ], "name": "distributeReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string", "name": "proof", "type": "string" } ], "name": "distributeRewardDeprecated", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string[]", "name": "proofTypes", "type": "string[]" }, { "internalType": "string[]", "name": "proofValues", "type": "string[]" }, { "internalType": "string[]", "name": "impactCodes", "type": "string[]" }, { "internalType": "uint256[]", "name": "impactValues", "type": "uint256[]" }, { "internalType": "string", "name": "description", "type": "string" } ], "name": "distributeRewardWithProof", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string[]", "name": "proofTypes", "type": "string[]" }, { "internalType": "string[]", "name": "proofValues", "type": "string[]" }, { "internalType": "string[]", "name": "impactCodes", "type": "string[]" }, { "internalType": "uint256[]", "name": "impactValues", "type": "uint256[]" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "string", "name": "metadata", "type": "string" } ], "name": "distributeRewardWithProofAndMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "enableRewardsPoolForNewApp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAllowedImpactKeys", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "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": "bytes32", "name": "appId", "type": "bytes32" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "increaseRewardsPoolBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_admin", "type": "address" }, { "internalType": "address", "name": "_contractsManagerAdmin", "type": "address" }, { "internalType": "address", "name": "_upgrader", "type": "address" }, { "internalType": "contract IB3TR", "name": "_b3tr", "type": "address" }, { "internalType": "contract IX2EarnApps", "name": "_x2EarnApps", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_impactKeyManager", "type": "address" }, { "internalType": "string[]", "name": "_initialImpactKeys", "type": "string[]" } ], "name": "initializeV2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_veBetterPassport", "type": "address" } ], "name": "initializeV3", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "isDistributionPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "isRewardsPoolEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155BatchReceived", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "pauseDistribution", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "keyToRemove", "type": "string" } ], "name": "removeImpactKey", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "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": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "rewardsPoolBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IVeBetterPassport", "name": "_veBetterPassport", "type": "address" } ], "name": "setVeBetterPassport", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IX2EarnApps", "name": "_x2EarnApps", "type": "address" } ], "name": "setX2EarnApps", "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": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "internalType": "bool", "name": "enable", "type": "bool" } ], "name": "toggleRewardsPoolBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "totalBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "appId", "type": "bytes32" } ], "name": "unpauseDistribution", "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": "veBetterPassport", "outputs": [ { "internalType": "contract IVeBetterPassport", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes32", "name": "appId", "type": "bytes32" }, { "internalType": "string", "name": "reason", "type": "string" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "x2EarnApps", "outputs": [ { "internalType": "contract IX2EarnApps", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516152036200010460003960008181613678015281816136a101526137e901526152036000f3fe6080604052600436106102105760003560e01c806250ea6f146102bd57806301ffc9a7146102e85780630eb11eb8146103185780631459457a1461033a578063150b7a021461035a5780631a25071f14610393578063248a9ca3146103b35780632f2ff15d146103e15780633101cfcb1461040157806333653f5d1461042157806336568abe14610436578063389caa861461045657806340a6fc0b146104765780634879ed08146104965780634f1ef286146104c35780634fd7ff4d146104d657806352d1902d146104f657806354fd4d501461050b578063582a486a1461053557806360dbdd081461054a57806369933c781461056a5780636d63ecab1461058a5780637b924532146105aa57806389bcfa31146105ca5780638a7793b1146105ea5780638e023afe1461060a57806391d148541461062a578063952f21331461064a5780639aaaa3801461066c5780639cb6454f1461068c578063a217fddf146106ae578063a21d5eac146106c3578063ad3cb1cc146106e3578063ae630ec814610714578063b3c93dab14610736578063b51fc44514610756578063b81ddb2e14610776578063bc197c8114610796578063c9630cb0146107b6578063cfe706b3146107d6578063d547741f146107f6578063f23a6e6114610816578063f274433414610836578063f72c0d8b14610856578063f7335f1114610878578063fdbfad9b1461089857610268565b366102685760405162461bcd60e51b815260206004820152602f60248201526000805160206151ae83398151915260448201526e081b9bdd081858d8d95c1d08159155608a1b60648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152603660248201526000805160206151ae833981519152604482015275206e6f74206163636570742063616c6c732f6461746160501b606482015260840161025f565b3480156102c957600080fd5b506102d26108b8565b6040516102df9190613e10565b60405180910390f35b3480156102f457600080fd5b50610308610303366004613e24565b6108d6565b60405190151581526020016102df565b34801561032457600080fd5b50610338610333366004614046565b61090d565b005b34801561034657600080fd5b50610338610355366004614160565b61093f565b34801561036657600080fd5b5061037a6103753660046141d1565b610c9c565b6040516001600160e01b031990911681526020016102df565b34801561039f57600080fd5b506103386103ae36600461423c565b610cf7565b3480156103bf57600080fd5b506103d36103ce36600461423c565b610e69565b6040519081526020016102df565b3480156103ed57600080fd5b506103386103fc366004614255565b610e89565b34801561040d57600080fd5b5061033861041c366004614285565b610eab565b34801561042d57600080fd5b506102d2610f9e565b34801561044257600080fd5b50610338610451366004614255565b610fbc565b34801561046257600080fd5b506103386104713660046142a2565b610ff4565b34801561048257600080fd5b50610338610491366004614285565b6111e0565b3480156104a257600080fd5b506104b66104b13660046142f1565b61124e565b6040516102df9190614412565b6103386104d1366004614425565b6113a6565b3480156104e257600080fd5b506103386104f136600461446a565b6113c5565b34801561050257600080fd5b506103d361162f565b34801561051757600080fd5b506040805180820190915260018152603760f81b60208201526104b6565b34801561054157600080fd5b506102d261164d565b34801561055657600080fd5b506103d361056536600461423c565b611668565b34801561057657600080fd5b5061033861058536600461448c565b611688565b34801561059657600080fd5b506103386105a536600461423c565b6116cf565b3480156105b657600080fd5b506103386105c53660046144d6565b6118a0565b3480156105d657600080fd5b506103386105e53660046145cb565b6118c5565b3480156105f657600080fd5b5061030861060536600461423c565b611926565b34801561061657600080fd5b5061033861062536600461446a565b611949565b34801561063657600080fd5b50610308610645366004614255565b611b55565b34801561065657600080fd5b506103d360008051602061512e83398151915281565b34801561067857600080fd5b50610338610687366004614615565b611b8b565b34801561069857600080fd5b506103d360008051602061510e83398151915281565b3480156106ba57600080fd5b506103d3600081565b3480156106cf57600080fd5b506103386106de36600461423c565b611df8565b3480156106ef57600080fd5b506104b6604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561072057600080fd5b50610729611fd7565b6040516102df919061463a565b34801561074257600080fd5b50610338610751366004614285565b6120bb565b34801561076257600080fd5b506103d361077136600461423c565b612129565b34801561078257600080fd5b5061030861079136600461423c565b612166565b3480156107a257600080fd5b5061037a6107b136600461469c565b612189565b3480156107c257600080fd5b506103086107d136600461446a565b6121fe565b3480156107e257600080fd5b506103386107f13660046146f7565b6123d4565b34801561080257600080fd5b50610338610811366004614255565b612771565b34801561082257600080fd5b5061037a610831366004614746565b61278d565b34801561084257600080fd5b506103d361085136600461423c565b6127e9565b34801561086257600080fd5b506103d360008051602061508e83398151915281565b34801561088457600080fd5b5061033861089336600461448c565b612809565b3480156108a457600080fd5b506103386108b33660046145cb565b61284c565b6000806108c3612a8b565b600501546001600160a01b031692915050565b60006001600160e01b03198216637965db0b60e01b148061090757506301ffc9a760e01b6001600160e01b03198316145b92915050565b61091d8989898989898989612aaf565b61092989898984612b07565b610934898989612b5b565b505050505050505050565b6000610949613084565b805490915060ff600160401b82041615906001600160401b03166000811580156109705750825b90506000826001600160401b0316600114801561098c5750303b155b90508115801561099a575080155b156109b85760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156109e157845460ff60401b1916600160401b1785555b6001600160a01b038a16610a4c5760405162461bcd60e51b815260206004820152602c60248201527f58324561726e52657761726473506f6f6c3a2061646d696e206973207468652060448201526b7a65726f206164647265737360a01b606482015260840161025f565b6001600160a01b038916610ac85760405162461bcd60e51b815260206004820152603e60248201527f58324561726e52657761726473506f6f6c3a20636f6e747261637473206d616e60448201527f616765722061646d696e20697320746865207a65726f20616464726573730000606482015260840161025f565b6001600160a01b038816610b365760405162461bcd60e51b815260206004820152602f60248201527f58324561726e52657761726473506f6f6c3a207570677261646572206973207460448201526e6865207a65726f206164647265737360881b606482015260840161025f565b6001600160a01b038716610ba05760405162461bcd60e51b815260206004820152602b60248201527f58324561726e52657761726473506f6f6c3a206233747220697320746865207a60448201526a65726f206164647265737360a81b606482015260840161025f565b6001600160a01b038616610bc65760405162461bcd60e51b815260040161025f906147ae565b610bce6130a8565b610bd66130a8565b610bde6130b2565b610be960008b6130c2565b50610c0260008051602061508e833981519152896130c2565b50610c1b60008051602061512e8339815191528a6130c2565b506000610c26612a8b565b80546001600160a01b03808b166001600160a01b031992831617835560019092018054928a1692909116919091179055508315610c9057845460ff60401b1916855560405160008051602061506e83398151915290610c87906001906147ff565b60405180910390a15b50505050505050505050565b60405162461bcd60e51b815260206004820152603960248201526000805160206151ae833981519152604482015278206e6f74206163636570742045524337323120746f6b656e7360381b606482015260009060840161025f565b6000610d01612a8b565b60018101549091506001600160a01b03163314610d6b5760405162461bcd60e51b815260206004820152603460248201526000805160206150ce83398151915260448201527308160c91585c9b905c1c1cc818dbdb9d1c9858dd60621b606482015260840161025f565b6000610d75612a8b565b600084815260078201602052604090205490915060ff1615610ddf5760405162461bcd60e51b815260206004820152602f602482015260008051602061502e83398151915260448201526e185b1c9958591e48195b98589b1959608a1b606482015260840161025f565b600083815260088201602052604090205460ff1615610e105760405162461bcd60e51b815260040161025f90614813565b6000838152600782016020908152604091829020805460ff19166001908117909155915191825284917e931d752286e23fcdacca93deeddd7c78cee51157d50c56f09f3a5cc7c14b7791015b60405180910390a2505050565b600080610e74613163565b60009384526020525050604090206001015490565b610e9282610e69565b610e9b81613187565b610ea583836130c2565b50505050565b60036000610eb7613084565b8054909150600160401b900460ff1680610ede575080546001600160401b03808416911610155b15610efc5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556001600160a01b038316610f415760405162461bcd60e51b815260040161025f9061484a565b6000610f4b612a8b565b60050180546001600160a01b0319166001600160a01b03861617905550805460ff60401b1916815560405160008051602061506e83398151915290610f919084906147ff565b60405180910390a1505050565b600080610fa9612a8b565b600101546001600160a01b031692915050565b6001600160a01b0381163314610fe55760405163334bd91960e11b815260040160405180910390fd5b610fef8282613194565b505050565b60026000611000613084565b8054909150600160401b900460ff1680611027575080546001600160401b03808416911610155b156110455760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556001600160a01b0384166110da5760405162461bcd60e51b815260206004820152603760248201527f58324561726e52657761726473506f6f6c3a20696d706163744b65794d616e6160448201527667657220697320746865207a65726f206164647265737360481b606482015260840161025f565b60008351116111415760405162461bcd60e51b815260206004820152602d60248201527f58324561726e52657761726473506f6f6c3a20696e697469616c496d7061637460448201526c4b65797320697320656d70747960981b606482015260840161025f565b61115960008051602061510e833981519152856130c2565b506000611164612a8b565b905060005b84518110156111a757611195858281518110611187576111876148a1565b60200260200101518361320c565b8061119f816148cd565b915050611169565b5050805460ff60401b1916815560405160008051602061506e833981519152906111d29084906147ff565b60405180910390a150505050565b60008051602061512e8339815191526111f881613187565b6001600160a01b03821661121e5760405162461bcd60e51b815260040161025f906147ae565b6000611228612a8b565b60010180546001600160a01b0319166001600160a01b0394909416939093179092555050565b60606000808751118015611263575060008651115b90506000808651118015611278575060008551115b845190915015158215801561128b575081155b156112aa5760405180602001604052806000815250935050505061139d565b604080516c3d913b32b939b4b7b7111d101960991b60208201528151600d818303018152602d90910190915281156113015780866040516020016112ef9291906148e6565b60405160208183030381529060405290505b831561133b5760006113138b8b6132d8565b90508181604051602001611328929190614940565b6040516020818303038152906040529150505b821561137557600061134d89896134b3565b90508181604051602001611362929190614985565b6040516020818303038152906040529150505b8060405160200161138691906149cb565b60408051601f198184030181529190529450505050505b95945050505050565b6113ae61366d565b6113b782613712565b6113c1828261372a565b5050565b60006113cf612a8b565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa15801561141b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143f91906149f0565b61145b5760405162461bcd60e51b815260040161025f90614a0d565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc9061148f9086903390600401614a52565b602060405180830381865afa1580156114ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d091906149f0565b6114ec5760405162461bcd60e51b815260040161025f90614a69565b600083815260068201602052604090205482111561156d5760405162461bcd60e51b815260206004820152603860248201527f58324561726e52657761726473506f6f6c3a2064656372656173696e6720756e604482015277646572207265776172647320706f6f6c2062616c616e636560401b606482015260840161025f565b60008381526007820160205260409020805460ff191660011790556000838152600682016020526040812080548492906115a8908490614aa1565b90915550506000838152600282016020526040812080548492906115cd908490614ab4565b90915550506000838152600282016020908152604080832054600685018352928190205481518681529283019390935281019190915283907f7edf7f16b6ec1a7be78507b450fd1504bc48e72ff18e5b620a6f0fd24717f49d90606001610e5c565b60006116396137de565b506000805160206150ae8339815191525b90565b600080611658612a8b565b546001600160a01b031692915050565b600080611673612a8b565b60009384526006016020525050604090205490565b336001600160a01b0316826001600160a01b0316856000805160206150ee83398151915286856040516116bc929190614ac7565b60405180910390a4610ea5848484612b5b565b60006116d9612a8b565b600181015460405163181efec960e21b8152600481018590529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611725573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174991906149f0565b6117655760405162461bcd60e51b815260040161025f90614a0d565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906117999085903390600401614a52565b602060405180830381865afa1580156117b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117da91906149f0565b6117f65760405162461bcd60e51b815260040161025f90614ae0565b600082815260088201602052604090205460ff1661185a5760405162461bcd60e51b815260206004820152602d602482015260008051602061514e83398151915260448201526c1a5cc81b9bdd081c185d5cd959609a1b606482015260840161025f565b6000828152600882016020526040808220805460ff1916905551339184917f23a8a3a8a84537d60bdd2345bf190d189d31179dbbb1c6aefe29166ad8f6579a9190a35050565b6118b08888888888888888612aaf565b6118bb888888612b5b565b5050505050505050565b60008051602061510e8339815191526118de8133611b55565b1580156118f357506118f1600033611b55565b155b156119105760405162461bcd60e51b815260040161025f90614b23565b600061191a612a8b565b9050610fef838261320c565b600080611931612a8b565b60009384526008016020525050604090205460ff1690565b6000611953612a8b565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c391906149f0565b6119df5760405162461bcd60e51b815260040161025f90614a0d565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc90611a139086903390600401614a52565b602060405180830381865afa158015611a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5491906149f0565b611a705760405162461bcd60e51b815260040161025f90614a69565b6000838152600282016020526040902054821115611af55760405162461bcd60e51b815260206004820152603c60248201527f58324561726e52657761726473506f6f6c3a20696e6372656173696e6720616d60448201527b6f756e74206578636565647320617661696c61626c652066756e647360201b606482015260840161025f565b60008381526007820160205260409020805460ff19166001179055600083815260068201602052604081208054849290611b30908490614ab4565b90915550506000838152600282016020526040812080548492906115cd908490614aa1565b600080611b60613163565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611b95612a8b565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0591906149f0565b611c215760405162461bcd60e51b815260040161025f90614a0d565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc90611c559086903390600401614a52565b602060405180830381865afa158015611c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9691906149f0565b611cb25760405162461bcd60e51b815260040161025f90614a69565b600083815260078201602052604090205482151560ff909116151503611d2c5760405162461bcd60e51b815260206004820152603b602482015260008051602061502e83398151915260448201527a697320616c726561647920696e206465736972656420737461746560281b606482015260840161025f565b600083815260088201602052604090205460ff1615611d5d5760405162461bcd60e51b815260040161025f90614813565b81611da7576000838152600682016020908152604080832054600285019092528220805491929091611d90908490614ab4565b909155505060008381526006820160205260408120555b6000838152600782016020908152604091829020805460ff1916851515908117909155915191825284917e931d752286e23fcdacca93deeddd7c78cee51157d50c56f09f3a5cc7c14b779101610e5c565b6000611e02612a8b565b600181015460405163181efec960e21b8152600481018590529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7291906149f0565b611e8e5760405162461bcd60e51b815260040161025f90614a0d565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc90611ec29085903390600401614a52565b602060405180830381865afa158015611edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0391906149f0565b611f1f5760405162461bcd60e51b815260040161025f90614ae0565b600082815260088201602052604090205460ff1615611f8e5760405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a2061707020616c72656164792070604482015264185d5cd95960da1b606482015260840161025f565b6000828152600882016020526040808220805460ff1916600117905551339184917facca5e415b8aed07cbd321de9d16effb4a77548130d6e3f218adb63b40d53f489190a35050565b60606000611fe3612a8b565b6004810180546040805160208084028201810190925282815293945060009084015b828210156120b157838290600052602060002001805461202490614b8c565b80601f016020809104026020016040519081016040528092919081815260200182805461205090614b8c565b801561209d5780601f106120725761010080835404028352916020019161209d565b820191906000526020600020905b81548152906001019060200180831161208057829003601f168201915b505050505081526020019060010190612005565b5050505091505090565b60008051602061512e8339815191526120d381613187565b6001600160a01b0382166120f95760405162461bcd60e51b815260040161025f9061484a565b6000612103612a8b565b60050180546001600160a01b0319166001600160a01b0394909416939093179092555050565b600080612134612a8b565b6000848152600682016020908152604080832054600285019092529091205491925061215f91614ab4565b9392505050565b600080612171612a8b565b60009384526007016020525050604090205460ff1690565b60405162461bcd60e51b815260206004820152604d60248201526000805160206151ae83398151915260448201527f206e6f7420616363657074206261746368207472616e7366657273206f66204560648201526c52433131353520746f6b656e7360981b608482015260009060a40161025f565b600080612209612a8b565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015612255573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227991906149f0565b6122955760405162461bcd60e51b815260040161025f90614a0d565b6000838152600282016020526040812080548692906122b5908490614ab4565b909155505080546040516323b872dd60e01b8152336004820152306024820152604481018690526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612310573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233491906149f0565b6123935760405162461bcd60e51b815260206004820152602a60248201527f58324561726e52657761726473506f6f6c3a206465706f736974207472616e7360448201526919995c8819985a5b195960b21b606482015260840161025f565b604051848152339084907fb129470ed4a80566812579bd667bb40c9cc246b5470797f9291f8a27cd3d16309060200160405180910390a35060019392505050565b6123dc613827565b60006123e6612a8b565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015612432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245691906149f0565b6124725760405162461bcd60e51b815260040161025f90614a0d565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906124a69086903390600401614a52565b602060405180830381865afa1580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e791906149f0565b6125035760405162461bcd60e51b815260040161025f90614ae0565b60008381526002820160205260409020548411156125675760405162461bcd60e51b815260206004820152602d602482015260008051602061504e83398151915260448201526c66696369656e742066756e647360981b606482015260840161025f565b80546040516370a0823160e01b815285916001600160a01b0316906370a0823190612596903090600401613e10565b602060405180830381865afa1580156125b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d79190614bc6565b10156125f55760405162461bcd60e51b815260040161025f90614bdf565b6001810154604051631772503b60e01b8152600481018590526000916001600160a01b031690631772503b90602401602060405180830381865afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126659190614c30565b905084826002016000868152602001908152602001600020600082825461268c9190614aa1565b9091555050815460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906126c29084908990600401614c4d565b6020604051808303816000875af11580156126e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270591906149f0565b6127215760405162461bcd60e51b815260040161