0 txs
0 calls
constructor
No constructor.
functions
collateralToken
viewfunction collateralToken() view returns (address)
eToken
viewfunction eToken() view returns (address)
feeCollector
viewfunction feeCollector() view returns (address)
governor
viewfunction governor() view returns (address)
isActive
viewfunction isActive() view returns (bool)
isReservedToken
viewfunction isReservedToken(address token_) view returns (bool)
keepers
viewfunction keepers() view returns (address[])
lendingPool
viewfunction lendingPool() view returns (address)
NAME
viewfunction NAME() view returns (string)
pool
viewfunction pool() view returns (address)
poolAccountant
viewfunction poolAccountant() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
receiptToken
viewfunction receiptToken() view returns (address)
reserveId
viewfunction reserveId() view returns (uint256)
rewardTokens
viewfunction rewardTokens() view returns (address[])
staking
viewfunction staking() view returns (address)
swapper
viewfunction swapper() view returns (address)
tvl
viewfunction tvl() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
VERSION
purefunction VERSION() pure returns (string)
addKeeper
nonpayablefunction addKeeper(address keeperAddress_)
approveToken
nonpayablefunction approveToken(uint256 approvalAmount_)
claimAndSwapRewards
nonpayablefunction claimAndSwapRewards(uint256 minAmountOut_) returns (uint256 _amountOut)
initialize
nonpayablefunction initialize(address pool_, address swapper_, address lendingPool_, uint256 reserveId_, string name_)
migrateReserve
nonpayablefunction migrateReserve(uint256 newReserveId_, uint256 claimAmountOutMin_)
rebalance
nonpayablefunction rebalance(uint256 _minProfit, uint256 _maxLoss) returns (uint256 _profit, uint256 _loss, uint256 _payback)
refetchRewardTokens
nonpayablefunction refetchRewardTokens(uint256 claimAmountOutMin_)
removeKeeper
nonpayablefunction removeKeeper(address keeperAddress_)
swapToCollateral
nonpayablefunction swapToCollateral(address tokenIn_, uint256 minAmountOut_) returns (uint256 _amountOut)
sweep
nonpayablefunction sweep(address fromToken_)
updateFeeCollector
nonpayablefunction updateFeeCollector(address feeCollector_)
updateSwapper
nonpayablefunction updateSwapper(address swapper_)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(uint256 amount_)
events
Initialized
event Initialized(uint64 version)
UpdatedFeeCollector
event UpdatedFeeCollector(address oldFeeCollector, address newFeeCollector)
UpdatedSwapper
event UpdatedSwapper(address oldSwapper, address newSwapper)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressIsNull
error AddressIsNull()
CanNotSweepToken
error CanNotSweepToken()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
FeeCollectorNotSet
error FeeCollectorNotSet()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidInitialization
error InvalidInitialization()
InvalidLendingPool
error InvalidLendingPool()
InvalidReserve
error InvalidReserve()
InvalidStrategy
error InvalidStrategy()
NotEnoughAmountOut
error NotEnoughAmountOut()
NotEnoughProfit
error NotEnoughProfit(uint256)
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SlippageTooHigh
error SlippageTooHigh()
TooMuchLoss
error TooMuchLoss(uint256)
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0806040523460c857306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1660b957506001600160401b036002600160401b0319828216016075575b604051613a0d90816100ce823960805181818161190f01526119da0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880806056565b63f92ee8a960e01b8152600490fd5b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c806301681a62146121585780630c340a241461212c5780631026013a1461201b57806314ae9f2e14611fd157806316f0115b14611fac57806322f3e2d414611ef75780632b3297f914611ed25780632e1a7d4d14611da35780633ac9fc1114611c835780634032b72b14611c39578063440d724814611c0b5780634cf088d914611be65780634f1ef2861461198957806352d1902d146118f45780636557ef671461174a5780636cfa2a8214611293578063951dc22c14611230578063953d9cf1146109ad578063a3f4df7e14611169578063a59a997314611146578063ad3cb1cc146110f0578063b2016bd4146110c3578063c12d636b14611023578063c2b18aa014610ff0578063c415b95c14610fcb578063d2c35ce814610f2e578063d3033c3914610e8f578063df8879b814610aa1578063e5328e0614610a04578063ea8d1f0a146109dd578063ec78e832146109ad578063ee330ee31461059d578063fa24c171146101ef5763ffa1ad741461019357600080fd5b346101ec57806003193601126101ec576101e86040516101b28161233c565b600581527f362e302e3000000000000000000000000000000000000000000000000000000060208201526040519182918261242e565b0390f35b80fd5b50346101ec576101fe36612477565b906001600160a01b03806102106124ac565b1633036105735780610220612629565b541692604051926370a0823160e01b9182855230600486015260209485816024818a5afa90811561043f578891610546575b5061025b61271a565b6040519084825230600483015286826024818b5afa801561053b57899061050c575b6102879250612512565b106104e25785836001610298612ce4565b015416604051908482523060048301528682602481845afa9182156103ca5783926104b0575b508161044a575b505050826102d1612ce4565b541660248560036102e0612ce4565b01549560026102ed612ce4565b015416604051928380928882523060048301525afa801561043f578691899161040e575b50604051631a42a82760e31b815260048101969096526024860152306044860152600060648601528480608481015b03818a855af19384156104035785946103d5575b509061035f91612e87565b610367612bed565b60246040518095819382523060048301525afa9081156103ca578391610395575b8361039283613494565b80f35b905081813d83116103c3575b6103ab8183612374565b810103126103be57610392905138610388565b600080fd5b503d6103a1565b6040513d85823e3d90fd5b849192943d83116103fc575b6103eb8183612374565b810103126103be5791839238610354565b503d6103e1565b6040513d89823e3d90fd5b82819392503d8311610438575b6104258183612374565b810103126103be57518590610340610311565b503d61041b565b6040513d8a823e3d90fd5b803b156104ac57604051627b8a6760e11b8152600481019290925230602483015282908290604490829084905af180156104a157610489575b806102c5565b610492906122f6565b61049d578538610483565b8580fd5b6040513d84823e3d90fd5b8280fd5b925090508582813d81116104db575b6104c98183612374565b810103126103be5787915190386102be565b503d6104bf565b60046040517f850c6f76000000000000000000000000000000000000000000000000000000008152fd5b508682813d8311610534575b6105228183612374565b810103126103be57610287915161027d565b503d610518565b6040513d8b823e3d90fd5b90508581813d831161056c575b61055d8183612374565b810103126103be575138610252565b503d610553565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b50346101ec5760403660031901126101ec576001600160a01b03906004358281168082036104ac576024926105ed60056105d5612629565b01339060019160005201602052604060002054151590565b15610573576105fa612629565b92856004818654169501541690848414801561099e575b61097457604051936370a0823160e01b9283865230600487015260209889878a818b5afa96871561096957869761093a575b50604051918583523060048401528a838b81875afa92831561040357908b9695949392918893610909575b5082610718575b5050505050856040518096819382523060048301525afa90811561070c57906106dd575b6106a39250612512565b903581106106b357604051908152f35b60046040517f8edbf6d8000000000000000000000000000000000000000000000000000000008152fd5b508382813d8311610705575b6106f38183612374565b810103126103be576106a39151610699565b503d6106e9565b604051903d90823e3d90fd5b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03821660248201529596509394929391929091908b81604481885afa90811561043f57908c959493929189916108d6575b50956107e696841161082d575b50506004610795612629565b0154604051636ccb2b0160e01b81526001600160a01b039485166004820152938a166024850152604484019290925260016064840152306084840152919384929091169082908790829060a4820190565b03925af180156103ca57908791610804575b80808080959495610675565b813d8311610826575b6108178183612374565b810103126103be5785386107f8565b503d61080d565b604051908c87830188600063095ea7b360e01b928381528785880152811960448801526044875261085d87612358565b86519082875af16000513d826108ba575b50501561087e575b505050610789565b6108b0946108ab92604051928b84015282015260006044820152604481526108a581612358565b8261363e565b61363e565b3880808c81610876565b9091506108ce5750873b15155b388061086e565b6001146108c7565b86819792503d8311610902575b6108ed8183612374565b810103126103be5793518b94906107e661077c565b503d6108e3565b8781989294503d8311610933575b6109218183612374565b810103126103be578a9551913861066e565b503d610917565b9096508981813d8311610962575b6109528183612374565b810103126103be57519538610643565b503d610948565b6040513d88823e3d90fd5b60046040517fb92ab523000000000000000000000000000000000000000000000000000000008152fd5b506109a884612535565b610611565b50346101ec57806003193601126101ec5760206001600160a01b0360026109d2612ce4565b015416604051908152f35b50346101ec57806003193601126101ec57602060036109fa612ce4565b0154604051908152f35b50346101ec57806003193601126101ec57602460206001600160a01b03610a29612629565b5416604051928380926370a0823160e01b82523060048301525afa91821561070c5791610a6d575b6020610a6583610a5f613194565b9061261c565b604051908152f35b90506020813d602011610a99575b81610a8860209383612374565b810103126103be5751610a65610a51565b3d9150610a7b565b50346101ec57610ab036612477565b9190610abf60056105d5612629565b1561057357819082936001600160a01b0391826001610adc612629565b01541694604051907fd53ddc260000000000000000000000000000000000000000000000000000000082523060048301526020602495818488818c5afa9384156103ca578394610e60575b50604051907f9f2b2833000000000000000000000000000000000000000000000000000000008252306004830152828289818d5afa918215610d5c578492610e31575b50610b73612629565b541693604051906370a0823160e01b9283835230600484015284838b818a5afa928315610969578693610e02575b50829a610bb5610baf613194565b8561261c565b9082821115610df0575090610bc991612512565b915b610bd5828461261c565b818111610d75575b5050898118818b100218988980821115610d6b57610bfa91612512565b8180821091180218985b803b15610d67576040517f05bed046000000000000000000000000000000000000000000000000000000008152600481018b9052602481018c9052604481018a90529084908290606490829084905af18015610d5c57610d49575b508190876040518096819382523060048301525afa91821561070c5791610d19575b50610c8c9150613494565b8410610ce9578411610cba57506101e890604051938493846040919493926060820195825260208201520152565b83604051907fbfa80dbe0000000000000000000000000000000000000000000000000000000082526004820152fd5b5082604051907fcc71aff40000000000000000000000000000000000000000000000000000000082526004820152fd5b905081813d8311610d42575b610d2f8183612374565b810103126103be57610c8c905138610c81565b503d610d25565b92610d558392946122f6565b9290610c5f565b6040513d86823e3d90fd5b8380fd5b5050508298610c04565b610d8a929b5090610d8591612512565b612883565b60405182815230600482015283818a81895afa908115610de5578591610db4575b50983880610bdd565b90508381813d8311610dde575b610dcb8183612374565b81010312610dda575138610dab565b8480fd5b503d610dc1565b6040513d87823e3d90fd5b939d50610dfc91612512565b9b610bcb565b9092508481813d8311610e2a575b610e1a8183612374565b8101031261049d57519138610ba1565b503d610e10565b9091508281813d8311610e59575b610e498183612374565b81010312610d6757519038610b6a565b503d610e3f565b9093508181813d8311610e88575b610e788183612374565b810103126104ac57519238610b27565b503d610e6e565b50346101ec5760203660031901126101ec576004356001600160a01b03908181168091036104ac5781610ec06124ac565b163303610573578015610f1d576001600160a01b03196004610ee0612629565b01927f6c953b7ec311055c20b96a42cea31e89528e375b1bf953a503db40854b3188fe604085549281519084168152856020820152a11617905580f35b600460405163fb7566d760e01b8152fd5b50346101ec5760203660031901126101ec57610f486122e0565b6001600160a01b0380610f596124ac565b16330361057357808216908115610f1d576001600160a01b0319907f0f06062680f9bd68e786e9980d9bb03d73d5620fc3b345e417b6eacb310b97066003610f9f612629565b018054604080519482166001600160a01b03908116865297909716602085015290959092a11617905580f35b50346101ec57806003193601126101ec5760206001600160a01b0360036109d2612629565b50346101ec57806003193601126101ec576101e86110176004611011612ce4565b016125c0565b604051918291826123e9565b50346101ec57806003193601126101ec5760046001600160a01b03602081600161104b612629565b015416604051938480927fc12d636b0000000000000000000000000000000000000000000000000000000082525afa9182156103ca5760209392611094575b5060405191168152f35b6110b5919250833d85116110bc575b6110ad8183612374565b81019061248d565b903861108a565b503d6110a3565b50346101ec57806003193601126101ec5760206001600160a01b036110e6612629565b5416604051908152f35b50346101ec57806003193601126101ec576101e86040516111108161233c565b600581527f352e302e3000000000000000000000000000000000000000000000000000000060208201526040519182918261242e565b50346101ec57806003193601126101ec5760206001600160a01b036110e6612ce4565b50346101ec57806003193601126101ec576007611184612629565b016040519082815461119581612586565b9182855260209360019260018116908160001461120c57506001146111d1575b6101e8866111c5818a0382612374565b6040519182918261242e565b9080949650528483205b8284106111f957505050816101e8936111c5928201019338806111b5565b80548585018701529285019281016111db565b60ff19168787015250505050151560051b82010191506111c5816101e838806111b5565b50346101ec57806003193601126101ec57600561124b612629565b604051910180548083529083526020808420818401949092915b82821061127c576101e88561101781890382612374565b835486529485019460019384019390910190611265565b50346101ec5760a03660031901126101ec576112ad6122e0565b6024356001600160a01b03811681036104ac576001600160a01b0360443516604435036104ac5760843567ffffffffffffffff8111610d675736602382011215610d67576113059036906024816004013591016123b2565b917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009283549267ffffffffffffffff84168015908161173a575b6001149081611730575b159081611727575b506116fd57600167ffffffffffffffff19851617855560ff8460401c16156116de575b61137c61391f565b61138461391f565b6001600160a01b0383161580156116cd575b80156116c6575b610f1d576113a9612629565b92600184016001600160a01b0382166001600160a01b03198254161790556040517ffc0c546a0000000000000000000000000000000000000000000000000000000081526020816004816001600160a01b0386165afa90811561043f578891611679575b506001600160a01b039182602092166001600160a01b03198754161786556002860160016001600160a01b031982541617905560046040518094819363030d028960e21b8352165afa90811561040357879161165a575b506001600160a01b036003850191166001600160a01b03198254161790556001600160a01b036004840191166001600160a01b0319825416179055600782019080519067ffffffffffffffff8211611646576114c08354612586565b601f811161160b575b50602090601f83116001146115a25761150694939291889183611597575b50508160011b916000199060031b1c19161790555b60053391016138c3565b506001600160a01b036044351615610f1d5760ff90611523612ce4565b6001600160a01b03604435166001600160a01b031982541617905561154c606435604435612e87565b60401c1615611559575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b0151905038806114e7565b838852602088209190601f198416895b8181106115f3575091600193918561150698979694106115da575b505050811b0190556114fc565b015160001960f88460031b161c191690553880806115cd565b929360206001819287860151815501950193016115b2565b6116369084895260208920601f850160051c8101916020861061163c575b601f0160051c019061256f565b386114c9565b9091508190611629565b602487634e487b7160e01b81526041600452fd5b611673915060203d6020116110bc576110ad8183612374565b38611464565b90506020813d6020116116be575b8161169460209383612374565b810103126116ba57516001600160a01b03811681036116ba576001600160a01b0361140d565b8780fd5b3d9150611687565b508561139d565b506001600160a01b03811615611396565b68ffffffffffffffffff19841668010000000000000001178555611374565b60046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538611351565b303b159150611349565b604086901c60ff1615915061133f565b50346101ec576020806003193601126118f0576001600160a01b03908161176f6124ac565b163303610573578161177f612629565b54166040516370a0823160e01b908181523060048201528381602481865afa91821561096957849187936118bf575b506117b761271a565b60246040518095819382523060048301525afa918215610de557859261188e575b506117e69060043592612512565b106104e2576117f3612d33565b9160046117fe612ce4565b019183519367ffffffffffffffff851161187a5768010000000000000000851161187a5781908454868655808710611860575b500192855280852091855b85811061184c5786610392612bed565b84518216848201559382019360010161183c565b85885282882061187491810190880161256f565b38611831565b602486634e487b7160e01b81526041600452fd5b9091508281813d83116118b8575b6118a68183612374565b81010312610dda5751906117e66117d8565b503d61189c565b8281939294503d83116118e9575b6118d78183612374565b8101031261049d5783905191386117ae565b503d6118cd565b5080fd5b50346101ec57806003193601126101ec576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361195f5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60046040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b5060403660031901126101ec5761199e6122e0565b60243567ffffffffffffffff81116104ac57366023820112156104ac576119cf9036906024816004013591016123b2565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016803014908115611bb8575b5061195f5780611a136124ac565b163303610573578216916040517f52d1902d000000000000000000000000000000000000000000000000000000008152602081600481875afa859181611b84575b50611a715760248460405190634c9c8ce360e01b82526004820152fd5b9284937f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90818103611b535750823b15611b3b5780546001600160a01b0319168217905560405184917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2835115611b06575080836020611b0295519101845af4611afc6126c0565b91613978565b5080f35b9250505034611b13575080f35b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b60248260405190634c9c8ce360e01b82526004820152fd5b602490604051907faa1d49a40000000000000000000000000000000000000000000000000000000082526004820152fd5b9091506020813d602011611bb0575b81611ba060209383612374565b8101031261049d57519038611a54565b3d9150611b93565b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141538611a05565b50346101ec57806003193601126101ec5760206001600160a01b0360016109d2612ce4565b50346101ec5760203660031901126101ec576020611c2f611c2a6122e0565b612535565b6040519015158152f35b50346101ec5760203660031901126101ec57611c536122e0565b6001600160a01b039081611c656124ac565b16330361057357611b02916005611c7a612629565b019116906138c3565b50346101ec5760203660031901126101ec57600435611ca560056105d5612629565b1561057357611cb2612629565b906001600160a01b0390611cd281838554168460018097015416906133d2565b611cda612ce4565b611d6382604051611cea81612320565b8584541681528580806001870154169560208401968752611d5885611d296004856002860154169460408901958652600381015460608a0152016125c0565b9860808701998a52611d4a8286611d3e612629565b5416878a5116906133d2565b8480855116915116906133d2565b5116915116906133d2565b826004611d6e612629565b015416905192835193865b858110611d84578780f35b80611d9d868686611d968c96886126f0565b51166133d2565b01611d79565b50346101ec576020806003193601126118f0576004356001600160a01b03806001611dcc612629565b015416330361057357611ddd612629565b906001818354169201541690604051936370a0823160e01b948581523060048201528181602481865afa908115610403578791611ea1575b50848110611e29575050610392935061266b565b610d85611e399186939496612512565b6040519485523060048601528185602481875afa918215610969578692611e6f575b50610392945081808210911802189161266b565b90915084813d8311611e9a575b611e868183612374565b81010312610dda5761039293519038611e5b565b503d611e7c565b90508181813d8311611ecb575b611eb88183612374565b81010312611ec7575138611e15565b8680fd5b503d611eae565b50346101ec57806003193601126101ec5760206001600160a01b0360046109d2612629565b50346101ec57806003193601126101ec576001600160a01b036001611f1a612629565b01541660405180917f228bfd9f0000000000000000000000000000000000000000000000000000000082523060048301528160246101209485935afa9182156103ca578392611f71575b6020836040519015158152f35b90809250813d8311611fa5575b611f888183612374565b810103126118f0575180151581036118f057602091503880611f64565b503d611f7e565b50346101ec57806003193601126101ec5760206001600160a01b0360016109d2612629565b50346101ec5760203660031901126101ec57611feb6122e0565b6001600160a01b039081611ffd6124ac565b16330361057357611b02916005612012612629565b019116906137bc565b50346101ec576020806003193601126118f05761203b60056105d5612629565b15610573576001600160a01b03612050612629565b5416604051906370a0823160e01b918281523060048201528381602481855afa928315610de557849186946120fb575b5061208961271a565b60246040518094819382523060048301525afa908115610d5c5784916120c7575b506120b6929350612512565b60043581106106b357604051908152f35b90508281813d83116120f4575b6120de8183612374565b81010312610d67576120b69293505183926120aa565b503d6120d4565b8281939295503d8311612125575b6121138183612374565b81010312610dda578390519238612080565b503d612109565b50346101ec57806003193601126101ec5760206121476124ac565b6001600160a01b0360405191168152f35b50346101ec5760203660031901126101ec576121726122e0565b61217f60056105d5612629565b15610573576001600160a01b03806003612197612629565b0154169182156122b657816121aa612629565b54169181169182149081156122a6575b506109745773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361223b57504790814710612203578280809381935af16121f46126c0565b90156121fe575080f35b6136b2565b6044824790604051917fcf47918100000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b604051916370a0823160e01b8352306004840152602083602481855afa918215610d5c578492612270575b610392935061266b565b91506020833d60201161229e575b8161228b60209383612374565b81010312610d6757610392925191612266565b3d915061227e565b6122b09150612535565b386121ba565b60046040517fb4b53f42000000000000000000000000000000000000000000000000000000008152fd5b600435906001600160a01b03821682036103be57565b67ffffffffffffffff811161230a57604052565b634e487b7160e01b600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761230a57604052565b6040810190811067ffffffffffffffff82111761230a57604052565b6080810190811067ffffffffffffffff82111761230a57604052565b90601f8019910116810190811067ffffffffffffffff82111761230a57604052565b67ffffffffffffffff811161230a57601f01601f191660200190565b9291926123be82612396565b916123cc6040519384612374565b8294818452818301116103be578281602093846000960137010152565b602090602060408183019282815285518094520193019160005b828110612411575050505090565b83516001600160a01b031685529381019392810192600101612403565b6020808252825181830181905290939260005b82811061246357505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612441565b60409060031901126103be576004359060243590565b908160209103126103be57516001600160a01b03811681036103be5790565b600460206001600160a01b0360016124c2612629565b0154166040519283809263030d028960e21b82525afa908115612506576000916124ea575090565b612503915060203d6020116110bc576110ad8183612374565b90565b6040513d6000823e3d90fd5b9190820391821161251f57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03908180600261254a612ce4565b015416911690811491821561255e57505090565b909150612569612629565b54161490565b81811061257a575050565b6000815560010161256f565b90600182811c921680156125b6575b60208310146125a057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612595565b90604051918281549182825260209260208301916000526020600020936000905b8282106125f9575050506125f792500383612374565b565b85546001600160a01b0316845260019586019588955093810193909101906125e1565b9190820180921161251f57565b604051602081017f2406840ad5584694fd0fd68ca814242285d2c2d94aaaee51ccea0b7e08ea3d5b8152602082526126608261233c565b9051902060ff191690565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039290921660248301526044808301939093529181526125f7916108ab606483612374565b3d156126eb573d906126d182612396565b916126df6040519384612374565b82523d6000602084013e565b606090565b80518210156127045760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b600180612725612ce4565b01906000916001600160a01b038091541690813b15610d67576040906040517f4e71d92d00000000000000000000000000000000000000000000000000000000815285816004818382985af1801561096957612870575b5080612786612629565b5416906127966004611011612ce4565b805194875b8681106127ad57505050505050505050565b836127b882856126f0565b5116865180916370a0823160e01b8252308583015281602460209485935afa91821561286657908a9392918c92612835575b50508015158061281f575b612801575b500161279b565b61281890878761281185896126f0565b51166136eb565b50386127fa565b50868661282c84886126f0565b511614156127f5565b8194508092503d831161285f575b61284d8183612374565b810103126103be5788915138806127ea565b503d612843565b88513d8d823e3d90fd5b61287c909591956122f6565b933861277c565b61288b613194565b612893612629565b9060006001600160a01b0380935416928060026128ae612ce4565b0154166040938451968780926370a0823160e01b988983526004958684015260209a8b9160249687915afa918215612be3578792612bb4575b50818082109118021890818082109118029081811891670de0b6b3a76400008084029384041491141715612ba2578361291e612ce4565b54169088600361292c612ce4565b0154848951809581936337e2beb760e21b8352898301525afa918215612b28578692612b73575b508115612b6157049581908885600261296a612ce4565b01541688519485809285825230898301525afa928315612b28578693612b32575b5082808911612a4c575b505050856129a7575b50505050505050565b86926129b1612ce4565b5416908460036129bf612ce4565b01548751631a42a82760e31b815294850190815288831898831198909802909118602088015230604088015260006060880152919586928391829060800103925af1918215612a42575050612a19575b808080808061299e565b813d8311612a3b575b612a2c8183612374565b810103126103be573880612a0f565b503d612a22565b51903d90823e3d90fd5b612a599192935088612512565b846001612a64612ce4565b01541690813b15611ec7578751627b8a6760e11b815285810191825230602083015291879183919082908490829060400103925af18015612b285790899291612b15575b50846002612ab4612ce4565b01541692875180948193825230878301525afa908115612b0b578491612ade575b50388080612995565b90508681813d8311612b04575b612af58183612374565b810103126103be575138612ad5565b503d612aeb565b85513d86823e3d90fd5b612b21909691966122f6565b9438612aa8565b87513d88823e3d90fd5b9092508881813d8311612b5a575b612b4a8183612374565b8101031261049d5751913861298b565b503d612b40565b8286601286634e487b7160e01b835252fd5b9091508881813d8311612b9b575b612b8b8183612374565b8101031261049d57519038612953565b503d612b81565b5083601183634e487b7160e01b835252fd5b9091508981813d8311612bdc575b612bcc8183612374565b81010312611ec7575190386128e7565b503d612bc2565b88513d89823e3d90fd5b612bf5612629565b6001600160a01b03612c128183541682600180950154169061331e565b612c1a612ce4565b612ca0604051612c2981612320565b8383541681528380806001860154169460208401958652612c95612c67600484600285015416936040880194855260038101546060890152016125c0565b9660808601978852612c8784612c7b612629565b5416858851169061331e565b83808451169151169061331e565b51169151169061331e565b816004612cab612629565b01541690519182519260005b848110612cc657505050505050565b80612cde8585612cd78a95876126f0565b511661331e565b01612cb7565b604051602081017f4d9eed546e4705919557215ec319fca3fd5305ca57b19dffaf31b2484c6f5f6a8152602082526126608261233c565b67ffffffffffffffff811161230a5760051b60200190565b6001600160a01b03906001826001612d49612ce4565b0154169260408051917f8de4e99000000000000000000000000000000000000000000000000000000000835260206004968185600481845afa94851561250657600095612e58575b50612d9b85612d1b565b91612da96040519384612374565b858352601f19612db887612d1b565b013682850137829860005b878110612dd557505050505050505050565b86517f7bb7bed100000000000000000000000000000000000000000000000000000000815281838201528381602481885afa908115612e4d57908a9291600091612e30575b5087612e2683896126f0565b9116905201612dc3565b612e479150853d87116110bc576110ad8183612374565b38612e1a565b88513d6000823e3d90fd5b90948282813d8311612e80575b612e6f8183612374565b810103126101ec5750519338612d91565b503d612e65565b906001600160a01b038092169060409283517fdd57691100000000000000000000000000000000000000000000000000000000815260049383858301526020918281602481855afa9081156130d357600091613177575b508380612ee9612629565b541691160361314f5785517f5401889600000000000000000000000000000000000000000000000000000000815284868201528281602481855afa9081156130d357908491600091613132575b50169081156131235786517fa59a997300000000000000000000000000000000000000000000000000000000815283818881865afa908115612e4d5782918691600091613106575b5016036130de57826024918851928380927f5c6b6782000000000000000000000000000000000000000000000000000000008252898b8301525afa9081156130d3579084916000916130b6575b50169586156130a75750612fdd612ce4565b936003850155600284016001600160a01b0319918282541617905560019560018501918254161790558361300f612d33565b93019280519467ffffffffffffffff861161309257680100000000000000008611613092575081908454868655808710613075575b500192600052806000209160005b8581106130625750505050505050565b8451821684820155938201938601613052565b61308c90866000528784600020918201910161256f565b38613044565b604190634e487b7160e01b6000525260246000fd5b85905163fb7566d760e01b8152fd5b6130cd9150843d86116110bc576110ad8183612374565b38612fcb565b87513d6000823e3d90fd5b8587517fd8cad676000000000000000000000000000000000000000000000000000000008152fd5b61311d9150863d88116110bc576110ad8183612374565b38612f7e565b85875163fb7566d760e01b8152fd5b6131499150843d86116110bc576110ad8183612374565b38612f36565b8486517fe46aea09000000000000000000000000000000000000000000000000000000008152fd5b61318e9150833d85116110bc576110ad8183612374565b38612ede565b6001600160a01b038060026131a7612ce4565b01541690604091825190816370a0823160e01b9182825230600483015281602460209586935afa9081156132e6576000916132f1575b50828460016131ea612ce4565b01541692602487518095819382523060048301525afa9081156132e6576000916132b5575b613219925061261c565b91613222612ce4565b541690806003613230612ce4565b015460248651809581936337e2beb760e21b835260048301525afa9384156132ab575060009361327b575b505081810291818304149015171561251f57670de0b6b3a7640000900490565b9080929350813d83116132a4575b6132938183612374565b810103126103be575190388061325b565b503d613289565b513d6000823e3d90fd5b90508282813d83116132df575b6132cc8183612374565b810103126103be5761321991519061320f565b503d6132c2565b85513d6000823e3d90fd5b90508281813d8311613317575b6133088183612374565b810103126103be5751386131dd565b503d6132fe565b604051906020820163095ea7b360e01b93848252602060006001600160a01b0380931693846024880152811960448801526044875261335c87612358565b86519082875af1903d60005190836133b1575b5050501561337e575b50505050565b6133a8936108ab91604051916020830152602482015260006044820152604481526108a581612358565b38808080613378565b919250906133c8575082163b15155b38808061336f565b60019150146133c0565b604051916020600081850161341e8661341063095ea7b360e01b998a85528760248401602090939291936001600160a01b0360408201951681520152565b03601f198101885287612374565b85519082865af16000513d8261346f575b50501561343c5750505050565b6133a8936001600160a01b036108ab9260405192602084015216602482015260006044820152604481526108a581612358565b90915061348c57506001600160a01b0382163b15155b388061342f565b600114613485565b8061349c5750565b6001600160a01b0390816134ae612ce4565b541660036134ba612ce4565b0154926040928351947f1de8a7c20000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260009384928360648301528160848160209687945af1801561360b57908391613615575b50602490826002613529612ce4565b0154168551928380926370a0823160e01b82523060048301525afa92831561360b5785936135db575b50508161355f5750505050565b6001613569612ce4565b01541690813b15610d675782517f7acb77570000000000000000000000000000000000000000000000000000000081526004810191909152306024820152929081908490604490829084905af1918215612a425750506135cc575b808080613378565b6135d5906122f6565b386135c4565b9080929350813d8311613604575b6135f38183612374565b81010312610d675751903880613552565b503d6135e9565b84513d87823e3d90fd5b813d8311613637575b6136288183612374565b81010312610d6757813861351a565b503d61361e565b906000602091828151910182855af115612506576000513d6136a957506001600160a01b0381163b155b61366f5750565b6024906001600160a01b03604051917f5274afe7000000000000000000000000000000000000000000000000000000008352166004820152fd5b60011415613668565b8051156136c157805190602001fd5b60046040517fd6bda275000000000000000000000000000000000000000000000000000000008152fd5b6020916137589360006001600160a01b036004613706612629565b0154169260405196879586948593636ccb2b0160e01b8552309260048601929360809291959460a08501966001600160a01b039384809216875216602086015260408501526001606085015216910152565b03925af160009181613770575b506125035750600090565b9091506020813d60201161379c575b8161378c60209383612374565b810103126103be57519038613765565b3d915061377f565b80548210156127045760005260206000200190600090565b906001820190600092818452826020526040842054908115156000146138bc57600019918083018181116138a85782549084820191821161389457818103613848575b505050805480156138345782019161381783836137a4565b909182549160031b1b191690555582526020526040812055600190565b602486634e487b7160e01b81526031600452fd5b61387f61385861386893866137a4565b90549060031b1c928392866137a4565b819391549060031b91821b91600019901b19161790565b905586528460205260408620553880806137ff565b602488634e487b7160e01b81526011600452fd5b602487634e487b7160e01b81526011600452fd5b5050505090565b6000828152600182016020526040902054613918578054906801000000000000000082101561230a57826139016138688460018096018555846137a4565b905580549260005201602052604060002055600190565b5050600090565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561394e57565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fd5b9061398357506136b2565b815115806139ce575b613994575090565b6024906001600160a01b03604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b1561398c56fea2646970667358221220cab79832331b530612ecdc4b7e09557950bae043c5db86d295943716a869ddd264736f6c63430008190033