pragma solidity 0.6.10;
pragma experimental ABIEncoderV2;
abstract contract YToken {
function getPricePerFullShare() external view virtual returns (uint256);
}
contract ZapDelegator {
address[] public _coins;
address[] public _underlying_coins;
address public curve;
address public token;
constructor(address[4] memory _coinsIn, address[4] memory _underlying_coinsIn, address _curve, address _pool_token) public {
for (uint i = 0; i < 4; i++) {
require(_underlying_coinsIn[i] != address(0));
require(_coinsIn[i] != address(0));
_coins.push(_coinsIn[i]);
_underlying_coins.push(_underlying_coinsIn[i]);
}
curve = _curve;
token = _pool_token;
}
function coins(int128 i) public view returns (address) {
return _coins[uint256(i)];
}
function underlying_coins(int128 i) public view returns (address) {
return _underlying_coins[uint256(i)];
}
fallback() external payable {
address _target = 0xFCBa3E75865d2d561BE8D220616520c171F12851;
assembly {
let _calldataMemOffset := mload(0x40)
let _callDataSZ := calldatasize()
let _size := and(add(_callDataSZ, 0x1f), not(0x1f))
mstore(0x40, add(_calldataMemOffset, _size))
calldatacopy(_calldataMemOffset, 0x0, _callDataSZ)
let _retval := delegatecall(gas(), _target, _calldataMemOffset, _callDataSZ, 0, 0)
switch _retval
case 0 {
revert(0,0)
} default {
let _returndataMemoryOff := mload(0x40)
mstore(0x40, add(_returndataMemoryOff, returndatasize()))
returndatacopy(_returndataMemoryOff, 0x0, returndatasize())
return(_returndataMemoryOff, returndatasize())
}
}
}
}
{
"compilationTarget": {
"browser/ZapDelegator.sol": "ZapDelegator"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[{"internalType":"address[4]","name":"_coinsIn","type":"address[4]"},{"internalType":"address[4]","name":"_underlying_coinsIn","type":"address[4]"},{"internalType":"address","name":"_curve","type":"address"},{"internalType":"address","name":"_pool_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_coins","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_underlying_coins","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"i","type":"int128"}],"name":"coins","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"curve","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"i","type":"int128"}],"name":"underlying_coins","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]