0 txs
11.7k calls
constructor
constructor()
functions
accruedRewards
viewfunction accruedRewards(address) view returns (uint256[] rewardAmounts)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
assetInfo
purefunction assetInfo() pure returns (uint8 assetType, address assetAddress, uint8 assetDecimals)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
exchangeRate
viewfunction exchangeRate() view returns (uint256)
getAbsoluteSupplyCap
viewfunction getAbsoluteSupplyCap() view returns (uint256)
getAbsoluteTotalSupply
viewfunction getAbsoluteTotalSupply() view returns (uint256)
getRewardTokens
viewfunction getRewardTokens() view returns (address[] rewardTokens)
getTokensIn
viewfunction getTokensIn() view returns (address[] res)
getTokensOut
viewfunction getTokensOut() view returns (address[] res)
isValidTokenIn
viewfunction isValidTokenIn(address token) view returns (bool)
isValidTokenOut
viewfunction isValidTokenOut(address token) view returns (bool)
name
viewfunction name() view returns (string)
ONE_SHARE
viewfunction ONE_SHARE() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
PREMIUM_SHARE_BPS
viewfunction PREMIUM_SHARE_BPS() view returns (uint256)
previewDeposit
viewfunction previewDeposit(address tokenIn, uint256 amountTokenToDeposit) view returns (uint256 amountSharesOut)
previewRedeem
viewfunction previewRedeem(address tokenOut, uint256 amountSharesToRedeem) view returns (uint256 amountTokenOut)
pricingInfo
viewfunction pricingInfo() view returns (address refToken, bool refStrictlyEqual)
rewardIndexesStored
viewfunction rewardIndexesStored() view returns (uint256[] indexes)
shouldAccountForPremium
viewfunction shouldAccountForPremium() view returns (bool)
symbol
viewfunction symbol() view returns (string)
teller
viewfunction teller() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
USDC
viewfunction USDC() view returns (address)
USDE
viewfunction USDE() view returns (address)
USDT
viewfunction USDT() view returns (address)
vedaAccountant
viewfunction vedaAccountant() view returns (address)
vedaTeller
viewfunction vedaTeller() view returns (address)
yieldToken
viewfunction yieldToken() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
claimOwnership
nonpayablefunction claimOwnership()
claimRewards
nonpayablefunction claimRewards(address) returns (uint256[] rewardAmounts)
deposit
payablefunction deposit(address receiver, address tokenIn, uint256 amountTokenToDeposit, uint256 minSharesOut) payable returns (uint256 amountSharesOut)
initialize
nonpayablefunction initialize(string _name, string _symbol, address _owner, uint256 _initialSupplyCap)
initialize
nonpayablefunction initialize(string _name, string _symbol, address _owner)
pause
nonpayablefunction pause()
redeem
nonpayablefunction redeem(address receiver, uint256 amountSharesToRedeem, address tokenOut, uint256 minTokenOut, bool burnFromInternalBalance) returns (uint256 amountTokenOut)
rewardIndexesCurrent
nonpayablefunction rewardIndexesCurrent() returns (uint256[] indexes)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner, bool direct, bool renounce)
unpause
nonpayablefunction unpause()
updateSupplyCap
nonpayablefunction updateSupplyCap(uint256 newSupplyCap)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
ClaimRewards
event ClaimRewards(address indexed user, address[] rewardTokens, uint256[] rewardAmounts)
Deposit
event Deposit(address indexed caller, address indexed receiver, address indexed tokenIn, uint256 amountDeposited, uint256 amountSyOut)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Redeem
event Redeem(address indexed caller, address indexed receiver, address indexed tokenOut, uint256 amountSyToRedeem, uint256 amountTokenOut)
SupplyCapUpdated
event SupplyCapUpdated(uint256 newSupplyCap)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
SupplyCapExceeded
error SupplyCapExceeded(uint256 totalSupply, uint256 supplyCap)
SYInsufficientSharesOut
error SYInsufficientSharesOut(uint256 actualSharesOut, uint256 requiredSharesOut)
SYInsufficientTokenOut
error SYInsufficientTokenOut(uint256 actualTokenOut, uint256 requiredTokenOut)
SYInvalidTokenIn
error SYInvalidTokenIn(address token)
SYInvalidTokenOut
error SYInvalidTokenOut(address token)
SYZeroDeposit
error SYZeroDeposit()
SYZeroRedeem
error SYZeroRedeem()
creation bytecode
0x610140604081815234620002a45763fbfa77cf60e01b825260209173fa9d7d4709716b90cd5013fd88fb17aeedd24bc4908381600481855afa908115620002dc575f91620002ba575b50825163313ce56760e01b815284816004816001600160a01b0386165afa908115620002b0575f916200026e575b5060805260ff19609b5416609b5560a05260015460ff8160a81c166200021a576004918160ff80879460a01c1603620001d8575b508060e052835192838092634fb3ccc560e01b82525afa928315620001ce575f9362000198575b5050610100918252620f424060c052610120905f825251906141fc928362000340843960805183611dba015260a0518381816105bd01528181610f7f015281816115ee0152818161165f0152818161174d0152818161205f0152818161257501528181612d4c01528181613374015281816135dd0152613b5e015260c05183818161114f0152613bf4015260e051838181612508015281816136470152613c7c0152518281816118f001528181611cd10152613bbd0152518181816102620152613c230152f35b620001bd929350803d10620001c6575b620001b48183620002e6565b8101906200031e565b905f80620000d1565b503d620001a8565b82513d5f823e3d90fd5b60ff60a01b191660ff60a01b17600155835160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498908390a15f620000aa565b825162461bcd60e51b815260048101859052602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b90508481813d8311620002a8575b620002888183620002e6565b81010312620002a4575160ff81168103620002a4575f62000076565b5f80fd5b503d6200027c565b84513d5f823e3d90fd5b620002d59150843d8611620001c657620001b48183620002e6565b5f62000048565b83513d5f823e3d90fd5b601f909101601f19168101906001600160401b038211908210176200030a57604052565b634e487b7160e01b5f52604160045260245ffd5b90816020910312620002a457516001600160a01b0381168103620002a4579056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c9081630186533d14612e3d5750806306fdde0314612d7a578063071bc3c914612ce4578063077f224a14612770578063078dfbe7146125ef578063095ea7b3146125a0578063128fced114610dd957806314b3aa0f1461252c57806318160ddd1461153c5780631f9ce93a146124be57806320e8c565146120bd578063213cae6314611fa057806323b872dd14611dde578063313ce56714611d835780633ba0b9a914611c605780633f4ba83a14611b5557806342de081b14611b095780634e71e0c814611a0357806357edab4e146119b75780635c975abb1461197757806370a0823114611914578063741fd13e146118a6578063769f8e5d1461168357806376d5de8514611615578063784367d61461159857806380975cc41461153c5780638456cb591461148d57806389a30271146114415780638da5cb5b146113f15780638ed93fec146113b757806395d89b411461129f578063a40bee5014611246578063a9059cbb14611172578063b7d122b51461111a578063b8f82b2614611077578063c4f59f9b1461102e578063c54e44eb14610fe2578063cbe52ae314610f2d578063da88ecb4146102d6578063dd62ed3e14610eb4578063e30c397814610e63578063e5a97f0714610dde578063ef5cfb8c14610dd9578063f542033f146102db578063f8b2f991146102d6578063fa5a4f061461028b5763fd6dd06e1461022d575f61000f565b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b5f80fd5b346102875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760206102cc6102c7613047565b613330565b6040519015158152f35b613117565b346102875760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760043567ffffffffffffffff81116102875761032a903690600401612fde565b60243567ffffffffffffffff81116102875761034a903690600401612fde565b90610353613024565b6001549160ff8360a81c161592838094610dc9575b8015610dae575b610378906131a1565b83740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff831617600155610d6b575b506103d660ff60015460a81c166103d1816133c5565b6133c5565b805167ffffffffffffffff8111610be557806103f3600554613150565b92601f93848111610cff575b50602090848311600114610c1d575f92610c12575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b83519067ffffffffffffffff8211610be557610464600654613150565b818111610b85575b506020908211600114610ac757819293945f92610abc575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176006555b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600454161760045561055960ff60015460a81c16610515816133c5565b73ffffffffffffffffffffffffffffffffffffffff8093167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f556133c5565b6064356101c8557f4e44c8be34d12f1b7f56b13b4bbe97e64ca37a91916f86c73412da80c21748e260206040516064358152a1604051907fdd62ed3e00000000000000000000000000000000000000000000000000000000908183523060048401527f00000000000000000000000000000000000000000000000000000000000000001680602484015260449273dac17f958d2ee523a2206206994597c13d831ec76020828681845afa9182156108ee575f92610a88575b506b7fffffffffffffffffffffff8092106108f9575b50604051928352306004840152816024840152734c9edd5852cd905f086c759e8383e09bff1e68b3926020818681875afa9081156108ee575f916108bc575b50106106cb575b50505061067657005b7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b604051905f80602084017f095ea7b30000000000000000000000000000000000000000000000000000000094858252846024820152828882015287815261071181612f47565b519082875af161071f613e52565b81610885575b501561082757915f9291838093604051906020820193845260248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8782015286815261077381612f47565b51925af161077f613e52565b816107f0575b501561079257808061066d565b6064907f5361666520417070726f76650000000000000000000000000000000000000000604051917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152600c6024840152820152fd5b8051801592508215610805575b505083610785565b81925090602091810103126102875760206108209101613b35565b83806107fd565b6064847f5361666520417070726f76650000000000000000000000000000000000000000604051917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152600c6024840152820152fd5b805180159250821561089a575b505086610725565b81925090602091810103126102875760206108b59101613b35565b8680610892565b90506020813d6020116108e6575b816108d760209383612f63565b81010312610287575186610666565b3d91506108ca565b6040513d5f823e3d90fd5b6040515f80602083017f095ea7b30000000000000000000000000000000000000000000000000000000093848252876024820152828a82015289815261093e81612f47565b519082865af161094c613e52565b81610a51575b50156109f3575f91829182604051602081019283528760248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a82015289815261099e81612f47565b51925af16109aa613e52565b816109bc575b50156108275785610627565b80518015925082156109d1575b5050866109b0565b81925090602091810103126102875760206109ec9101613b35565b86806109c9565b6064867f5361666520417070726f76650000000000000000000000000000000000000000604051917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152600c6024840152820152fd5b8051801592508215610a66575b505088610952565b8192509060209181010312610287576020610a819101613b35565b8880610a5e565b9091506020813d602011610ab4575b81610aa460209383612f63565b8101031261028757519086610611565b3d9150610a97565b015190508480610484565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169060065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b818110610b6d57509583600195969710610b36575b505050811b016006556104b7565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055848080610b28565b9192602060018192868b015181550194019201610b13565b60065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8280850160051c82019260208610610bdc575b0160051c01905b818110610bd1575061046c565b5f8155600101610bc4565b92508192610bbd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b015190508680610414565b925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f935b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084168510610ce45760019450837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0811610610cad575b505050811b01600555610447565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055868080610c9f565b81810151835560209485019460019093019290910190610c48565b90915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08480850160051c82019260208610610d62575b9085949392910160051c01905b818110610d5457506103ff565b5f8155849350600101610d47565b92508192610d3a565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff16750101000000000000000000000000000000000000000017600155846103bb565b50303b15801561036f575060a081901c60ff1660011461036f565b50600160ff8260a01c1610610368565b6130c8565b346102875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287577f4e44c8be34d12f1b7f56b13b4bbe97e64ca37a91916f86c73412da80c21748e26020600435610e5573ffffffffffffffffffffffffffffffffffffffff5f5416331461322c565b806101c855604051908152a1005b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b346102875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757610eeb613047565b610ef361306a565b9073ffffffffffffffffffffffffffffffffffffffff8091165f52600360205260405f2091165f52602052602060405f2054604051908152f35b346102875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757610f64613047565b73ffffffffffffffffffffffffffffffffffffffff809116907f0000000000000000000000000000000000000000000000000000000000000000168103610fb15760206040516024358152f35b602490604051907f88a505610000000000000000000000000000000000000000000000000000000082526004820152fd5b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602060405173dac17f958d2ee523a2206206994597c13d831ec78152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757611073611067613291565b60405191829182612eda565b0390f35b346102875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576110ae613047565b6110b781613330565b156110d3576110cb60209160243590613b42565b604051908152f35b60249073ffffffffffffffffffffffffffffffffffffffff604051917faeabe718000000000000000000000000000000000000000000000000000000008352166004820152fd5b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287577f01000000000000000000000000000000000000000000000000000000000000006111ca613047565b611233600454916111e160028460f81c14156132b8565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161760045560243590336136bc565b6004541617600455602060405160018152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760606040515f815273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48602082015260066040820152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576040515f6006546112dd81613150565b8084529060209060019081811690811561136f5750600114611316575b6110738561130a81870382612f63565b60405191829182612e76565b60065f90815293507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b83851061135c5750505050810160200161130a826110736112fa565b8054868601840152938201938101611340565b8695506110739693506020925061130a9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010192936112fa565b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760206040516127108152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602060405173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576114dd73ffffffffffffffffffffffffffffffffffffffff5f5416331461322c565b6114e5613f6e565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00609b541617609b557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045416604051908152f35b346102875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760206115d1613047565b73ffffffffffffffffffffffffffffffffffffffff9060405191807f0000000000000000000000000000000000000000000000000000000000000000169116148152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102875760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576116ba613047565b6024356116c5613024565b6064359260843591821515830361028757600454946116ea60028760f81c14156132b8565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9586167f02000000000000000000000000000000000000000000000000000000000000001760045573ffffffffffffffffffffffffffffffffffffffff918216937f0000000000000000000000000000000000000000000000000000000000000000838116860361187557861561184b57848791611797935f1461184157611792833061394a565b613e81565b80851061180a575091602094917f01000000000000000000000000000000000000000000000000000000000000009360405191868352868884015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c60403392a46004541617600455604051908152f35b84604491604051917fbfee4ca000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b611792833361394a565b60046040517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602486604051907f88a505610000000000000000000000000000000000000000000000000000000082526004820152fd5b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875773ffffffffffffffffffffffffffffffffffffffff611960613047565b165f526002602052602060405f2054604051908152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602060ff609b54166040519015158152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602060405173fa9d7d4709716b90cd5013fd88fb17aeedd24bc48152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875760015473ffffffffffffffffffffffffffffffffffffffff90818116803303611aab57805f549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000928316175f5516600155005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576020604051734c9edd5852cd905f086c759e8383e09bff1e68b38152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757611ba573ffffffffffffffffffffffffffffffffffffffff5f5416331461322c565b609b5460ff811615611c02577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016609b557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576040517f282a870000000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156108ee575f91611d51575b5064e8d4a5100090818102918183041490151715611d2457602090604051908152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90506020813d602011611d7b575b81611d6c60209383612f63565b81010312610287575181611d01565b3d9150611d5f565b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102875760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757611e15613047565b611e1d61306a565b60443560045491611e3460028460f81c14156132b8565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161760045573ffffffffffffffffffffffffffffffffffffffff84165f52600360205260405f20335f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103611efe575b5090611233917f0100000000000000000000000000000000000000000000000000000000000000946136bc565b9190818310611f42577f010000000000000000000000000000000000000000000000000000000000000094611f398361123395033383613450565b94509091611ed1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576040516080810181811067ffffffffffffffff821117610be55760405260038152606036602083013773dac17f958d2ee523a2206206994597c13d831ec7612015826133b8565b5280516001101561209057734c9edd5852cd905f086c759e8383e09bff1e68b36040820152805160021015612090576110739073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016606082015260405191829182612eda565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576120ef613047565b6120f761306a565b604490813592606435936004549161211560028460f81c14156132b8565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161760045561216684613330565b1561247757811561244d5773ffffffffffffffffffffffffffffffffffffffff908185169485155f146123e05783340361238257836121a4916135c1565b9680881061234c5750169182156122ee576121bd613f6e565b8086116102875760045481871682821601828111611d2457827fff000000000000000000000000000000000000000000000000000000000000009116911617600455825f52600260205260405f206122168782546136af565b9055825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206040518a8152a360045416936101c8548086116122b9576020877f01000000000000000000000000000000000000000000000000000000000000008888888860405190815285878201527f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d5960403392a417600455604051908152f35b8590604051917f4b344b1100000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b6064857f45524332303a206d696e7420746f20746865207a65726f206164647265737300604051917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601f6024840152820152fd5b878791604051917fbc71f2ba00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b6064877f657468206d69736d617463680000000000000000000000000000000000000000604051917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152600c6024840152820152fd5b6040517f23b872dd00000000000000000000000000000000000000000000000000000000602082015233602482015230888201528460648201526064815260a081019181831067ffffffffffffffff841117610be55761244886926121a49460405289613fd8565b6135c1565b60046040517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b60248473ffffffffffffffffffffffffffffffffffffffff604051917faeabe718000000000000000000000000000000000000000000000000000000008352166004820152fd5b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576040805173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260016020820152f35b346102875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576125e46125da613047565b6024359033613450565b602060405160018152f35b346102875760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757612626613047565b6024358015158103610287576044359081151582036102875773ffffffffffffffffffffffffffffffffffffffff928391612665835f5416331461322c565b1561273f571690811590811591612737575b50156126d957805f549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809216175f55600154166001555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905083612677565b915050167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b346102875760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875767ffffffffffffffff600435818111610287576127c0903690600401612fde565b90602435818111610287576127d9903690600401612fde565b6127e1613024565b9060019283549160ff8360a81c161592838094612cd5575b8015612cbb575b612809906131a1565b83740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8316178755612c79575b5061286060ff865460a81c166103d1816133c5565b8551828111610be557600590806128778354613150565b98601f998a8111612c0e575b506020908a8311600114612b56575f92612b4b575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82891b9260031b1c19161781555b8151928311610be5576128dd600654613150565b90878211612aea575b50506020958211600114612a2e579481929394955f92612a23575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82861b9260031b1c1916176006555b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600454161760045573ffffffffffffffffffffffffffffffffffffffff8354926129a360ff8560a81c166133c5565b167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f556129d157005b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff602092168155604051908152a1005b015190508580612901565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169560065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b888110612ad457508387989795969710612a9d575b505050811b01600655612933565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055858080612a8f565b8183015184559287019260209283019201612a7a565b60065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9088808601821c83019360208710612b42575b01901c019086905b828110612b3757506128e6565b5f8155018690612b2a565b93508293612b22565b015190508980612898565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08a941691855f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0925f5b818110612bf657508411612bbf575b505050811b0181556128c9565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055898080612bb2565b8284015185558c969094019360209384019301612ba3565b909150835f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a808501861c82019260208610612c70575b918b918695949301871c01915b828110612c62575050612883565b5f81558594508b9101612c54565b92508192612c47565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001785558661284b565b50303b158015612800575060a081901c60ff168614612800565b508560ff8260a01c16106127f9565b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028757611073604051612d2181612f2b565b6001815260203681830137612d35816133b8565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016905260405191829182612eda565b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576040515f600554612db881613150565b8084529060209060019081811690811561136f5750600114612de4576110738561130a81870382612f63565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b838510612e2a5750505050810160200161130a826110736112fa565b8054868601840152938201938101612e0e565b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576020906101c8548152f35b6020808252825181830181905293925f5b858110612ec6575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6040809697860101520116010190565b818101830151848201604001528201612e87565b60209060206040818301928281528551809452019301915f5b828110612f01575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101612ef3565b6040810190811067ffffffffffffffff821117610be557604052565b6080810190811067ffffffffffffffff821117610be557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610be557604052565b67ffffffffffffffff8111610be557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561028757803590612ff582612fa4565b926130036040519485612f63565b8284526020838301011161028757815f926020809301838601378301015290565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361028757565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361028757565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361028757565b60209060206040818301928281528551809452019301915f5b8281106130b4575050505090565b8351855293810193928101926001016130a6565b346102875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610287576130ff613047565b5061107361310b613291565b6040519182918261308d565b34610287575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102875761107361310b613291565b90600182811c92168015613197575b602083101461316a57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161315f565b156131a857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b1561323357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6040516020810181811067ffffffffffffffff821117610be5576040525f8152905f368137565b156132bf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b81810292918115918404141715611d2457565b73ffffffffffffffffffffffffffffffffffffffff80911673dac17f958d2ee523a2206206994597c13d831ec7811491821561339a575b821561337257505090565b7f00000000000000000000000000000000000000000000000000000000000000001614919050565b734c9edd5852cd905f086c759e8383e09bff1e68b382149250613367565b8051156120905760200190565b156133cc57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff80911691821561353e57169182156134ba5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526003825260405f20855f5282528060405f2055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b9073ffffffffffffffffffffffffffffffffffffffff809216827f00000000000000000000000000000000000000000000000000000000000000001681146136a9579060646020925f60405195869485937f0efe6a8b000000000000000000000000000000000000000000000000000000008552600485015260248401528160448401527f0000000000000000000000000000000000000000000000000000000000000000165af19081156108ee575f9161367a575090565b90506020813d6020116136a1575b8161369560209383612f63565b81010312610287575190565b3d9150613688565b50905090565b91908201809211611d2457565b9073ffffffffffffffffffffffffffffffffffffffff8083169182156138c65716908115613842578181146137e4576136f3613f6e565b805f52600260205260405f205493808510613760576020817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9261375e97855f52600284520360405f2055845f5260405f206137508282546136af565b9055604051908152a3613dce565b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff81168015613ab15761396f613f6e565b805f52600260205260405f2054838110613a2d578390825f5260026020520360405f20557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081841161028757600454918085168184160390808211611d245761375e955f947fff000000000000000000000000000000000000000000000000000000000000006020937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9516911617600455604051908152a3613dce565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b5190811515820361028757565b73ffffffffffffffffffffffffffffffffffffffff80911691817f0000000000000000000000000000000000000000000000000000000000000000168314613dc85760409081517f820973da0000000000000000000000000000000000000000000000000000000081528460048201526020918282602481887f0000000000000000000000000000000000000000000000000000000000000000165afa918215613dbe575f92613d8d575b50613c19907f00000000000000000000000000000000000000000000000000000000000000009061331d565b8115613d605704937f000000000000000000000000000000000000000000000000000000000000000015613d595760609060248451809681937f41fee44a00000000000000000000000000000000000000000000000000000000835260048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115613d4f575f91613ccf575b50015161271092915061ffff168203828111611d2457613ccb9161331d565b0490565b90506060833d606011613d47575b81613cea60609383612f63565b8101031261028757815192606084019184831067ffffffffffffffff841117610be55783928352613d1a82613b35565b8552613d27818301613b35565b9085015201519161ffff831683036102875761ffff92828201525f613cac565b3d9150613cdd565b82513d5f823e3d90fd5b5050505090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9091508281813d8311613db7575b613da58183612f63565b81010312610287575190613c19613bed565b503d613d9b565b84513d5f823e3d90fd5b91505090565b73ffffffffffffffffffffffffffffffffffffffff1661375e577effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600454166101c854808211613e1b575050565b60449250604051917f4b344b1100000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b3d15613e7c573d90613e6382612fa4565b91613e716040519384612f63565b82523d5f602084013e565b606090565b8215613f695773ffffffffffffffffffffffffffffffffffffffff9081169081613f1d5750505f80809381935af1613eb7613e52565b5015613ebf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b9261375e93604051937fa9059cbb000000000000000000000000000000000000000000000000000000006020860152166024840152604483015260448252613f6482612f47565b613fd8565b505050565b60ff609b5416613f7a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b6040516140429173ffffffffffffffffffffffffffffffffffffffff16613ffe82612f2b565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161403c613e52565b916140fe565b80518281159182156140df575b505090501561405b5750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b838092935001031261028757816140f69101613b35565b80825f61404f565b919290156141795750815115614112575090565b3b1561411b5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561418c5750805190602001fd5b6141c2906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301612e76565b0390fdfea264697066735822122026cb50f3f7b6243998639c4a168c7e04bc783510ce6d861137097b99d94f26f164736f6c63430008180033