0 txs
213 calls
constructor
constructor(address _undyHq, address _yoRegistry)
functions
assetOpportunities
viewfunction assetOpportunities(address arg0, uint256 arg1) view returns (address)
assets
viewfunction assets(uint256 arg0) view returns (address)
getAccessForLego
viewfunction getAccessForLego(address _user, uint256 _action) view returns (address, string, uint256)
getAddys
viewfunction getAddys() view returns (tuple)
getAssetOpportunities
viewfunction getAssetOpportunities(address _asset) view returns (address[])
getAssets
viewfunction getAssets() view returns (address[])
getNumLegoAssets
viewfunction getNumLegoAssets() view returns (uint256)
getPrice
viewfunction getPrice(address _asset, uint256 _decimals) view returns (uint256)
getPricePerShare
viewfunction getPricePerShare(address _asset, uint256 _decimals) view returns (uint256)
getRegistries
viewfunction getRegistries() view returns (address[])
getUnderlyingAmount
viewfunction getUnderlyingAmount(address _vaultToken, uint256 _vaultTokenAmount) view returns (uint256)
getUnderlyingAsset
viewfunction getUnderlyingAsset(address _vaultToken) view returns (address)
getUnderlyingData
viewfunction getUnderlyingData(address _vaultToken, uint256 _vaultTokenAmount, address _appraiser) view returns (address, uint256, uint256)
getUnderlyingData
viewfunction getUnderlyingData(address _vaultToken, uint256 _vaultTokenAmount) view returns (address, uint256, uint256)
getUndyHq
viewfunction getUndyHq() view returns (address)
getUsdValueOfVaultToken
viewfunction getUsdValueOfVaultToken(address _vaultToken, uint256 _vaultTokenAmount, address _appraiser) view returns (uint256)
getUsdValueOfVaultToken
viewfunction getUsdValueOfVaultToken(address _vaultToken, uint256 _vaultTokenAmount) view returns (uint256)
getVaultTokenAmount
viewfunction getVaultTokenAmount(address _asset, uint256 _assetAmount, address _vaultToken) view returns (uint256)
hasCapability
viewfunction hasCapability(uint256 _action) view returns (bool)
hasClaimableRewards
viewfunction hasClaimableRewards(address _user) view returns (bool)
indexOfAsset
viewfunction indexOfAsset(address arg0) view returns (uint256)
indexOfAssetOpportunity
viewfunction indexOfAssetOpportunity(address arg0, address arg1) view returns (uint256)
isAssetOpportunity
viewfunction isAssetOpportunity(address _asset, address _vaultAddr) view returns (bool)
isDexLego
viewfunction isDexLego() view returns (bool)
isEligibleForYieldBonus
viewfunction isEligibleForYieldBonus(address _asset) view returns (bool)
isEligibleVaultForTrialFunds
viewfunction isEligibleVaultForTrialFunds(address _vaultToken, address _underlyingAsset) view returns (bool)
isLegoAsset
viewfunction isLegoAsset(address _asset) view returns (bool)
isPaused
viewfunction isPaused() view returns (bool)
isRebasing
viewfunction isRebasing() view returns (bool)
isValidYoVault
viewfunction isValidYoVault(address _vaultToken) view returns (bool)
isVaultToken
viewfunction isVaultToken(address _vaultToken) view returns (bool)
isYieldLego
viewfunction isYieldLego() view returns (bool)
numAssetOpportunities
viewfunction numAssetOpportunities(address arg0) view returns (uint256)
numAssets
viewfunction numAssets() view returns (uint256)
totalAssets
viewfunction totalAssets(address _vaultToken) view returns (uint256)
totalBorrows
viewfunction totalBorrows(address _vaultToken) view returns (uint256)
vaultToAsset
viewfunction vaultToAsset(address arg0) view returns (address)
YO_REGISTRY
viewfunction YO_REGISTRY() view returns (address)
addAssetOpportunity
nonpayablefunction addAssetOpportunity(address _asset, address _vaultAddr)
addCollateral
nonpayablefunction addCollateral(address _asset, uint256 _amount, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256)
addCollateral
nonpayablefunction addCollateral(address _asset, uint256 _amount, bytes32 _extraData, address _recipient) returns (uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(address _pool, address _tokenA, address _tokenB, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (address, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(address _pool, address _tokenA, address _tokenB, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount, bytes32 _extraData, address _recipient) returns (address, uint256, uint256, uint256, uint256)
addLiquidityConcentrated
nonpayablefunction addLiquidityConcentrated(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, int24 _tickLower, int24 _tickUpper, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256, uint256, uint256, uint256)
addLiquidityConcentrated
nonpayablefunction addLiquidityConcentrated(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, int24 _tickLower, int24 _tickUpper, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, bytes32 _extraData, address _recipient) returns (uint256, uint256, uint256, uint256, uint256)
borrow
nonpayablefunction borrow(address _borrowAsset, uint256 _amount, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256)
borrow
nonpayablefunction borrow(address _borrowAsset, uint256 _amount, bytes32 _extraData, address _recipient) returns (uint256, uint256)
claimRewards
nonpayablefunction claimRewards(address _user, address _rewardToken, uint256 _rewardAmount, bytes32 _extraData, tuple _miniAddys) returns (uint256, uint256)
claimRewards
nonpayablefunction claimRewards(address _user, address _rewardToken, uint256 _rewardAmount, bytes32 _extraData) returns (uint256, uint256)
confirmMintOrRedeemAsset
nonpayablefunction confirmMintOrRedeemAsset(address _tokenIn, address _tokenOut, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256)
confirmMintOrRedeemAsset
nonpayablefunction confirmMintOrRedeemAsset(address _tokenIn, address _tokenOut, bytes32 _extraData, address _recipient) returns (uint256, uint256)
depositForYield
nonpayablefunction depositForYield(address _asset, uint256 _amount, address _vaultAddr, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, address, uint256, uint256)
depositForYield
nonpayablefunction depositForYield(address _asset, uint256 _amount, address _vaultAddr, bytes32 _extraData, address _recipient) returns (uint256, address, uint256, uint256)
mintOrRedeemAsset
nonpayablefunction mintOrRedeemAsset(address _tokenIn, address _tokenOut, uint256 _tokenInAmount, uint256 _minAmountOut, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256, bool, uint256)
mintOrRedeemAsset
nonpayablefunction mintOrRedeemAsset(address _tokenIn, address _tokenOut, uint256 _tokenInAmount, uint256 _minAmountOut, bytes32 _extraData, address _recipient) returns (uint256, uint256, bool, uint256)
pause
nonpayablefunction pause(bool _shouldPause)
recoverFunds
nonpayablefunction recoverFunds(address _recipient, address _asset)
recoverFundsMany
nonpayablefunction recoverFundsMany(address _recipient, address[] _assets)
removeAssetOpportunity
nonpayablefunction removeAssetOpportunity(address _asset, address _vaultAddr)
removeCollateral
nonpayablefunction removeCollateral(address _asset, uint256 _amount, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256)
removeCollateral
nonpayablefunction removeCollateral(address _asset, uint256 _amount, bytes32 _extraData, address _recipient) returns (uint256, uint256)
removeLiquidity
nonpayablefunction removeLiquidity(address _pool, address _tokenA, address _tokenB, address _lpToken, uint256 _lpAmount, uint256 _minAmountA, uint256 _minAmountB, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256, uint256, uint256)
removeLiquidity
nonpayablefunction removeLiquidity(address _pool, address _tokenA, address _tokenB, address _lpToken, uint256 _lpAmount, uint256 _minAmountA, uint256 _minAmountB, bytes32 _extraData, address _recipient) returns (uint256, uint256, uint256, uint256)
removeLiquidityConcentrated
nonpayablefunction removeLiquidityConcentrated(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256, uint256, bool, uint256)
removeLiquidityConcentrated
nonpayablefunction removeLiquidityConcentrated(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB, bytes32 _extraData, address _recipient) returns (uint256, uint256, uint256, bool, uint256)
repayDebt
nonpayablefunction repayDebt(address _paymentAsset, uint256 _paymentAmount, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, uint256)
repayDebt
nonpayablefunction repayDebt(address _paymentAsset, uint256 _paymentAmount, bytes32 _extraData, address _recipient) returns (uint256, uint256)
swapTokens
nonpayablefunction swapTokens(uint256 _amountIn, uint256 _minAmountOut, address[] _tokenPath, address[] _poolPath, address _recipient, tuple _miniAddys) returns (uint256, uint256, uint256)
swapTokens
nonpayablefunction swapTokens(uint256 _amountIn, uint256 _minAmountOut, address[] _tokenPath, address[] _poolPath, address _recipient) returns (uint256, uint256, uint256)
withdrawFromYield
nonpayablefunction withdrawFromYield(address _vaultToken, uint256 _amount, bytes32 _extraData, address _recipient, tuple _miniAddys) returns (uint256, address, uint256, uint256)
withdrawFromYield
nonpayablefunction withdrawFromYield(address _vaultToken, uint256 _amount, bytes32 _extraData, address _recipient) returns (uint256, address, uint256, uint256)
events
AssetOpportunityAdded
event AssetOpportunityAdded(address indexed asset, address indexed vaultAddr)
AssetOpportunityRemoved
event AssetOpportunityRemoved(address indexed asset, address indexed vaultAddr)
LegoFundsRecovered
event LegoFundsRecovered(address indexed asset, address indexed recipient, uint256 balance)
LegoPauseModified
event LegoPauseModified(bool isPaused)
YoDeposit
event YoDeposit(address indexed sender, address indexed asset, address indexed vaultToken, uint256 assetAmountDeposited, uint256 usdValue, uint256 vaultTokenAmountReceived, address recipient)
YoWithdrawal
event YoWithdrawal(address indexed sender, address indexed asset, address indexed vaultToken, uint256 assetAmountReceived, uint256 usdValue, uint256 vaultTokenAmountBurned, address recipient)
errors
No errors.
creation bytecode
0x6132eb5150346100895760206133905f395f518060a01c6100895760605260206133b05f395f518060a01c6100895760805260605160405261003f61006c565b5f60405261004b61007d565b60805115610089576080516132eb526132cb61008d6100003961330b610000f35b60405115610089576040516132cb52565b6040515f556001600755565b5f80fd5f3560e01c60026041820660011b61324901601e395f51565b63a5c7434a8118611fda573461324557610160610036610420611fde565b610420f35b6392975f0a8118611fda57346132455760206100576040612392565b6040f35b6370b84afe8118611fda57602436103417613245576004358060a01c613245576060526020606051604052610090608061239c565b6080f35b636aa06de081186101ee57602436103417613245576004358060a01c6132455760405260036040516020525f5260405f205460605260605161011d57602080608052806080015f5f82525f5f5f6028811161324557801561010757905b5f8160051b6020870101526001018181186100f1575b50508101602001905090508101905060806101ec565b5f6080526001606051806001116132455760018103905060288111613245578015610190578101905b806105a052608051602781116132455760016040516020525f5260405f20806105a0516020525f5260405f209050548160051b60a001526001810160805250600101818118610146575b50506020806105a052806105a0015f6080518083528060051b5f82602881116132455780156101d857905b8060051b60a001518160051b6020880101526001018181186101bb575b505082016020019150509050810190506105a05bf35b632785f41c8118611fda57604436103417613245576004358060a01c613245576040526024358060131c6132455760605260605f6080528060a052806080015f81528051806020830101601f825f03163682375050601f19601f825160200101169050810190505f60c0526080f35b6367e4ac2c81186103895734613245576007546040526040516102c757602080606052806060015f5f82525f5f5f601481116132455780156102b157905b5f8160051b60208701015260010181811861029b575b5050810160200190509050810190506060610387565b5f606052600160405180600111613245576001810390506014811161324557801561032b578101905b806103005260605160138111613245576005610300516020525f5260405f20548160051b6080015260018101606052506001018181186102f0575b50506020806103005280610300015f6060518083528060051b5f826014811161324557801561037357905b8060051b608001518160051b602088010152600101818118610356575b505082016020019150509050810190506103005bf35b63cf35bdd08118611fda576024361034176132455760056004356020525f5260405f205460405260206040f35b633dde27658118611fda57604436103417613245576004358060a01c613245576080526024358060a01c6132455760a05260206040608060405e6103fa60c06123b2565b60c0f35b6385e43a66811861041e573461324557602061041a60606123d7565b6060f35b63071424588118611fda573461324557600160405260206040f35b6302329a298118611fda57602436103417613245576004358060011c6132455760e0523360405261046b610100612403565b6101005115613245575f5460e051146132455760e0515f557f252cec9a4f2ed5a790ce3f44a01bf23c9a4f61762b4e2228123909a75c38214760e051610100526020610100a1005b6324ae6a27811861051057604436103417613245576004358060a01c61324557610120526024358060a01c6132455761014052336040526104f5610160612403565b610160511561324557604061012060405e61050e6124c5565b005b638f89ebc38118611fda5734613245575f60405260206040f35b637053a18f8118611fda57604436103417613245576004358060a01c613245576101205260243560040160148135116132455780355f816014811161324557801561059757905b8060051b6020850101358060a01c613245578160051b6101600152600101818118610571575b505080610140525050336040526105af6103e0612403565b6103e05115613245575f61014051601481116132455780156105fb57905b8060051b61016001516103e052610120516040526103e0516060526105f06124c5565b6001018181186105cd575b5050005b63b187bd26811861061a5734613245575f5460405260206040f35b63eafe38508118611fda576102043610341761324557610184358060a01c61324557610100526101a4358060a01c61324557610120526101c4358060a01c61324557610140526101e4358060a01c61324557610160525b6024358060a01c613245576040526044358060a01c613245576060526064358060a01c613245576080526084358060020b81186132455760a05260a4358060020b81186132455760c052610164358060a01c6132455760e05260a0366101803760a0610180f35b63e8d314e78118611fda57604436103417613245576004358060a01c6132455760405260016040516020525f5260405f20806024356020525f5260405f2090505460605260206060f35b636e2882968118611fda57604436103417613245576004358060a01c613245576040526024358060a01c6132455760605260026040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b63b2fba7938118611fda57602436103417613245576004358060a01c6132455760405260036040516020525f5260405f205460605260206060f35b63cac7a02581186107f057602436103417613245576004358060a01c6132455760405260046040516020525f5260405f205460605260206060f35b6378b1e82c811861088c576101c43610341761324557610144358060a01c6132455760c052610164358060a01c6132455760e052610184358060a01c61324557610100526101a4358060a01c61324557610120525b6004358060a01c613245576040526024358060a01c613245576060526044358060a01c61324557608052610124358060a01c6132455760a05260a0366101403760a0610140f35b6369016ca98118611fda57610184361034176132455760803661010037610671565b636a1e31bc8118611fda57602436103417613245576004358060a01c6132455760405260066040516020525f5260405f205460605260206060f35b63a46fe83b811861090557346132455760075460405260206040f35b6305b2bed58118611fda5760843610341761324557608036608037611a4b565b635e9d6bf9811861095957602436103417613245576004358060131c61324557604052600660405116151560605260206060f35b6385c67e14811861097a5760a436103417613245576080366103e037610b7e565b63a4c681838118611fda576084361034176132455760803660a03761192e565b6335884e5a8118610a16573461324557602080604052806040015f60206132eb6101e03960016101c0525f6101c0518084528060051b5f82600a8111613245578015610a0057905b8060051b6101e001518160051b6020890101526001018181186109e2575b5050820160200191505090509050810190506040f35b63b6ff49348118611fda57602436103417613245576004358060a01c613245576040525f60605260206060f35b635dfba1158118611fda5734613245576020610a5f60406125c8565b6040f35b6394b31cc88118610ab057604436103417613245576004358060a01c613245576040526024358060a01c6132455760605260605160046040516020525f5260405f20541460805260206080f35b63338c4ccb8118611fda57602436103417613245576004358060a01c613245576101005260206101005160c052610ae8610120612d6c565b610120f35b633940640b8118611fda57602436103417613245576004358060a01c6132455760405260046040516020525f5260405f2054151560605260206060f35b63a39579808118610f3357610124361034176132455760a4358060a01c613245576103e05260c4358060a01c613245576104005260e4358060a01c6132455761042052610104358060a01c61324557610440525b6004358060a01c61324557610380526044358060a01c613245576103a0526084358060a01c613245576103c0525f546132455760806103e060a05e610bc46104e061273e565b6104e06080816104605e5060406103806102405e61046051610280526104a0516102a052610bf3610500612b7b565b610500516104e052610380516370a082316105205230610540526020610520602461053c845afa610c26573d5f5f3e3d5ffd5b60203d106132455761052090505161050052602435610380516370a082316105405233610560526020610540602461055c845afa610c66573d5f5f3e3d5ffd5b60203d10613245576105409050518082811882841002189050905061052052610520511561324557610380516323b872dd6105405233610560523061058052610520516105a0526020610540606461055c5f855af1610cc7573d5f5f3e3d5ffd5b3d610cde57803b156132455760016105c052610d08565b3d602081183d602010021880610540016105601161324557610540518060011c613245576105c052505b6105c090505115613245576104e051636e553f656105605261052051610580526103c0516105a0526020610560604461057c5f855af1610d4a573d5f5f3e3d5ffd5b60203d106132455761056090505161054052610540511561324557610380516370a0823161058052306105a0526020610580602461059c845afa610d90573d5f5f3e3d5ffd5b60203d1061324557610580905051610560525f6105805261050051610560511115610e6a5761056051610500518082038281116132455790509050610580526103805163a9059cbb6105a052336105c052610580516105e05260206105a060446105bc5f855af1610e03573d5f5f3e3d5ffd5b3d610e1a57803b1561324557600161060052610e44565b3d602081183d6020100218806105a0016105c011613245576105a0518060011c6132455761060052505b610600905051156132455761052051610580518082038281116132455790509050610520525b6104c0516345ab6b796105c052610380516105e052610520516106005260406104806106205e60206105c060846105dc5f855af1610eaa573d5f5f3e3d5ffd5b60203d10613245576105c09050516105a0526104e05161038051337ffa40c2faf58360c385339f3de4782a7b81ad3fb2f1771d55a3daa4383dc12e40610520516105c0526105a0516105e05261054051610600526103c0516106205260806105c0a4610520516105c0526104e0516105e05261054051610600526105a0516106205260806105c0f35b636331f17f8118611fda57604436103417613245576004358060a01c61324557610100526101005160c052610f69610120612d6c565b61012051610f78576001610f7d565b602435155b15610f91575f610140526020610140610faf565b602061010051604052602435606052610fab610120612e3d565b6101205bf35b63a795c55d8118610fd257608436103417613245576080366103a03761109e565b6381dac5438118611fda5761010436103417613245576084358060a01c6132455760805260a4358060a01c6132455760a05260c4358060a01c6132455760c05260e4358060a01c6132455760e0525b6004358060a01c613245576040526064358060a01c61324557606052604036610100376040610100f35b63402166a78118611fda5761010436103417613245576084358060a01c613245576103a05260a4358060a01c613245576103c05260c4358060a01c613245576103e05260e4358060a01c61324557610400525b6004358060a01c61324557610360526064358060a01c61324557610380525f546132455760806103a060a05e6110d56104a061273e565b6104a06080816104205e506103605161024052610420516102605261046051610280526111036104c0612c7a565b6104c0516104a052610360516370a082316104e052306105005260206104e060246104fc845afa611136573d5f5f3e3d5ffd5b60203d10613245576104e09050516104c052602435610360516370a082316105005233610520526020610500602461051c845afa611176573d5f5f3e3d5ffd5b60203d1061324557610500905051808281188284100218905090506104e0526104e0511561324557610360516323b872dd61050052336105205230610540526104e051610560526020610500606461051c5f855af16111d7573d5f5f3e3d5ffd5b3d6111ee57803b1561324557600161058052611218565b3d602081183d602010021880610500016105201161324557610500518060011c6132455761058052505b610580905051156132455761036051637d41c86e610520526104e05161054052610380516105605230610580526020610520606461053c5f855af161125f573d5f5f3e3d5ffd5b60203d106132455761052090505161050052610500511561324557610360516370a082316105405230610560526020610540602461055c845afa6112a5573d5f5f3e3d5ffd5b60203d1061324557610540905051610520525f610540526104c05161052051111561137f57610520516104c0518082038281116132455790509050610540526103605163a9059cbb610560523361058052610540516105a0526020610560604461057c5f855af1611318573d5f5f3e3d5ffd5b3d61132f57803b156132455760016105c052611359565b3d602081183d602010021880610560016105801161324557610560518060011c613245576105c052505b6105c090505115613245576104e0516105405180820382811161324557905090506104e0525b610480516345ab6b79610580526104a0516105a052610500516105c05260406104406105e05e6020610580608461059c5f855af16113bf573d5f5f3e3d5ffd5b60203d106132455761058090505161056052610360516104a051337f42d0eba114658c36fa98ec90e6d59855753f92998eb3d789fcc311897d81e5c66105005161058052610560516105a0526104e0516105c052610380516105e0526080610580a46104e051610580526104a0516105a052610500516105c052610560516105e0526080610580f35b6328ea9bd8811861146857608436103417613245576080366080376115ae565b63fbddde9c811861154157606436103417613245576004358060a01c61324557610180526044358060a01c613245576101a052610180516114aa5760016114b0565b6101a051155b6114bd57602435156114c0565b60015b156114d4575f6101e05260206101e061153f565b610180516101a05160c0526114ea6101c0612da3565b6101c05114611502575f6101e05260206101e061153f565b60206101a05163c6e6f5926101c0526024356101e05260206101c060246101dc845afa611531573d5f5f3e3d5ffd5b60203d10613245576101c090505bf35b63c90860b98118611fda57346132455760206132eb60403960206040f35b63897e99e38118611fda5761010436103417613245576084358060a01c6132455760805260a4358060a01c6132455760a05260c4358060a01c6132455760c05260e4358060a01c6132455760e0525b6004358060a01c613245576040526024358060a01c61324557606052604036610100376040610100f35b63bb7e85808118611fda57602436103417613245576004358060a01c6132455760c052602060c05160405261160d60e06127a3565b60e0f35b63e8689daa811861164e57602436103417613245576004358060a01c613245576101805260206101805160c0526116496101a0612da3565b6101a0f35b63333f1751811861166d57604436103417613245575f61028052611793565b63f3e0ffbf8118611fda57602436103417613245576004358060a01c61324557610100526101005160c0526116a3610120612d6c565b610120516116ba575f6101405260206101406116f0565b6020610100516301e1d114610120526020610120600461013c845afa6116e2573d5f5f3e3d5ffd5b60203d106132455761012090505bf35b63790613038118611fda57604436103417613245575f61040052611736565b631a606eb38118611fda57606436103417613245576044358060a01c61324557610400525b6004358060a01c613245576103e05260206103e0516102605260243561028052610400516102a052611769610420612f99565b610420f35b6359c5212081186117cb57606436103417613245576044358060a01c61324557610280525b6004358060a01c6132455761026052606061026051610180526024356101a052610280516101c0526117c66102a0612eda565b6102a0f35b63d65957a181186118de57610124361034176132455760a4358060a01c613245576101c05260c4358060a01c613245576101e05260e4358060a01c6132455761020052610104358060a01c61324557610220525b60443560040160058135116132455780355f816005811161324557801561186757905b8060051b6020850101358060a01c613245578160051b60600152600101818118611842575b505080604052505060643560040160048135116132455780355f81600481116132455780156118b857905b8060051b6020850101358060a01c613245578160051b6101200152600101818118611892575b5050806101005250506084358060a01c613245576101a052606036610240376060610240f35b635ecb48168118611fda5761010436103417613245576084358060a01c6132455760a05260a4358060a01c6132455760c05260c4358060a01c6132455760e05260e4358060a01c61324557610100525b6004358060a01c613245576040526024358060a01c613245576060526064358060a01c61324557608052604036610120376040610120f35b638d7301248118611fda57602436103417613245576004358060a01c613245576040525f60605260206060f35b63f2dab23681186119fc57604436103417613245576004358060a01c6132455760405260206040516307a2d13a606052602435604d81116132455780600a0a9050608052602060606024607c845afa6119ee573d5f5f3e3d5ffd5b60203d106132455760609050f35b63611b88e38118611a755761010436103417613245576084358060a01c6132455760805260a4358060a01c6132455760a05260c4358060a01c6132455760c05260e4358060a01c6132455760e0525b6004358060a01c613245576040526064358060a01c61324557606052604036610100376040610100f35b6384eac5318118611fda57610124361034176132455760803660e037611e9b565b634bcae6248118611fda57604436103417613245576004358060a01c613245576101a0526024358060a01c613245576101c05233604052611ad86101e0612403565b6101e051156132455760406101a060c05e611af46101e0612fd1565b6101e051156132455760406101a060405e611b106101e06123b2565b6101e0516132455760406101a060e05e611b28612967565b005b63954574838118611fda57604436103417613245576004358060a01c613245576101a0526024358060a01c613245576101c05233604052611b6c6101e0612403565b6101e05115613245576101a05163095ea7b36101e0526101c051610200525f6102205260206101e060446101fc5f855af1611ba9573d5f5f3e3d5ffd5b3d611bc057803b1561324557600161024052611bea565b3d602081183d6020100218806101e00161020011613245576101e0518060011c6132455761024052505b610240905051156132455760406101a060e05e611c056130e4565b005b63dd4260a38118611fda5760a436103417613245576080366101c03761181f565b63a1ae0f808118611c485760c4361034176132455760803660a037611d13565b6314ad68ba8118611fda5761010436103417613245576084358060a01c6132455760805260a4358060a01c6132455760a05260c4358060a01c6132455760c05260e4358060a01c6132455760e0525b6004358060a01c613245576040526064358060a01c61324557606052604036610100376040610100f35b63e21f2b708118611fda57610144361034176132455760c4358060a01c6132455760a05260e4358060a01c6132455760c052610104358060a01c6132455760e052610124358060a01c61324557610100525b6004358060a01c613245576040526024358060a01c6132455760605260a4358060a01c61324557608052608036610120376080610120f35b6341a5713b8118611fda5760843610341761324557608036608037611c97565b63c30f74a18118611fda5760843610341761324557608036608037611021565b6310c66cb28118611fda5760843610341761324557608036608037611dfa565b63d7f2debb8118611fda5761010436103417613245576084358060a01c6132455760805260a4358060a01c6132455760a05260c4358060a01c6132455760c05260e4358060a01c6132455760e0525b6004358060a01c613245576040526064358060a01c61324557606052604036610100376040610100f35b6355c259948118611fda57610144361034176132455760803660c037610845565b633764da188118611fda576101a43610341761324557610124358060a01c6132455760e052610144358060a01c6132455761010052610164358060a01c6132455761012052610184358060a01c61324557610140525b6004358060a01c613245576040526024358060a01c613245576060526044358060a01c613245576080526064358060a01c6132455760a052610104358060a01c6132455760c052608036610160376080610160f35b6345617cff8118611fda57610124361034176132455760803660c037611f66565b634757be698118611fad576101a43610341761324557610124358060a01c6132455760c052610144358060a01c6132455760e052610164358060a01c6132455761010052610184358060a01c61324557610120525b6024358060a01c613245576040526044358060a01c613245576060526064358060a01c61324557608052610104358060a01c6132455760a05260a0366101403760a0610140f35b63449e815d8118611fda57604436103417613245576004358060a01c613245576040525f60605260206060f35b5f5ffd5b60206132cb604039604051815260405163e40fe496606052602060606004607c845afa61200d573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011613245576060518060a01c6132455760a0525060a0905051602082015260405163d81f84b760c052600160e052602060c0602460dc845afa612063573d5f5f3e3d5ffd5b3d602081183d60201002188060c00160e0116132455760c0518060a01c613245576101005250610100905051604082015260405163d81f84b7610120526002610140526020610120602461013c845afa6120bf573d5f5f3e3d5ffd5b3d602081183d602010021880610120016101401161324557610120518060a01c613245576101605250610160905051606082015260405163d81f84b76101805260036101a0526020610180602461019c845afa61211e573d5f5f3e3d5ffd5b3d602081183d602010021880610180016101a01161324557610180518060a01c613245576101c052506101c0905051608082015260405163d81f84b76101e05260046102005260206101e060246101fc845afa61217d573d5f5f3e3d5ffd5b3d602081183d6020100218806101e00161020011613245576101e0518060a01c61324557610220525061022090505160a082015260405163d81f84b7610240526005610260526020610240602461025c845afa6121dc573d5f5f3e3d5ffd5b3d602081183d602010021880610240016102601161324557610240518060a01c61324557610280525061028090505160c082015260405163d81f84b76102a05260066102c05260206102a060246102bc845afa61223b573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c011613245576102a0518060a01c613245576102e052506102e090505160e082015260405163d81f84b7610300526007610320526020610300602461031c845afa61229a573d5f5f3e3d5ffd5b3d602081183d602010021880610300016103201161324557610300518060a01c61324557610340525061034090505161010082015260405163d81f84b7610360526008610380526020610360602461037c845afa6122fa573d5f5f3e3d5ffd5b3d602081183d602010021880610360016103801161324557610360518060a01c613245576103a052506103a090505161012082015260405163d81f84b76103c05260096103e05260206103c060246103dc845afa61235a573d5f5f3e3d5ffd5b3d602081183d6020100218806103c0016103e011613245576103c0518060a01c61324557610400525061040090505161014082015250565b60206132cb823950565b60066040516020525f5260405f20541515815250565b60026040516020525f5260405f20806060516020525f5260405f209050541515815250565b6007546040526040516123ed575f815250612401565b604051600181038181116132455790508152505b565b60206132cb5f395f5163d81f84b7608052600460a052602060806024609c845afa612430573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a011613245576080518060a01c6132455760c0525060c090505160605260605161246d575f8152506124c3565b606051632ba0309360805260405160a052602060806024609c845afa612495573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a011613245576080518060011c6132455760c0525060c09050518152505b565b604051156124d75760605115156124d9565b5f5b15613245576060516370a0823160a0523060c052602060a0602460bc845afa612504573d5f5f3e3d5ffd5b60203d106132455760a0905051608052608051156132455760605163a9059cbb60a05260405160c05260805160e052602060a0604460bc5f855af161254b573d5f5f3e3d5ffd5b3d61256257803b1561324557600161010052612589565b3d602081183d60201002188060a00160c0116132455760a0518060011c6132455761010052505b61010090505115613245576040516060517f8a3285648325f454564929a8aafc7150c1905ccffb4c30f4c27b76c00d44eb8760805160a052602060a0a3565b5f815250565b60206132cb5f395f5163d81f84b76040526001606052602060406024605c845afa6125fb573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011613245576040518060a01c61324557608052506080905051815250565b60206132cb5f395f5163d81f84b76040526002606052602060406024605c845afa612657573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011613245576040518060a01c61324557608052506080905051815250565b60206132cb5f395f5163d81f84b76040526003606052602060406024605c845afa6126b3573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011613245576040518060a01c61324557608052506080905051815250565b60206132cb5f395f5163d81f84b76040526007606052602060406024605c845afa61270f573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011613245576040518060a01c61324557608052506080905051815250565b60a0511561275257608060a0825e506127a1565b61275d6101206125ce565b61012051815261276e61014061262a565b610140516020820152612782610160612686565b6101605160408201526127966101806126e2565b610180516060820152505b565b60206132eb5f395f516306246269606052604051608052602060606024607c845afa6127d1573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011613245576060518060011c6132455760a0525060a0905051815250565b60066040516020525f5260405f205461285e576007546060526060516128265760016060525b60405160056060516020525f5260405f205560605160066040516020525f5260405f2055606051600181018181106132455790506007555b565b60026080516020525f5260405f208060a0516020525f5260405f2090505461296557608051612890576001612895565b60a051155b6129655760036080516020525f5260405f205460c05260c0516128b857600160c0525b60a05160016080516020525f5260405f208060c0516020525f5260405f2090505560c05160026080516020525f5260405f208060a0516020525f5260405f2090505560c0516001810181811061324557905060036080516020525f5260405f2055608051600460a0516020525f5260405f2055608051604052612939612800565b60a0516080517f3348d34d0e8a0dd27ac5dac3c961cb4454574797a11cf73e86d50b4b069c0edc5f60e0a35b565b60e05163095ea7b36101205261010051610140527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610160526020610120604461013c5f855af16129ba573d5f5f3e3d5ffd5b3d6129d157803b15613245576001610180526129fb565b3d602081183d602010021880610120016101401161324557610120518060011c6132455761018052505b6101809050511561324557604060e060805e612a15612860565b565b604051612a25576001612a2a565b606051155b612b795760805163ae5d6b5f60c05260605160e052602060c0602460dc845afa612a56573d5f5f3e3d5ffd5b3d602081183d60201002188060c00160e0116132455760c0518060011c613245576101005250610100905051612b795760a05163c4d9ba636101405230610160526020610140602461015c845afa612ab0573d5f5f3e3d5ffd5b60203d10613245576101409050516101205260605163313ce567610160526020610160600461017c845afa612ae7573d5f5f3e3d5ffd5b3d602081183d602010021880610160016101801161324557610160518060081c613245576101a052506101a09050516101405260805163b6b1ab9a610180526060516101a052610120516101c0526040516101e0526101405161020052612b4f6101606125c8565b6101605161022052803b15613245575f61018060a461019c5f855af1612b77573d5f5f3e3d5ffd5b505b565b6004610260516020525f5260405f20546102c05260016102e0526102c051612bb85761026051604052612baf6103006127a3565b61030051612bba565b5f5b15612c1e57610260516338d52e0f610320526020610320600461033c845afa612be5573d5f5f3e3d5ffd5b3d602081183d602010021880610320016103401161324557610320518060a01c6132455761036052506103609050516102c0525f6102e0525b6102c0511561324557610240516102c05118613245576102e051612c71576102c05160e0526102605161010052612c53612967565b6102c05160405261026051606052604061028060805e612c71612a17565b61026051815250565b6004610240516020525f5260405f20546102a05260016102c0526102a051612cb75761024051604052612cae6102e06127a3565b6102e051612cb9565b5f5b15612d1d57610240516338d52e0f610300526020610300600461031c845afa612ce4573d5f5f3e3d5ffd5b3d602081183d602010021880610300016103201161324557610300518060a01c6132455761034052506103409050516102a0525f6102c0525b6102a05115613245576102c051612d63576102a05160e0526102405161010052612d45612967565b6102a05160405261024051606052604061026060805e612d63612a17565b6102a051815250565b600460c0516020525f5260405f205415612d8a576001815250612da1565b60c051604052612d9a60e06127a3565b60e0518152505b565b600460c0516020525f5260405f205460e05260e051612dd65760c051604052612dcd6101006127a3565b61010051612dd8565b5f5b15612e355760c0516338d52e0f610120526020610120600461013c845afa612e02573d5f5f3e3d5ffd5b3d602081183d602010021880610120016101401161324557610120518060a01c61324557610160525061016090505160e0525b60e051815250565b6040516307a2d13a60805260605160a052602060806024609c845afa612e65573d5f5f3e3d5ffd5b60203d10613245576080905051815250565b60e0516101005260e051612e9957612e906101206126e2565b61012051610100525b6101005163c660d11261012052604060a06101405e6020610120604461013c845afa612ec7573d5f5f3e3d5ffd5b60203d1061324557610120905051815250565b6101a051612ee9576001612eef565b61018051155b15612f09575f81525f60208201525f604082015250612f97565b6101805160c052612f1b610200612da3565b610200516101e0526101e051612f40575f81525f60208201525f604082015250612f97565b604061018060405e612f53610220612e3d565b610220516102005260406101e060a05e6101c05160e052612f75610240612e77565b61024051610220526101e0518152610200516020820152610220516040820152505b565b6060366102c03760606102606101805e612fb4610320612eda565b6103206060816103805e5060606103806102c05e61030051815250565b60e051604052612fe26101006127a3565b61010051612ff0575f61304a565b60c05160e0516338d52e0f610120526020610120600461013c845afa613018573d5f5f3e3d5ffd5b3d602081183d602010021880610120016101401161324557610120518060a01c61324557610160525061016090505118155b815250565b600754606052606051156130e25760066040516020525f5260405f2054608052608051156130e2576060516001810381811161324557905060a05260a0516007555f60066040516020525f5260405f205560a051608051146130e257600560a0516020525f5260405f205460c05260c05160056080516020525f5260405f2055608051600660c0516020525f5260405f20555b565b600360e0516020525f5260405f205461012052610120511561324357600260e0516020525f5260405f2080610100516020525f5260405f209050546101405261014051156132435761012051600181038181116132455790506101605261016051600360e0516020525f5260405f20555f600260e0516020525f5260405f2080610100516020525f5260405f209050555f6004610100516020525f5260405f20556101605161014051146131fc57600160e0516020525f5260405f2080610160516020525f5260405f209050546101805261018051600160e0516020525f5260405f2080610140516020525f5260405f2090505561014051600260e0516020525f5260405f2080610180516020525f5260405f209050555b600161016051116132155760e05160405261321561304f565b6101005160e0517f806b555e5d3ce1eff082e5a7a21ef3550a2d56728951ae4e8a2a699509448be65f610180a35b565b5f80fd144817111d6b1fda1fda1d8b1dab1fda16111fda1b2a03fe1cc1155f16f21ef01c0719931a961fda1fda176e09251c28005b1fda104b1e451f11052a04b308e90439077a1fda00180fb11d4b1fda1fda1fda0a430aed1fda15d80a630b2a003b03b600941fda1fda025d07b506d807221e24099a08ae05ff1fda1fda1fda19661fda85582006f0c8444495a9d3547bc5567a0196f981fe0c47261a0174f8e660d3ab2026411932cb8118821840a165767970657283000403003800000000000000000000000044cf3c4f000dfd76a35d03298049d37be688d6f900000000000000000000000056c3119dc3b1a75763c87d5b0a2c55e489502232