[ { "inputs": [ { "internalType": "address", "name": "underlying_", "type": "address" }, { "internalType": "contract ComptrollerInterface", "name": "comptroller_", "type": "address" }, { "internalType": "contract InterestRateModel", "name": "interestRateModel_", "type": "address" }, { "internalType": "uint256", "name": "initialExchangeRateMantissa_", "type": "uint256" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "address payable", "name": "admin_", "type": "address" }, { "internalType": "address", "name": "implementation_", "type": "address" }, { "internalType": "address", "name": "kycRegistry_", "type": "address" }, { "internalType": "uint256", "name": "kycRequirementGroup_", "type": "uint256" }, { "internalType": "bytes", "name": "becomeImplementationData", "type": "bytes" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "cashPrior", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "interestAccumulated", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "borrowIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "AccrueInterest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "borrowAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "accountBorrows", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "Borrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "error", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "info", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "detail", "type": "uint256" } ], "name": "Failure", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldRegistry", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newRegistry", "type": "address" } ], "name": "KYCRegistrySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldRequirementGroup", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newRequirementGroup", "type": "uint256" } ], "name": "KYCRequirementGroupSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "liquidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "cTokenCollateral", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "seizeTokens", "type": "uint256" } ], "name": "LiquidateBorrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "mintAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "mintTokens", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "NewAdmin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract ComptrollerInterface", "name": "oldComptroller", "type": "address" }, { "indexed": false, "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } ], "name": "NewComptroller", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldImplementation", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "NewImplementation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract InterestRateModel", "name": "oldInterestRateModel", "type": "address" }, { "indexed": false, "internalType": "contract InterestRateModel", "name": "newInterestRateModel", "type": "address" } ], "name": "NewMarketInterestRateModel", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldPendingAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newPendingAdmin", "type": "address" } ], "name": "NewPendingAdmin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldReserveFactorMantissa", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newReserveFactorMantissa", "type": "uint256" } ], "name": "NewReserveFactor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "redeemAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "redeemTokens", "type": "uint256" } ], "name": "Redeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "payer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "accountBorrows", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "RepayBorrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "benefactor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "addAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalReserves", "type": "uint256" } ], "name": "ReservesAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "admin", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reduceAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalReserves", "type": "uint256" } ], "name": "ReservesReduced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "constant": false, "inputs": [], "name": "_acceptAdmin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "addAmount", "type": "uint256" } ], "name": "_addReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "reduceAmount", "type": "uint256" } ], "name": "_reduceReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } ], "name": "_setComptroller", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "implementation_", "type": "address" }, { "internalType": "bool", "name": "allowResign", "type": "bool" }, { "internalType": "bytes", "name": "becomeImplementationData", "type": "bytes" } ], "name": "_setImplementation", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "contract InterestRateModel", "name": "newInterestRateModel", "type": "address" } ], "name": "_setInterestRateModel", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address payable", "name": "newPendingAdmin", "type": "address" } ], "name": "_setPendingAdmin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "newReserveFactorMantissa", "type": "uint256" } ], "name": "_setReserveFactor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "accrualBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "accrueInterest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "admin", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOfUnderlying", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "borrowAmount", "type": "uint256" } ], "name": "borrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "borrowBalanceCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "borrowBalanceStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "borrowIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "borrowRatePerBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "comptroller", "outputs": [ { "internalType": "contract ComptrollerInterface", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "delegateToImplementation", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "delegateToViewImplementation", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "exchangeRateCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "exchangeRateStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountSnapshot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getCash", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "interestRateModel", "outputs": [ { "internalType": "contract InterestRateModel", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "isCToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "kycRegistry", "outputs": [ { "internalType": "contract IKYCRegistry", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "kycRequirementGroup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "internalType": "contract CTokenInterface", "name": "cTokenCollateral", "type": "address" } ], "name": "liquidateBorrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "mintAmount", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "pendingAdmin", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "redeemTokens", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "redeemAmount", "type": "uint256" } ], "name": "redeemUnderlying", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "repayAmount", "type": "uint256" } ], "name": "repayBorrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "repayAmount", "type": "uint256" } ], "name": "repayBorrowBehalf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "reserveFactorMantissa", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "sanctionsList", "outputs": [ { "internalType": "contract ISanctionsList", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "liquidator", "type": "address" }, { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "seizeTokens", "type": "uint256" } ], "name": "seize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "supplyRatePerBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalBorrows", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "totalBorrowsCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "totalReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "underlying", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620025bf380380620025bf83398181016040526101808110156200003857600080fd5b81516020830151604080850151606086015160808701805193519597949692959194919392820192846401000000008211156200007457600080fd5b9083019060208201858111156200008a57600080fd5b8251640100000000811182820188101715620000a557600080fd5b82525081516020918201929091019080838360005b83811015620000d4578181015183820152602001620000ba565b50505050905090810190601f168015620001025780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012657600080fd5b9083019060208201858111156200013c57600080fd5b82516401000000008111828201881017156200015757600080fd5b82525081516020918201929091019080838360005b83811015620001865781810151838201526020016200016c565b50505050905090810190601f168015620001b45780820380516001836020036101000a031916815260200191505b5060408181526020830151908301516060840151608085015160a086015160c09096018051949893979296919591949193929184640100000000821115620001fb57600080fd5b9083019060208201858111156200021157600080fd5b82516401000000008111828201881017156200022c57600080fd5b82525081516020918201929091019080838360005b838110156200025b57818101518382015260200162000241565b50505050905090810190601f168015620002895780820380516001836020036101000a031916815260200191505b5060405250505033600360016101000a8154816001600160a01b0302191690836001600160a01b0316021790555062000458848d8d8d8d8d8d8d8b8b604051602401808a6001600160a01b03166001600160a01b03168152602001896001600160a01b03166001600160a01b03168152602001886001600160a01b03166001600160a01b0316815260200187815260200180602001806020018660ff1660ff168152602001856001600160a01b03166001600160a01b03168152602001848152602001838103835288818151815260200191508051906020019080838360005b838110156200038357818101518382015260200162000369565b50505050905090810190601f168015620003b15780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b83811015620003e6578181015183820152602001620003cc565b50505050905090810190601f168015620004145780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0390811663503f550360e11b17909152909c50620004a9169a5050505050505050505050565b5062000470846000836001600160e01b036200057016565b5050600380546001600160a01b0390941661010002610100600160a81b0319909416939093179092555062000751975050505050505050565b606060006060846001600160a01b0316846040518082805190602001908083835b60208310620004eb5780518252601f199092019160209182019101620004ca565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146200054d576040519150601f19603f3d011682016040523d82523d6000602084013e62000552565b606091505b5091509150600082141562000568573d60208201fd5b949350505050565b60035461010090046001600160a01b03163314620005c05760405162461bcd60e51b8152600401808060200182810382526039815260200180620025866039913960400191505060405180910390fd5b811562000602576040805160048152602481019091526020810180516001600160e01b0390811663153ab50560e01b179091526200060091906200072716565b505b601480546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693620006d8938693909283926064909201919085019080838360005b838110156200066f57818101518382015260200162000655565b50505050905090810190601f1680156200069d5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116630adccee560e31b179091529093506200072716915050565b50601454604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b6014546060906200074b906001600160a01b0316836001600160e01b03620004a916565b92915050565b611e2580620007616000396000f3fe6080604052600436106102ca5760003560e01c806370a082311161017b578063bd6d894d116100d7578063f2b3abbd11610085578063f2b3abbd14610c83578063f3fdb15a14610cb6578063f5e3c46214610ccb578063f851a44014610d0e578063f8f9da2814610d23578063fca7820b14610d38578063fe9c44ae14610d62576102ca565b8063bd6d894d14610b5c578063c37f68e214610b71578063c5ebeaec14610bca578063db006a7514610bf4578063dd62ed3e14610c1e578063e9c714f214610c59578063ec571c6a14610c6e576102ca565b8063a0712d6811610134578063a0712d6814610a44578063a6afed9514610a6e578063a9059cbb14610a83578063aa5af0fd14610abc578063ae9d70b014610ad1578063b2a02ff114610ae6578063b71d1a0c14610b29576102ca565b806370a082311461097557806373acee98146109a8578063852a12e3146109bd5780638f840ddd146109e757806395d89b41146109fc57806395dd919314610a11576102ca565b80633b1d21a21161022a578063510b751b116101e3578063510b751b14610818578063555bcc401461082d5780635c60da1b146108f75780635fe3b5671461090c578063601a0bf1146109215780636c540baf1461094b5780636f307dc314610960576102ca565b80633b1d21a2146106cb5780633e941010146106e05780634487152f1461070a5780634576b5db146107bb57806347bd3718146107ee5780634b155b9714610803576102ca565b806318160ddd1161028757806318160ddd14610596578063182df0f5146105ab57806323b872dd146105c05780632608f81814610603578063267822471461063c578063313ce5671461066d5780633af9e66914610698576102ca565b806306fdde031461038a5780630933c1ed14610414578063095ea7b3146104c55780630e75270214610512578063173b99041461054e57806317bfdfbc14610563575b34156103075760405162461bcd60e51b8152600401808060200182810382526037815260200180611d816037913960400191505060405180910390fd5b6014546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b505090506040513d6000823e818015610386573d82f35b3d82fd5b34801561039657600080fd5b5061039f610d77565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d95781810151838201526020016103c1565b50505050905090810190601f1680156104065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042057600080fd5b5061039f6004803603602081101561043757600080fd5b810190602081018135600160201b81111561045157600080fd5b82018360208201111561046357600080fd5b803590602001918460018302840111600160201b8311171561048457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e04945050505050565b3480156104d157600080fd5b506104fe600480360360408110156104e857600080fd5b506001600160a01b038135169060200135610e23565b604080519115158252519081900360200190f35b34801561051e57600080fd5b5061053c6004803603602081101561053557600080fd5b5035610e9a565b60408051918252519081900360200190f35b34801561055a57600080fd5b5061053c610f01565b34801561056f57600080fd5b5061053c6004803603602081101561058657600080fd5b50356001600160a01b0316610f07565b3480156105a257600080fd5b5061053c610f59565b3480156105b757600080fd5b5061053c610f5f565b3480156105cc57600080fd5b506104fe600480360360608110156105e357600080fd5b506001600160a01b03813581169160208101359091169060400135610fb6565b34801561060f57600080fd5b5061053c6004803603604081101561062657600080fd5b506001600160a01b038135169060200135611036565b34801561064857600080fd5b5061065161108c565b604080516001600160a01b039092168252519081900360200190f35b34801561067957600080fd5b5061068261109b565b6040805160ff9092168252519081900360200190f35b3480156106a457600080fd5b5061053c600480360360208110156106bb57600080fd5b50356001600160a01b03166110a4565b3480156106d757600080fd5b5061053c6110f6565b3480156106ec57600080fd5b5061053c6004803603602081101561070357600080fd5b503561112e565b34801561071657600080fd5b5061039f6004803603602081101561072d57600080fd5b810190602081018135600160201b81111561074757600080fd5b82018360208201111561075957600080fd5b803590602001918460018302840111600160201b8311171561077a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611175945050505050565b3480156107c757600080fd5b5061053c600480360360208110156107de57600080fd5b50356001600160a01b0316611394565b3480156107fa57600080fd5b5061053c6113e6565b34801561080f57600080fd5b506106516113ec565b34801561082457600080fd5b5061053c6113fb565b34801561083957600080fd5b506108f56004803603606081101561085057600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561088157600080fd5b82018360208201111561089357600080fd5b803590602001918460018302840111600160201b831117156108b457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611401945050505050565b005b34801561090357600080fd5b506106516115a4565b34801561091857600080fd5b506106516115b3565b34801561092d57600080fd5b5061053c6004803603602081101561094457600080fd5b50356115c2565b34801561095757600080fd5b5061053c611609565b34801561096c57600080fd5b5061065161160f565b34801561098157600080fd5b5061053c6004803603602081101561099857600080fd5b50356001600160a01b031661161e565b3480156109b457600080fd5b5061053c611670565b3480156109c957600080fd5b5061053c600480360360208110156109e057600080fd5b50356116a8565b3480156109f357600080fd5b5061053c6116ef565b348015610a0857600080fd5b5061039f6116f5565b348015610a1d57600080fd5b5061053c60048036036020811015610a3457600080fd5b50356001600160a01b031661174d565b348015610a5057600080fd5b5061053c60048036036020811015610a6757600080fd5b503561179f565b348015610a7a57600080fd5b5061053c6117e6565b348015610a8f57600080fd5b506104fe60048036036040811015610aa657600080fd5b506001600160a01b03813516906020013561181e565b348015610ac857600080fd5b5061053c611874565b348015610add57600080fd5b5061053c61187a565b348015610af257600080fd5b5061053c60048036036060811015610b0957600080fd5b506001600160a01b038135811691602081013590911690604001356118b2565b348015610b3557600080fd5b5061053c60048036036020811015610b4c57600080fd5b50356001600160a01b0316611910565b348015610b6857600080fd5b5061053c611962565b348015610b7d57600080fd5b50610ba460048036036020811015610b9457600080fd5b50356001600160a01b031661199a565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610bd657600080fd5b5061053c60048036036020811015610bed57600080fd5b5035611a2c565b348015610c0057600080fd5b5061053c60048036036020811015610c1757600080fd5b5035611a73565b348015610c2a57600080fd5b5061053c60048036036040811015610c4157600080fd5b506001600160a01b0381358116916020013516611aba565b348015610c6557600080fd5b5061053c611b14565b348015610c7a57600080fd5b50610651611b4c565b348015610c8f57600080fd5b5061053c60048036036020811015610ca657600080fd5b50356001600160a01b0316611b64565b348015610cc257600080fd5b50610651611bb6565b348015610cd757600080fd5b5061053c60048036036060811015610cee57600080fd5b506001600160a01b03813581169160208101359160409091013516611bc5565b348015610d1a57600080fd5b50610651611c26565b348015610d2f57600080fd5b5061053c611c3a565b348015610d4457600080fd5b5061053c60048036036020811015610d5b57600080fd5b5035611c72565b348015610d6e57600080fd5b506104fe611cb9565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610dfc5780601f10610dd157610100808354040283529160200191610dfc565b820191906000526020600020905b815481529060010190602001808311610ddf57829003601f168201915b505050505081565b601454606090610e1d906001600160a01b031683611cbe565b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052600090606090610e7990610e04565b9050808060200190516020811015610e9057600080fd5b5051949350505050565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663073a938160e11b179052600090606090610ee190610e04565b9050808060200190516020811015610ef857600080fd5b50519392505050565b60085481565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166305eff7ef60e21b179052600090606090610ee190610e04565b600d5481565b6040805160048152602481019091526020810180516001600160e01b031663182df0f560e01b179052600090606090610f9790611175565b9050808060200190516020811015610fae57600080fd5b505191505090565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905260009060609061101490610e04565b905080806020019051602081101561102b57600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b03166304c11f0360e31b179052600090606090610e7990610e04565b6004546001600160a01b031681565b60035460ff1681565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b0316633af9e66960e01b179052600090606090610ee190610e04565b6040805160048152602481019091526020810180516001600160e01b0316631d8e90d160e11b179052600090606090610f9790611175565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b03166303e9410160e41b179052600090606090610ee190610e04565b606060006060306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b838110156111c65781810151838201526020016111ae565b50505050905090810190601f1680156111f35780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b6020831061124e5780518252601f19909201916020918201910161122f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146112ae576040519150601f19603f3d011682016040523d82523d6000602084013e6112b3565b606091505b509150915060008214156112c8573d60208201fd5b8080602001905160208110156112dd57600080fd5b8101908080516040519392919084600160201b8211156112fc57600080fd5b90830190602082018581111561131157600080fd5b8251600160201b81118282018810171561132a57600080fd5b82525081516020918201929091019080838360005b8381101561135757818101518382015260200161133f565b50505050905090810190601f1680156113845780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b0316634576b5db60e01b179052600090606090610ee190610e04565b600b5481565b6011546001600160a01b031681565b60125481565b60035461010090046001600160a01b0316331461144f5760405162461bcd60e51b8152600401808060200182810382526039815260200180611db86039913960400191505060405180910390fd5b8115611489576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b17905261148790610e04565b505b601480546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693611555938693909283926064909201919085019080838360005b838110156114f35781810151838201526020016114db565b50505050905090810190601f1680156115205780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b1790529250610e04915050565b50601454604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b6014546001600160a01b031681565b6005546001600160a01b031681565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663601a0bf160e01b179052600090606090610ee190610e04565b60095481565b6013546001600160a01b031681565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166370a0823160e01b179052600090606090610ee190611175565b6040805160048152602481019091526020810180516001600160e01b0316630e759dd360e31b179052600090606090610f9790610e04565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663852a12e360e01b179052600090606090610ee190610e04565b600c5481565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610dfc5780601f10610dd157610100808354040283529160200191610dfc565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166395dd919360e01b179052600090606090610ee190611175565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663140e25ad60e31b179052600090606090610ee190610e04565b6040805160048152602481019091526020810180516001600160e01b031663a6afed9560e01b179052600090606090610f9790610e04565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052600090606090610e7990610e04565b600a5481565b6040805160048152602481019091526020810180516001600160e01b0316630ae9d70b60e41b179052600090606090610f9790611175565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b031663b2a02ff160e01b17905260009060609061101490610e04565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b0316632dc7468360e21b179052600090606090610ee190610e04565b6040805160048152602481019091526020810180516001600160e01b031663bd6d894d60e01b179052600090606090610f9790610e04565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166361bfb47160e11b1790526000908190819081906060906119f290611175565b9050808060200190516080811015611a0957600080fd5b508051602082015160408301516060909301519199909850919650945092505050565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663317afabb60e21b179052600090606090610ee190610e04565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663db006a7560e01b179052600090606090610ee190610e04565b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316636eb1769f60e11b179052600090606090610e7990611175565b6040805160048152602481019091526020810180516001600160e01b03166374e38a7960e11b179052600090606090610f9790610e04565b7340c57923924b5c5c5455c48d93317139addac8fb81565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b031663f2b3abbd60e01b179052600090606090610ee190610e04565b6006546001600160a01b031681565b604080516001600160a01b0380861660248301526044820185905283166064808301919091528251808303909101815260849091019091526020810180516001600160e01b0316637af1e23160e11b17905260009060609061101490610e04565b60035461010090046001600160a01b031681565b6040805160048152602481019091526020810180516001600160e01b0316631f1f3b4560e31b179052600090606090610f9790611175565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663fca7820b60e01b179052600090606090610ee190610e04565b600181565b606060006060846001600160a01b0316846040518082805190602001908083835b60208310611cfe5780518252601f199092019160209182019101611cdf565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611d5e576040519150601f19603f3d011682016040523d82523d6000602084013e611d63565b606091505b50915091506000821415611d78573d60208201fd5b94935050505056fe43457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b43457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696ea265627a7a723158200a17f5e710da965a447925e4b643c0c63cc13c9d195998b5e30ffb927be64da064736f6c6343000511003243457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696e000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000095af143a021df745bc78e845b54591c53a8b3a51000000000000000000000000fd3ffbb58bc27406bbe51918be3c6b2e483805700000000000000000000000000000000000000000000000000000b5e620f48000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000080000000000000000000000002c5898da4df1d45eab2b7b192a361c3b9eb18d9c000000000000000000000000b521dcf5b12e878811e079c2159ec56d5edafbc50000000000000000000000007ce91291846502d50d635163135b2d40a602dc70000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000009466c757820555344430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000566555344430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0xa265627a7a723158200a17f5e710da965a447925e4b643c0c63cc13c9d195998b5e30ffb927be64da064736f6c6343000511003243457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696e000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000095af143a021df745bc78e845b54591c53a8b3a51000000000000000000000000fd3ffbb58bc27406bbe51918be3c6b2e483805700000000000000000000000000000000000000000000000000000b5e620f48000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000080000000000000000000000002c5898da4df1d45eab2b7b192a361c3b9eb18d9c000000000000000000000000b521dcf5b12e878811e079c2159ec56d5edafbc50000000000000000000000007ce91291846502d50d635163135b2d40a602dc70000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000009466c757820555344430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000566555344430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000