all files / contracts/ Proxy.sol

100% Statements 2/2
100% Branches 0/0
100% Functions 2/2
100% Lines 3/3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28                    71×       2227× 2227×                        
pragma solidity ^0.4.23;
 
 
contract ProxyData {
    address internal proxied;
}
 
 
contract Proxy is ProxyData {
    constructor(address _proxied) public {
        proxied = _proxied;
    }
 
    function () public payable {
        address addr = proxied;
        assembly {
            let freememstart := mload(0x40)
                calldatacopy(freememstart, 0, calldatasize())
 
                let success := delegatecall(not(0), addr, freememstart, calldatasize(), freememstart, 0)
                returndatacopy(freememstart, 0, returndatasize())
                switch success
                    case 0 { revert(freememstart, returndatasize()) }
            default { return(freememstart, returndatasize()) }
        }
    }
}