0 txs
2 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
authority
viewfunction authority() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxMint
viewfunction maxMint(address) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address) view returns (uint256)
name
viewfunction name() view returns (string)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewUnwrap
viewfunction previewUnwrap(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
previewWrap
viewfunction previewWrap(uint256 vaultShares) view returns (uint256)
rewardsProxy
viewfunction rewardsProxy() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalVaultShares
viewfunction totalVaultShares() view returns (uint256)
vaultShare
viewfunction vaultShare() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
claimRewards
nonpayablefunction claimRewards(bytes data)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256)
initialize
nonpayablefunction initialize(address _asset, address _xusd, address _initAuth)
mint
nonpayablefunction mint(uint256, address) returns (uint256)
redeem
nonpayablefunction redeem(uint256, address, address) returns (uint256)
setAuthority
nonpayablefunction setAuthority(address newAuthority)
setRewardsProxy
nonpayablefunction setRewardsProxy(address newRewardsProxy)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
unwrap
nonpayablefunction unwrap(uint256 shares, address receiver, address owner, uint256 minVaultShares) returns (uint256)
unwrap
nonpayablefunction unwrap(uint256 shares, address receiver, address owner) returns (uint256)
withdraw
nonpayablefunction withdraw(uint256, address, address) returns (uint256)
wrap
nonpayablefunction wrap(uint256 vaultShares, address receiver, uint256 minShares) returns (uint256)
wrap
nonpayablefunction wrap(uint256 vaultShares, address receiver) returns (uint256)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
AuthorityUpdated
event AuthorityUpdated(address authority)
Deposit
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)
Initialized
event Initialized(uint64 version)
RewardsProxyUpdated
event RewardsProxyUpdated(address oldRewardsProxy, address newRewardsProxy)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unwrap
event Unwrap(address indexed caller, address indexed receiver, address indexed owner, uint256 shares, uint256 vaultShares)
Withdraw
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
Wrap
event Wrap(address indexed caller, address indexed receiver, uint256 vaultShares, uint256 shares)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
AddressEmptyCode
error AddressEmptyCode(address target)
ClaimRewardsFailed
error ClaimRewardsFailed()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ERC4626ExceededMaxDeposit
error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max)
ERC4626ExceededMaxMint
error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max)
ERC4626ExceededMaxRedeem
error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max)
ERC4626ExceededMaxWithdraw
error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max)
ERC5143SlippageProtectionFailed
error ERC5143SlippageProtectionFailed()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidInitialization
error InvalidInitialization()
NoRewardsProxy
error NoRewardsProxy()
NotImplemented
error NotImplemented()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405260015f5534801562000014575f80fd5b50620000256200002b60201b60201c565b62000195565b5f6200003c6200012f60201b60201c565b9050805f0160089054906101000a900460ff161562000087576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200012c5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff6040516200012391906200017a565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b620001748162000156565b82525050565b5f6020820190506200018f5f83018462000169565b92915050565b61426c80620001a35f395ff3fe608060405234801561000f575f80fd5b5060043610610246575f3560e01c80637a9e5e4b11610139578063c0c53b8b116100b6578063d905777e1161007a578063d905777e146107d8578063dd62ed3e14610808578063e190febc14610838578063ef8b30f714610854578063fb183a021461088457610246565b8063c0c53b8b146106fc578063c63d75b614610718578063c6e6f59214610748578063ce96cb7714610778578063d01ab8ee146107a857610246565b8063aa9b074e116100fd578063aa9b074e1461061e578063b3d7f6b91461064e578063b460af941461067e578063ba087652146106ae578063bf7e214f146106de57610246565b80637a9e5e4b146105665780638fb360371461058257806394bf804d146105a057806395d89b41146105d0578063a9059cbb146105ee57610246565b8063313ce567116101c7578063621b1b7c1161018b578063621b1b7c1461049a5780636e553f65146104ca57806370a08231146104fa578063728a16111461052a578063732e86fe1461054857610246565b8063313ce567146103ce57806338d52e0f146103ec578063402d267d1461040a578063404b9d811461043a5780634cdad5061461046a57610246565b806313bac8201161020e57806313bac8201461031657806318160ddd1461034657806320b9353b1461036457806323b872dd146103805780632a994166146103b057610246565b806301e1d1141461024a57806306fdde031461026857806307a2d13a14610286578063095ea7b3146102b65780630a28a477146102e6575b5f80fd5b6102526108b4565b60405161025f9190612f13565b60405180910390f35b6102706108ca565b60405161027d9190612fb6565b60405180910390f35b6102a0600480360381019061029b9190613011565b610968565b6040516102ad9190612f13565b60405180910390f35b6102d060048036038101906102cb9190613096565b61097a565b6040516102dd91906130ee565b60405180910390f35b61030060048036038101906102fb9190613011565b61099c565b60405161030d9190612f13565b60405180910390f35b610330600480360381019061032b9190613107565b6109a2565b60405161033d9190612f13565b60405180910390f35b61034e610a6a565b60405161035b9190612f13565b60405180910390f35b61037e60048036038101906103799190613145565b610a81565b005b61039a60048036038101906103959190613170565b610aa5565b6040516103a791906130ee565b60405180910390f35b6103b8610ad3565b6040516103c591906131cf565b60405180910390f35b6103d6610b09565b6040516103e39190613203565b60405180910390f35b6103f4610b95565b60405161040191906131cf565b60405180910390f35b610424600480360381019061041f9190613145565b610bca565b6040516104319190612f13565b60405180910390f35b610454600480360381019061044f9190613011565b610bd0565b6040516104619190612f13565b60405180910390f35b610484600480360381019061047f9190613011565b610be2565b6040516104919190612f13565b60405180910390f35b6104b460048036038101906104af919061321c565b610c11565b6040516104c19190612f13565b60405180910390f35b6104e460048036038101906104df9190613107565b610c66565b6040516104f19190612f13565b60405180910390f35b610514600480360381019061050f9190613145565b610c99565b6040516105219190612f13565b60405180910390f35b610532610cec565b60405161053f9190612f13565b60405180910390f35b610550610d98565b60405161055d91906131cf565b60405180910390f35b610580600480360381019061057b9190613145565b610dcd565b005b61058a610eb7565b60405161059791906132ba565b60405180910390f35b6105ba60048036038101906105b59190613107565b610ef0565b6040516105c79190612f13565b60405180910390f35b6105d8610f23565b6040516105e59190612fb6565b60405180910390f35b61060860048036038101906106039190613096565b610fc1565b60405161061591906130ee565b60405180910390f35b61063860048036038101906106339190613011565b610fe3565b6040516106459190612f13565b60405180910390f35b61066860048036038101906106639190613011565b610ff5565b6040516106759190612f13565b60405180910390f35b610698600480360381019061069391906132d3565b610ffb565b6040516106a59190612f13565b60405180910390f35b6106c860048036038101906106c391906132d3565b61102e565b6040516106d59190612f13565b60405180910390f35b6106e6611061565b6040516106f391906131cf565b60405180910390f35b61071660048036038101906107119190613323565b611096565b005b610732600480360381019061072d9190613145565b61121b565b60405161073f9190612f13565b60405180910390f35b610762600480360381019061075d9190613011565b611221565b60405161076f9190612f13565b60405180910390f35b610792600480360381019061078d9190613145565b611233565b60405161079f9190612f13565b60405180910390f35b6107c260048036038101906107bd9190613373565b611239565b6040516107cf9190612f13565b60405180910390f35b6107f260048036038101906107ed9190613145565b61128c565b6040516107ff9190612f13565b60405180910390f35b610822600480360381019061081d91906133c3565b611292565b60405161082f9190612f13565b60405180910390f35b610852600480360381019061084d919061352d565b611322565b005b61086e60048036038101906108699190613011565b6114e2565b60405161087b9190612f13565b60405180910390f35b61089e600480360381019061089991906132d3565b6114e8565b6040516108ab9190612f13565b60405180910390f35b5f6108c56108c0610a6a565b610968565b905090565b60605f6108d5611605565b90508060030180546108e6906135a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610912906135a1565b801561095d5780601f106109345761010080835404028352916020019161095d565b820191905f5260205f20905b81548152906001019060200180831161094057829003601f168201915b505050505091505090565b5f610973825f61162c565b9050919050565b5f8061098461164c565b9050610991818585611653565b600191505092915050565b5f919050565b5f806109ac61164c565b90505f6109b885610bd0565b90506109ee8230876109c8610d98565b73ffffffffffffffffffffffffffffffffffffffff16611665909392919063ffffffff16565b6109f884826116e7565b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f764bd851d2423ff95fbc9b4db718c64299b808c0948fa9eec41c3b30001aea5e8784604051610a579291906135d1565b60405180910390a3809250505092915050565b5f80610a74611605565b9050806002015491505090565b610a99610a8c61164c565b610a94611766565b611772565b610aa2816118b9565b50565b5f80610aaf61164c565b9050610abc85828561196b565b610ac78585856119fd565b60019150509392505050565b5f80610add611aed565b9050806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f610b12611b14565b610b1a610d98565b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b869190613622565b610b90919061367a565b905090565b5f80610b9f611b18565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f919050565b5f610bdb825f611b3f565b9050919050565b5f808203610bf2575f9050610c0c565b5f610bfd835f611b97565b9050610c0881611bef565b9150505b919050565b5f80610c1e8686866114e8565b905082811015610c5a576040517ff033da7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050949350505050565b5f6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80610ca3611605565b9050805f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b5f80610cf6611aed565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d5391906131cf565b602060405180830381865afa158015610d6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9291906136c2565b91505090565b5f80610da2611aed565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f610dd661164c565b9050610de0611061565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e4f57806040517f068ca9d8000000000000000000000000000000000000000000000000000000008152600401610e4691906131cf565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff163b03610eaa57816040517fc2f31e5e000000000000000000000000000000000000000000000000000000008152600401610ea191906131cf565b60405180910390fd5b610eb382611dd7565b5050565b5f80610ec1611e5e565b9050805f0160149054906101000a900460ff16610ee1575f60e01b610eea565b638fb3603760e01b5b91505090565b5f6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f610f2e611605565b9050806004018054610f3f906135a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6b906135a1565b8015610fb65780601f10610f8d57610100808354040283529160200191610fb6565b820191905f5260205f20905b815481529060010190602001808311610f9957829003601f168201915b505050505091505090565b5f80610fcb61164c565b9050610fd88185856119fd565b600191505092915050565b5f610fee825f611b97565b9050919050565b5f919050565b5f6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061106b611e5e565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f61109f611e85565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156110e75750825b90505f60018367ffffffffffffffff1614801561111a57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611128575080155b1561115f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156111ac576001855f0160086101000a81548160ff0219169083151502179055505b6111b7888888611eac565b8315611211575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516112089190613742565b60405180910390a15b5050505050505050565b5f919050565b5f61122c825f611eec565b9050919050565b5f919050565b5f8061124585856109a2565b905082811015611281576040517ff033da7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809150509392505050565b5f919050565b5f8061129c611605565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b61133a61132d61164c565b611335611766565b611772565b5f611343610ad3565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061139557505f8173ffffffffffffffffffffffffffffffffffffffff163b145b156113cc576040517f9bc021a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8073ffffffffffffffffffffffffffffffffffffffff1663e190febc846040516024016113fa91906137ad565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f8273ffffffffffffffffffffffffffffffffffffffff16826040516114649190613807565b5f60405180830381855af49150503d805f811461149c576040519150601f19603f3d011682016040523d82523d5f602084013e6114a1565b606091505b50509050806114dc576040517f6f1f970c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b5f919050565b5f806114f261164c565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115335761153283828761196b565b5b5f61153d86610fe3565b90506115498487611f0c565b61157b8582611556610d98565b73ffffffffffffffffffffffffffffffffffffffff16611f8b9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddce703dce003cfc0a2d7cddef5f904f35cc1d27200a1b9153a656dc5208a84989856040516115f19291906135d1565b60405180910390a480925050509392505050565b5f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00905090565b5f806116388484611b97565b905061164381611bef565b91505092915050565b5f33905090565b611660838383600161200a565b505050565b6116e1848573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161169a9392919061381d565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121e7565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611757575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161174e91906131cf565b60405180910390fd5b6117625f838361227c565b5050565b365f8036915091509091565b5f61177b611e5e565b90505f806117af61178a611061565b873088885f9060049261179f9392919061385a565b906117aa91906138aa565b6124ab565b91509150816118b1575f8163ffffffff161115611873576001835f0160146101000a81548160ff0219169083151502179055506117ea611061565b73ffffffffffffffffffffffffffffffffffffffff166394c7d7ee8787876040518463ffffffff1660e01b815260040161182693929190613934565b5f604051808303815f87803b15801561183d575f80fd5b505af115801561184f573d5f803e3d5ffd5b505050505f835f0160146101000a81548160ff0219169083151502179055506118b0565b856040517f068ca9d80000000000000000000000000000000000000000000000000000000081526004016118a791906131cf565b60405180910390fd5b5b505050505050565b5f6118c2611aed565b90505f816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082826001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7c001ad9f6bdea5a8ff108ca4cf90c48873c604f3a53fd75300d5710093efcff818460405161195e929190613964565b60405180910390a1505050565b5f6119768484611292565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119f757818110156119e8578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016119df9392919061398b565b60405180910390fd5b6119f684848484035f61200a565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a6d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611a6491906131cf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611add575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611ad491906131cf565b60405180910390fd5b611ae883838361227c565b505050565b5f7f59ff202e9c72f33fbb7c107cbf037f949ff0624b6b8b7e53ab05f0c445903000905090565b5f90565b5f7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00905090565b5f611b8f611b4b611b14565b600a611b579190613aef565b611b5f610a6a565b611b699190613b39565b6001611b73610cec565b611b7d9190613b39565b84866125cc909392919063ffffffff16565b905092915050565b5f611be76001611ba5610cec565b611baf9190613b39565b611bb7611b14565b600a611bc39190613aef565b611bcb610a6a565b611bd59190613b39565b84866125cc909392919063ffffffff16565b905092915050565b5f80611bf9610d98565b73ffffffffffffffffffffffffffffffffffffffff1663146ca5316040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6591906136c2565b90505f611c70610d98565b73ffffffffffffffffffffffffffffffffffffffff166387153eb1600184611c989190613b6c565b6040518263ffffffff1660e01b8152600401611cb49190612f13565b602060405180830381865afa158015611ccf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf391906136c2565b90505f548111611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90613be9565b60405180910390fd5b611d40610d98565b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dac9190613622565b600a611db89190613aef565b8185611dc49190613c07565b611dce9190613c75565b92505050919050565b5f611de0611e5e565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad82604051611e5291906131cf565b60405180910390a15050565b5f7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00905090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611eb4612619565b611ebd82612659565b611ec6836126b1565b611ede611ed16126c5565b611ed9612762565b6127ff565b611ee781612815565b505050565b5f80611ef784612829565b9050611f038184611b3f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7c575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f7391906131cf565b60405180910390fd5b611f87825f8361227c565b5050565b612005838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611fbe929190613ca5565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121e7565b505050565b5f612013611605565b90505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612085575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161207c91906131cf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120f5575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016120ec91906131cf565b60405180910390fd5b82816001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081156121e0578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516121d79190612f13565b60405180910390a35b5050505050565b5f612211828473ffffffffffffffffffffffffffffffffffffffff16612a1190919063ffffffff16565b90505f8151141580156122355750808060200190518101906122339190613cf6565b155b1561227757826040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161226e91906131cf565b60405180910390fd5b505050565b5f612285611605565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122d95781816002015f8282546122cd9190613b39565b925050819055506123ab565b5f815f015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015612364578481846040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161235b9392919061398b565b60405180910390fd5b828103825f015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123f45781816002015f8282540392505081905550612440565b81815f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161249d9190612f13565b60405180910390a350505050565b5f805f808773ffffffffffffffffffffffffffffffffffffffff168787876040516024016124db93929190613d21565b60405160208183030381529060405263b700961360e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161252d9190613807565b5f60405180830381855afa9150503d805f8114612565576040519150601f19603f3d011682016040523d82523d5f602084013e61256a565b606091505b509150915081156125c157604081511061259f57808060200190518101906125929190613d8f565b80945081955050506125c0565b60208151106125bf57808060200190518101906125bc9190613cf6565b93505b5b5b505094509492505050565b5f6125fa6125d983612a26565b80156125f557505f84806125f0576125ef613c48565b5b868809115b612a53565b612605868686612a5e565b61260f9190613b39565b9050949350505050565b612621612b45565b612657576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612661612619565b5f61266a611aed565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6126b9612619565b6126c281612b63565b50565b60606126cf610d98565b73ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015612716573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061273e9190613e6b565b60405160200161274e9190613f12565b604051602081830303815290604052905090565b606061276c610d98565b73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156127b3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906127db9190613e6b565b6040516020016127eb9190613f5d565b604051602081830303815290604052905090565b612807612619565b6128118282612bf5565b5050565b61281d612619565b61282681612c31565b50565b5f80612833610d98565b73ffffffffffffffffffffffffffffffffffffffff1663146ca5316040518163ffffffff1660e01b8152600401602060405180830381865afa15801561287b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061289f91906136c2565b90505f6128aa610d98565b73ffffffffffffffffffffffffffffffffffffffff166387153eb16001846128d29190613b6c565b6040518263ffffffff1660e01b81526004016128ee9190612f13565b602060405180830381865afa158015612909573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292d91906136c2565b90505f548111612972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296990613be9565b60405180910390fd5b8061297b610d98565b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e79190613622565b600a6129f39190613aef565b856129fe9190613c07565b612a089190613c75565b92505050919050565b6060612a1e83835f612c45565b905092915050565b5f60016002836003811115612a3e57612a3d613f82565b5b612a489190613faf565b60ff16149050919050565b5f8115159050919050565b5f8083850290505f8019858709828110838203039150505f8103612a9657838281612a8c57612a8b613c48565b5b0492505050612b3e565b808411612ab757612ab65f8514612aae576011612ab1565b60125b612d10565b5b5f8486880990508281118203915080830392505f855f038616905080860495508084049350600181825f0304019050808302841793505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b5f612b4e611e85565b5f0160089054906101000a900460ff16905090565b612b6b612619565b5f612b74611b18565b90505f80612b8184612d21565b9150915081612b91576012612b93565b805b835f0160146101000a81548160ff021916908360ff16021790555083835f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612bfd612619565b5f612c06611605565b905082816003019081612c199190614167565b5081816004019081612c2b9190614167565b50505050565b612c39612619565b612c4281611dd7565b50565b606081471015612c8e5747826040517fcf479181000000000000000000000000000000000000000000000000000000008152600401612c859291906135d1565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051612cb69190613807565b5f6040518083038185875af1925050503d805f8114612cf0576040519150601f19603f3d011682016040523d82523d5f602084013e612cf5565b606091505b5091509150612d05868383612e2a565b925050509392505050565b634e487b715f52806020526024601cfd5b5f805f808473ffffffffffffffffffffffffffffffffffffffff1660405160240160405160208183030381529060405263313ce56760e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612d949190613807565b5f60405180830381855afa9150503d805f8114612dcc576040519150601f19603f3d011682016040523d82523d5f602084013e612dd1565b606091505b5091509150818015612de557506020815110155b15612e1c575f81806020019051810190612dff91906136c2565b905060ff80168111612e1a5760018194509450505050612e25565b505b5f809350935050505b915091565b606082612e3f57612e3a82612eb7565b612eaf565b5f8251148015612e6557505f8473ffffffffffffffffffffffffffffffffffffffff163b145b15612ea757836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612e9e91906131cf565b60405180910390fd5b819050612eb0565b5b9392505050565b5f81511115612ec95780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f819050919050565b612f0d81612efb565b82525050565b5f602082019050612f265f830184612f04565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f63578082015181840152602081019050612f48565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612f8882612f2c565b612f928185612f36565b9350612fa2818560208601612f46565b612fab81612f6e565b840191505092915050565b5f6020820190508181035f830152612fce8184612f7e565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b612ff081612efb565b8114612ffa575f80fd5b50565b5f8135905061300b81612fe7565b92915050565b5f6020828403121561302657613025612fdf565b5b5f61303384828501612ffd565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130658261303c565b9050919050565b6130758161305b565b811461307f575f80fd5b50565b5f813590506130908161306c565b92915050565b5f80604083850312156130ac576130ab612fdf565b5b5f6130b985828601613082565b92505060206130ca85828601612ffd565b9150509250929050565b5f8115159050919050565b6130e8816130d4565b82525050565b5f6020820190506131015f8301846130df565b92915050565b5f806040838503121561311d5761311c612fdf565b5b5f61312a85828601612ffd565b925050602061313b85828601613082565b9150509250929050565b5f6020828403121561315a57613159612fdf565b5b5f61316784828501613082565b91505092915050565b5f805f6060848603121561318757613186612fdf565b5b5f61319486828701613082565b93505060206131a586828701613082565b92505060406131b686828701612ffd565b9150509250925092565b6131c98161305b565b82525050565b5f6020820190506131e25f8301846131c0565b92915050565b5f60ff82169050919050565b6131fd816131e8565b82525050565b5f6020820190506132165f8301846131f4565b92915050565b5f805f806080858703121561323457613233612fdf565b5b5f61324187828801612ffd565b945050602061325287828801613082565b935050604061326387828801613082565b925050606061327487828801612ffd565b91505092959194509250565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6132b481613280565b82525050565b5f6020820190506132cd5f8301846132ab565b92915050565b5f805f606084860312156132ea576132e9612fdf565b5b5f6132f786828701612ffd565b935050602061330886828701613082565b925050604061331986828701613082565b9150509250925092565b5f805f6060848603121561333a57613339612fdf565b5b5f61334786828701613082565b935050602061335886828701613082565b925050604061336986828701613082565b9150509250925092565b5f805f6060848603121561338a57613389612fdf565b5b5f61339786828701612ffd565b93505060206133a886828701613082565b92505060406133b986828701612ffd565b9150509250925092565b5f80604083850312156133d9576133d8612fdf565b5b5f6133e685828601613082565b92505060206133f785828601613082565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61343f82612f6e565b810181811067ffffffffffffffff8211171561345e5761345d613409565b5b80604052505050565b5f613470612fd6565b905061347c8282613436565b919050565b5f67ffffffffffffffff82111561349b5761349a613409565b5b6134a482612f6e565b9050602081019050919050565b828183375f83830152505050565b5f6134d16134cc84613481565b613467565b9050828152602081018484840111156134ed576134ec613405565b5b6134f88482856134b1565b509392505050565b5f82601f83011261351457613513613401565b5b81356135248482602086016134bf565b91505092915050565b5f6020828403121561354257613541612fdf565b5b5f82013567ffffffffffffffff81111561355f5761355e612fe3565b5b61356b84828501613500565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806135b857607f821691505b6020821081036135cb576135ca613574565b5b50919050565b5f6040820190506135e45f830185612f04565b6135f16020830184612f04565b9392505050565b613601816131e8565b811461360b575f80fd5b50565b5f8151905061361c816135f8565b92915050565b5f6020828403121561363757613636612fdf565b5b5f6136448482850161360e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613684826131e8565b915061368f836131e8565b9250828201905060ff8111156136a8576136a761364d565b5b92915050565b5f815190506136bc81612fe7565b92915050565b5f602082840312156136d7576136d6612fdf565b5b5f6136e4848285016136ae565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f61372c613727613722846136ed565b613709565b6136f6565b9050919050565b61373c81613712565b82525050565b5f6020820190506137555f830184613733565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f61377f8261375b565b6137898185613765565b9350613799818560208601612f46565b6137a281612f6e565b840191505092915050565b5f6020820190508181035f8301526137c58184613775565b905092915050565b5f81905092915050565b5f6137e18261375b565b6137eb81856137cd565b93506137fb818560208601612f46565b80840191505092915050565b5f61381282846137d7565b915081905092915050565b5f6060820190506138305f8301866131c0565b61383d60208301856131c0565b61384a6040830184612f04565b949350505050565b5f80fd5b5f80fd5b5f808585111561386d5761386c613852565b5b8386111561387e5761387d613856565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f82821b905092915050565b5f6138b58383613894565b826138c08135613280565b92506004821015613900576138fb7fffffffff000000000000000000000000000000000000000000000000000000008360040360080261389e565b831692505b505092915050565b5f6139138385613765565b93506139208385846134b1565b61392983612f6e565b840190509392505050565b5f6040820190506139475f8301866131c0565b818103602083015261395a818486613908565b9050949350505050565b5f6040820190506139775f8301856131c0565b61398460208301846131c0565b9392505050565b5f60608201905061399e5f8301866131c0565b6139ab6020830185612f04565b6139b86040830184612f04565b949350505050565b5f8160011c9050919050565b5f808291508390505b6001851115613a15578086048111156139f1576139f061364d565b5b6001851615613a005780820291505b8081029050613a0e856139c0565b94506139d5565b94509492505050565b5f82613a2d5760019050613ae8565b81613a3a575f9050613ae8565b8160018114613a505760028114613a5a57613a89565b6001915050613ae8565b60ff841115613a6c57613a6b61364d565b5b8360020a915084821115613a8357613a8261364d565b5b50613ae8565b5060208310610133831016604e8410600b8410161715613abe5782820a905083811115613ab957613ab861364d565b5b613ae8565b613acb84848460016139cc565b92509050818404811115613ae257613ae161364d565b5b81810290505b9392505050565b5f613af982612efb565b9150613b04836131e8565b9250613b317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613a1e565b905092915050565b5f613b4382612efb565b9150613b4e83612efb565b9250828201905080821115613b6657613b6561364d565b5b92915050565b5f613b7682612efb565b9150613b8183612efb565b9250828203905081811115613b9957613b9861364d565b5b92915050565b7f496e76616c6964206173736574506572536861726500000000000000000000005f82015250565b5f613bd3601583612f36565b9150613bde82613b9f565b602082019050919050565b5f6020820190508181035f830152613c0081613bc7565b9050919050565b5f613c1182612efb565b9150613c1c83612efb565b9250828202613c2a81612efb565b91508282048414831517613c4157613c4061364d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c7f82612efb565b9150613c8a83612efb565b925082613c9a57613c99613c48565b5b828204905092915050565b5f604082019050613cb85f8301856131c0565b613cc56020830184612f04565b9392505050565b613cd5816130d4565b8114613cdf575f80fd5b50565b5f81519050613cf081613ccc565b92915050565b5f60208284031215613d0b57613d0a612fdf565b5b5f613d1884828501613ce2565b91505092915050565b5f606082019050613d345f8301866131c0565b613d4160208301856131c0565b613d4e60408301846132ab565b949350505050565b5f63ffffffff82169050919050565b613d6e81613d56565b8114613d78575f80fd5b50565b5f81519050613d8981613d65565b92915050565b5f8060408385031215613da557613da4612fdf565b5b5f613db285828601613ce2565b9250506020613dc385828601613d7b565b9150509250929050565b5f67ffffffffffffffff821115613de757613de6613409565b5b613df082612f6e565b9050602081019050919050565b5f613e0f613e0a84613dcd565b613467565b905082815260208101848484011115613e2b57613e2a613405565b5b613e36848285612f46565b509392505050565b5f82601f830112613e5257613e51613401565b5b8151613e62848260208601613dfd565b91505092915050565b5f60208284031215613e8057613e7f612fdf565b5b5f82015167ffffffffffffffff811115613e9d57613e9c612fe3565b5b613ea984828501613e3e565b91505092915050565b7f53706563747261204552433436323620577261707065723a2000000000000000815250565b5f81905092915050565b5f613eec82612f2c565b613ef68185613ed8565b9350613f06818560208601612f46565b80840191505092915050565b5f613f1c82613eb2565b601982019150613f2c8284613ee2565b915081905092915050565b7f73772d0000000000000000000000000000000000000000000000000000000000815250565b5f613f6782613f37565b600382019150613f778284613ee2565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f613fb9826131e8565b9150613fc4836131e8565b925082613fd457613fd3613c48565b5b828206905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f6008830261402f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261389e565b614039868361389e565b95508019841693508086168417925050509392505050565b5f61406b61406661406184612efb565b613709565b612efb565b9050919050565b5f819050919050565b61408483614051565b61409861409082614072565b848454614000565b825550505050565b5f90565b6140ac6140a0565b6140b781848461407b565b505050565b5b818110156140da576140cf5f826140a4565b6001810190506140bd565b5050565b601f82111561411f576140f081613fdf565b6140f984613ff1565b81016020851015614108578190505b61411c61411485613ff1565b8301826140bc565b50505b505050565b5f82821c905092915050565b5f61413f5f1984600802614124565b1980831691505092915050565b5f6141578383614130565b9150826002028217905092915050565b61417082612f2c565b67ffffffffffffffff81111561418957614188613409565b5b61419382546135a1565b61419e8282856140de565b5f60209050601f8311600181146141cf575f84156141bd578287015190505b6141c7858261414c565b86555061422e565b601f1984166141dd86613fdf565b5f5b82811015614204578489015182556001820191506020850194506020810190506141df565b86831015614221578489015161421d601f891682614130565b8355505b6001600288020188555050505b50505050505056fea264697066735822122055ef1588c0b7c4bcaa8dfdba869c156834fccb238178649bb2252b6107f0b03b64736f6c63430008140033