Contract 0x2fA4334cfD7c56a0E7Ca02BD81455205FcBDc5E9 3

DEX  
 

Contract Overview

DODO: Router
Balance:
6.224725338738760583 MATIC

MATIC Value:
$4.66 (@ $0.75/MATIC)

Token:
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x57a54280c69eb2680f233e07bbbaafaa2187ce9d9050ce531d322ae91bf8610cMix Swap435861222023-06-06 6:11:153 days 11 hrs ago0x27007cd6164307d9e34529a19e2be23f58b71272 IN  DODO: Router0 MATIC0.048988140502150.37323231
0xb71638095dab047871b444657e28ed477beb634961c1c2987611b2166ebf65bbMix Swap435858962023-06-06 6:01:383 days 12 hrs ago0x9ced52e82c29e40d0eaae6043b22e72b1fcb3250 IN  DODO: Router0 MATIC0.035717593151185.127598163
0x60018cafc0472693955710b474973f6532b4f7e9f96cb125260a034c209b0d24Dodo Mutli Swap434747302023-06-03 8:45:486 days 9 hrs ago0x6944b060f5de6ec44e242649b90ce6782207ab61 IN  DODO: Router0 MATIC0.102807519591164.682008511
0xe2ac4d2a9428ef51ff2b489ddd9e133041465597e88b9e41449a4ae91590244bDodo Mutli Swap434746792023-06-03 8:43:436 days 9 hrs ago0x6944b060f5de6ec44e242649b90ce6782207ab61 IN  DODO: Router0 MATIC0.133352412081183.043633301
0x855f1aad7f1ff7fdc103ab0b9ae5eeb30716beed458201b82f3c07ae37ebc33dMix Swap434745642023-06-03 8:38:516 days 9 hrs ago0x6944b060f5de6ec44e242649b90ce6782207ab61 IN  DODO: Router0 MATIC0.043543657752156.420863054
0xa9a02c077d90ea1be304fdc06363d9c944513797489fe38379c94c93bdea6e77Mix Swap434739292023-06-03 8:13:376 days 9 hrs ago0x6944b060f5de6ec44e242649b90ce6782207ab61 IN  DODO: Router0 MATIC0.008722500816251.383388572
0x5b016786fa446a59a7b49fc9ffbf60c65da2a6d8fcc0772e7f58551a1c5adbcaMix Swap434735012023-06-03 7:55:316 days 10 hrs ago0x6944b060f5de6ec44e242649b90ce6782207ab61 IN  DODO: Router0.1 MATIC0.069178518081165.137756393
0x3bdbaad715847470a2aab04283750c2b83b855faf079abd72ff74c36b9199c06Dodo Mutli Swap434733892023-06-03 7:51:136 days 10 hrs ago0x6944b060f5de6ec44e242649b90ce6782207ab61 IN  DODO: Router0.1 MATIC0.084675772696157.749393035
0x704b2261e4d63d063f767a76eef3f86866109198a99083832691fec0f129deb2Mix Swap434250722023-06-01 23:30:077 days 18 hrs ago0xc5a8942330d71b43a4608d6b23f88916dfba3eee IN  DODO: Router22.6 MATIC0.047080932606157.054756604
0xedf7b079d9055b8eeee0e43798a8a7726d8d657ccaabf7b443dd1634a47b1b76Mix Swap433324872023-05-30 15:25:2910 days 2 hrs ago0x8d56a54bcaa2493e951809b9e9d1474cbd76a428 IN  DODO: Router2 MATIC0.035900035491301.040942299
0x9c51179c947331578295812c348060f94587627d53c74fe72d6659c8367c5034Mix Swap433324762023-05-30 15:25:0510 days 2 hrs ago0x8d56a54bcaa2493e951809b9e9d1474cbd76a428 IN  DODO: Router2 MATIC0.040743708557298.810503309
0x2a515268aa51e37da0e06813b6046a74ac845665dfa1ef1af90bf1df4c93cfe6Dodo Mutli Swap433204912023-05-30 8:13:1810 days 9 hrs ago0x6c6db90df29b322157f7be4490241bb19c51592b IN  DODO: Router0.0045 MATIC0.013569899676 192.194599196
0x39f829d8743b04eae17b53268d17868cf2e1aa95651978750712614e4408905cDodo Mutli Swap433132652023-05-30 3:46:3410 days 14 hrs ago0x59ac9c4fcd425458bf2cdeae4f97e70382b81704 IN  DODO: Router0.0076 MATIC0.012446801677 171.396332656
0xf96cd883beb9e2bfcdb8f98ee034aab852d3193a1d05ab6139d1a66b5c259e01Dodo Mutli Swap433109002023-05-30 2:16:1610 days 15 hrs ago0x79d212f3047be5d00bd0ff31fdce7cdbeffbb735 IN  DODO: Router0.0053 MATIC0.010458180143 160.222146124
0x56c82377a01966e3b10846e27b1798dad09b000b738886d07849f3f8d94725e0Dodo Mutli Swap433106222023-05-30 2:05:5210 days 15 hrs ago0xcbd4f2c75ec147baadacf76db456ddfc4ea2525f IN  DODO: Router0.0032 MATIC0.011618907692 164.590082481
0x834ba54c047c67d4d161e782728d77f26d474b788f1880b5d36b97a1bfda2b52Mix Swap433103492023-05-30 1:55:2410 days 16 hrs ago0x1784e92fc495ce95b8453617fcf86ed8f3dfa923 IN  DODO: Router0.0031 MATIC0.009401385684 150.410138139
0x745170624c6b081214fe91e854dcfc23afed02e80a08215f60e41e9873b9e7beDodo Mutli Swap433096552023-05-30 1:29:4510 days 16 hrs ago0x9bf89e3778b7fdf1ac659e2358804b7785fb9fd7 IN  DODO: Router0.0068 MATIC0.011957148544 164.708090597
0x00a68d6eb56c699d56063058953a4c4737fa8f65dc37fef1108398665f3ea56fMix Swap433094932023-05-30 1:23:2810 days 16 hrs ago0x15b05f3e0ce689722d5739a2444bda7f3b6ec9e0 IN  DODO: Router0.0067 MATIC0.007692532864 143.984817592
0x4286e980988ea5b96e0b52a0bf70e6a5453c084d6eaf38e9b53a228dcb55d606Dodo Mutli Swap433087062023-05-30 0:54:1610 days 17 hrs ago0xe43c49713234f6cd7bf25c6a9be4e850471ff16f IN  DODO: Router0.0077 MATIC0.010914924045 162.154207952
0x928b25b392a3677bea311f7b277eda3760bf611e24aac6f45cfff08fb171851fDodo Mutli Swap433075972023-05-30 0:13:2910 days 17 hrs ago0x6c55825ccf64118d78d7e12821d6f1861f50130c IN  DODO: Router0.0042 MATIC0.011023122863 156.123827827
0x1b4ec5ebbc989ae7ffe15820525e64f69a3872cf359c5b5193344ef7e846ec16Dodo Mutli Swap433074342023-05-30 0:07:3510 days 17 hrs ago0x4b9397db8866f657547072f00a51f776cf1c4a26 IN  DODO: Router0.0079 MATIC0.012145759944 162.707104603
0xf5711ae2985354db3ffd298c799cccd2ae45fbb00a59c41337a78edfc9b54768Dodo Mutli Swap433048832023-05-29 22:33:3910 days 19 hrs ago0xf3459c3f120deae3390a92553e69798d49a72122 IN  DODO: Router0.0077 MATIC0.010117719022 150.310777014
0x8e9b951b9aed39de553ee23d3df8da1bb93d1f73c21b53d74b04c705b28c12abDodo Mutli Swap433045532023-05-29 22:21:4410 days 19 hrs ago0xd8e9b828303ca2224f705cae7aa9a01ee4b051b5 IN  DODO: Router0.0072 MATIC0.011090418947 152.69328874
0xbf35460359a7f4aa93ea8e37d15c7cc5fc568d4fa263e1d226d3ab49c7e75546Dodo Mutli Swap433041202023-05-29 22:05:2410 days 20 hrs ago0x4f0d9192eb83fab7c9d4ebe8475aec077dafeac2 IN  DODO: Router0.0076 MATIC0.010766397367 148.330174247
0x6ea10404002554768df3fb34ae260886b55580429a9781eff70fe80a9c395b2cDodo Mutli Swap432618192023-05-28 20:15:4111 days 21 hrs ago0xf488b060034d6b39dffcfce250003f338d48dab3 IN  DODO: Router0.0057 MATIC0.010793242 149.102641335
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x5c59228f55945473299af6e209eb78224ce98de7dad0ca80a9756d89cdc6fd03437203812023-06-09 17:25:4239 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0x5c59228f55945473299af6e209eb78224ce98de7dad0ca80a9756d89cdc6fd03437203812023-06-09 17:25:4239 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0xc67cf356ac434b40275d735ae4e91176410b9ad33e2758ad086aea9d6c8ef002437203682023-06-09 17:25:0240 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0xc67cf356ac434b40275d735ae4e91176410b9ad33e2758ad086aea9d6c8ef002437203682023-06-09 17:25:0240 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0x5e7e37423036ae3ed120a7be27ddd00e43c1d3526c0b5b316dd17a13bce32db0437203562023-06-09 17:24:2841 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0x5e7e37423036ae3ed120a7be27ddd00e43c1d3526c0b5b316dd17a13bce32db0437203562023-06-09 17:24:2841 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0x7deda42cfa7e0664e17ea41f5535f08f8e21309d1f29097be591b041bfb2fd91437203042023-06-09 17:22:3843 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0x7deda42cfa7e0664e17ea41f5535f08f8e21309d1f29097be591b041bfb2fd91437203042023-06-09 17:22:3843 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0x72471cb4a9dc2efb1af3c81533e81a1b0c05c9c2199f38c5138f890ea018b897437194082023-06-09 16:48:191 hr 17 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0x72471cb4a9dc2efb1af3c81533e81a1b0c05c9c2199f38c5138f890ea018b897437194082023-06-09 16:48:191 hr 17 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0xc5c8fd8375aceb8f1e38c1c74365df26ad6f42948f589df19334bc5cb3d8afd2437193462023-06-09 16:46:071 hr 19 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0xc5c8fd8375aceb8f1e38c1c74365df26ad6f42948f589df19334bc5cb3d8afd2437193462023-06-09 16:46:071 hr 19 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0x3a0a67b87a9c3aa3d8c0fc2bd234e1d9bdb2b7155d7a89b8073c86043502bf38437189152023-06-09 16:30:191 hr 35 mins ago DODO: Router Polygon: WMATIC Token0.0995 MATIC
0x3a0a67b87a9c3aa3d8c0fc2bd234e1d9bdb2b7155d7a89b8073c86043502bf38437189152023-06-09 16:30:191 hr 35 mins ago LI.FI: LiFi Diamond DODO: Router0.0995 MATIC
0x9e049d37be7902426691184b8e5cb74c212da4837adc59bfac78afa2a552ea4e437176212023-06-09 15:42:542 hrs 22 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0x9e049d37be7902426691184b8e5cb74c212da4837adc59bfac78afa2a552ea4e437176212023-06-09 15:42:542 hrs 22 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0xdaaa71eb794f32a2f302346d5cab5f58e748767cb4a4fdae0977b935b4312fe0437162552023-06-09 14:52:063 hrs 13 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0xdaaa71eb794f32a2f302346d5cab5f58e748767cb4a4fdae0977b935b4312fe0437162552023-06-09 14:52:063 hrs 13 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0xe8cdba02252a1078ae6e9b86ed889391c2a803faf47dc2804bb0ad227e4bc8d6437162282023-06-09 14:51:103 hrs 14 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0xe8cdba02252a1078ae6e9b86ed889391c2a803faf47dc2804bb0ad227e4bc8d6437162282023-06-09 14:51:103 hrs 14 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0xcba09058c94610c74a92d80be9054f6335773a254d06b8e2a9498339a3a19535437157002023-06-09 14:31:243 hrs 34 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0xcba09058c94610c74a92d80be9054f6335773a254d06b8e2a9498339a3a19535437157002023-06-09 14:31:243 hrs 34 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0xb2c0204749a051b4a2bd34fec622399e239cf85ceb900816e628550760ecbc7b437153742023-06-09 14:19:503 hrs 45 mins ago DODO: Router Polygon: WMATIC Token200 MATIC
0xb2c0204749a051b4a2bd34fec622399e239cf85ceb900816e628550760ecbc7b437153742023-06-09 14:19:503 hrs 45 mins ago 0x1841ca19053b0ac116cd8208e70fd0a4e64cbd94 DODO: Router200 MATIC
0xd310955d15d55303c4d6f6a8f6e979e74c74c7fd0be6baaa2b5a0db6dc9d093a437153412023-06-09 14:18:403 hrs 47 mins ago DODO: Router Polygon: WMATIC Token0.04975 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DODORouteProxy

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-11
*/

// File: contracts/intf/IDODOApprove.sol

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

interface IDODOApprove {
    function claimTokens(address token,address who,address dest,uint256 amount) external;
    function getDODOProxy() external view returns (address);
}

// File: contracts/lib/InitializableOwnable.sol

/**
 * @title Ownable
 * @author DODO Breeder
 *
 * @notice Ownership related functions
 */
contract InitializableOwnable {
    address public _OWNER_;
    address public _NEW_OWNER_;
    bool internal _INITIALIZED_;

    // ============ Events ============

    event OwnershipTransferPrepared(address indexed previousOwner, address indexed newOwner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    // ============ Modifiers ============

    modifier notInitialized() {
        require(!_INITIALIZED_, "DODO_INITIALIZED");
        _;
    }

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

    // ============ Functions ============

    function initOwner(address newOwner) public notInitialized {
        _INITIALIZED_ = true;
        _OWNER_ = newOwner;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() public {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}

// File: contracts/SmartRoute/DODOApproveProxy.sol

interface IDODOApproveProxy {
    function isAllowedProxy(address _proxy) external view returns (bool);
    function claimTokens(address token,address who,address dest,uint256 amount) external;
}

/**
 * @title DODOApproveProxy
 * @author DODO Breeder
 *
 * @notice Allow different version dodoproxy to claim from DODOApprove
 */
contract DODOApproveProxy is InitializableOwnable {
    
    // ============ Storage ============
    uint256 private constant _TIMELOCK_DURATION_ = 3 days;
    mapping (address => bool) public _IS_ALLOWED_PROXY_;
    uint256 public _TIMELOCK_;
    address public _PENDING_ADD_DODO_PROXY_;
    address public immutable _DODO_APPROVE_;

    // ============ Modifiers ============
    modifier notLocked() {
        require(
            _TIMELOCK_ <= block.timestamp,
            "SetProxy is timelocked"
        );
        _;
    }

    constructor(address dodoApporve) public {
        _DODO_APPROVE_ = dodoApporve;
    }

    function init(address owner, address[] memory proxies) external {
        initOwner(owner);
        for(uint i = 0; i < proxies.length; i++) 
            _IS_ALLOWED_PROXY_[proxies[i]] = true;
    }

    function unlockAddProxy(address newDodoProxy) public onlyOwner {
        _TIMELOCK_ = block.timestamp + _TIMELOCK_DURATION_;
        _PENDING_ADD_DODO_PROXY_ = newDodoProxy;
    }

    function lockAddProxy() public onlyOwner {
       _PENDING_ADD_DODO_PROXY_ = address(0);
       _TIMELOCK_ = 0;
    }


    function addDODOProxy() external onlyOwner notLocked() {
        _IS_ALLOWED_PROXY_[_PENDING_ADD_DODO_PROXY_] = true;
        lockAddProxy();
    }

    function removeDODOProxy (address oldDodoProxy) public onlyOwner {
        _IS_ALLOWED_PROXY_[oldDodoProxy] = false;
    }
    
    function claimTokens(
        address token,
        address who,
        address dest,
        uint256 amount
    ) external {
        require(_IS_ALLOWED_PROXY_[msg.sender], "DODOApproveProxy:Access restricted");
        IDODOApprove(_DODO_APPROVE_).claimTokens(
            token,
            who,
            dest,
            amount
        );
    }

    function isAllowedProxy(address _proxy) external view returns (bool) {
        return _IS_ALLOWED_PROXY_[_proxy];
    }
}

// File: contracts/intf/IERC20.sol


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

// File: contracts/intf/IWETH.sol



interface IWETH {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address src,
        address dst,
        uint256 wad
    ) external returns (bool);

    function deposit() external payable;

    function withdraw(uint256 wad) external;
}

// File: contracts/lib/SafeMath.sol


/**
 * @title SafeMath
 * @author DODO Breeder
 *
 * @notice Math operations with safety checks that revert on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MUL_ERROR");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "DIVIDING_ERROR");
        return a / b;
    }

    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 quotient = div(a, b);
        uint256 remainder = a - quotient * b;
        if (remainder > 0) {
            return quotient + 1;
        } else {
            return quotient;
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SUB_ERROR");
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "ADD_ERROR");
        return c;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = x / 2 + 1;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

// File: contracts/lib/SafeERC20.sol

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) {
            // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: contracts/SmartRoute/lib/UniversalERC20.sol



library UniversalERC20 {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    IERC20 private constant ETH_ADDRESS = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);

    function universalTransfer(
        IERC20 token,
        address payable to,
        uint256 amount
    ) internal {
        if (amount > 0) {
            if (isETH(token)) {
                to.transfer(amount);
            } else {
                token.safeTransfer(to, amount);
            }
        }
    }

    function universalApproveMax(
        IERC20 token,
        address to,
        uint256 amount
    ) internal {
        uint256 allowance = token.allowance(address(this), to);
        if (allowance < amount) {
            if (allowance > 0) {
                token.safeApprove(to, 0);
            }
            token.safeApprove(to, uint256(-1));
        }
    }

    function universalBalanceOf(IERC20 token, address who) internal view returns (uint256) {
        if (isETH(token)) {
            return who.balance;
        } else {
            return token.balanceOf(who);
        }
    }

    function tokenBalanceOf(IERC20 token, address who) internal view returns (uint256) {
        return token.balanceOf(who);
    }

    function isETH(IERC20 token) internal pure returns (bool) {
        return token == ETH_ADDRESS;
    }
}

// File: contracts/SmartRoute/intf/IDODOAdapter.sol


interface IDODOAdapter {
    
    function sellBase(address to, address pool, bytes memory data) external;

    function sellQuote(address to, address pool, bytes memory data) external;
}

// File: contracts/SmartRoute/proxies/DODORouteProxy.sol




/**
 * @title DODORouteProxy
 * @author DODO Breeder
 *
 * @notice Entrance of Split trading in DODO platform
 */
contract DODORouteProxy {
    using SafeMath for uint256;
    using UniversalERC20 for IERC20;

    // ============ Storage ============

    address constant _ETH_ADDRESS_ = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
    address public immutable _WETH_;
    address public immutable _DODO_APPROVE_PROXY_;

    struct PoolInfo {
        uint256 direction;
        uint256 poolEdition;
        uint256 weight;
        address pool;
        address adapter;
        bytes moreInfo;
    }

    // ============ Events ============

     event OrderHistory(
        address fromToken,
        address toToken,
        address sender,
        uint256 fromAmount,
        uint256 returnAmount
    );

    // ============ Modifiers ============

    modifier judgeExpired(uint256 deadLine) {
        require(deadLine >= block.timestamp, "DODORouteProxy: EXPIRED");
        _;
    }

    fallback() external payable {}

    receive() external payable {}

    constructor (
        address payable weth,
        address dodoApproveProxy
    ) public {
        _WETH_ = weth;
        _DODO_APPROVE_PROXY_ = dodoApproveProxy;
    }

    function mixSwap(
        address fromToken,
        address toToken,
        uint256 fromTokenAmount,
        uint256 minReturnAmount,
        address[] memory mixAdapters,
        address[] memory mixPairs,
        address[] memory assetTo,
        uint256 directions,
        bytes[] memory moreInfos,
        uint256 deadLine
    ) external payable judgeExpired(deadLine) returns (uint256 returnAmount) {
        require(mixPairs.length > 0, "DODORouteProxy: PAIRS_EMPTY");
        require(mixPairs.length == mixAdapters.length, "DODORouteProxy: PAIR_ADAPTER_NOT_MATCH");
        require(mixPairs.length == assetTo.length - 1, "DODORouteProxy: PAIR_ASSETTO_NOT_MATCH");
        require(minReturnAmount > 0, "DODORouteProxy: RETURN_AMOUNT_ZERO");

        address _fromToken = fromToken;
        address _toToken = toToken;
        uint256 _fromTokenAmount = fromTokenAmount;
        
        uint256 toTokenOriginBalance = IERC20(_toToken).universalBalanceOf(msg.sender);
        
        _deposit(msg.sender, assetTo[0], _fromToken, _fromTokenAmount, _fromToken == _ETH_ADDRESS_);

        for (uint256 i = 0; i < mixPairs.length; i++) {
            if (directions & 1 == 0) {
                IDODOAdapter(mixAdapters[i]).sellBase(assetTo[i + 1],mixPairs[i], moreInfos[i]);
            } else {
                IDODOAdapter(mixAdapters[i]).sellQuote(assetTo[i + 1],mixPairs[i], moreInfos[i]);
            }
            directions = directions >> 1;
        }

        if(_toToken == _ETH_ADDRESS_) {
            returnAmount = IWETH(_WETH_).balanceOf(address(this));
            IWETH(_WETH_).withdraw(returnAmount);
            msg.sender.transfer(returnAmount);
        }else {
            returnAmount = IERC20(_toToken).tokenBalanceOf(msg.sender).sub(toTokenOriginBalance);
        }

        require(returnAmount >= minReturnAmount, "DODORouteProxy: Return amount is not enough");

        emit OrderHistory(
            _fromToken,
            _toToken,
            msg.sender,
            _fromTokenAmount,
            returnAmount
        );
    }

    function dodoMutliSwap(
        uint256 fromTokenAmount,
        uint256 minReturnAmount,
        uint256[] memory totalWeight,
        uint256[] memory splitNumber,
        address[] memory midToken,
        address[] memory assetFrom,
        bytes[] memory sequence,
        uint256 deadLine
    ) external payable judgeExpired(deadLine) returns (uint256 returnAmount) {
        require(assetFrom.length == splitNumber.length, 'DODORouteProxy: PAIR_ASSETTO_NOT_MATCH');        
        require(minReturnAmount > 0, "DODORouteProxy: RETURN_AMOUNT_ZERO");
        
        uint256 _fromTokenAmount = fromTokenAmount;
        address fromToken = midToken[0];
        address toToken = midToken[midToken.length - 1];

        uint256 toTokenOriginBalance = IERC20(toToken).universalBalanceOf(msg.sender);
        _deposit(msg.sender, assetFrom[0], fromToken, _fromTokenAmount, fromToken == _ETH_ADDRESS_);

        _multiSwap(totalWeight, midToken, splitNumber, sequence, assetFrom);
    
        if(toToken == _ETH_ADDRESS_) {
            returnAmount = IWETH(_WETH_).balanceOf(address(this));
            IWETH(_WETH_).withdraw(returnAmount);
            msg.sender.transfer(returnAmount);
        }else {
            returnAmount = IERC20(toToken).tokenBalanceOf(msg.sender).sub(toTokenOriginBalance);
        }

        require(returnAmount >= minReturnAmount, "DODORouteProxy: Return amount is not enough");
    
        emit OrderHistory(
            fromToken,
            toToken,
            msg.sender,
            _fromTokenAmount,
            returnAmount
        );    
    }

    
    //====================== internal =======================

    function _multiSwap(
        uint256[] memory totalWeight,
        address[] memory midToken,
        uint256[] memory splitNumber,
        bytes[] memory swapSequence,
        address[] memory assetFrom
    ) internal { 
        for(uint256 i = 1; i < splitNumber.length; i++) { 
            // define midtoken address, ETH -> WETH address
            uint256 curTotalAmount = IERC20(midToken[i]).tokenBalanceOf(assetFrom[i-1]);
            uint256 curTotalWeight = totalWeight[i-1];
            
            for(uint256 j = splitNumber[i-1]; j < splitNumber[i]; j++) {
                PoolInfo memory curPoolInfo;
                {
                    (address pool, address adapter, uint256 mixPara, bytes memory moreInfo) = abi.decode(swapSequence[j], (address, address, uint256, bytes));
                
                    curPoolInfo.direction = mixPara >> 17;
                    curPoolInfo.weight = (0xffff & mixPara) >> 9;
                    curPoolInfo.poolEdition = (0xff & mixPara);
                    curPoolInfo.pool = pool;
                    curPoolInfo.adapter = adapter;
                    curPoolInfo.moreInfo = moreInfo;
                }

                if(assetFrom[i-1] == address(this)) {
                    uint256 curAmount = curTotalAmount.div(curTotalWeight).mul(curPoolInfo.weight);
            
                    if(curPoolInfo.poolEdition == 1) {   
                        //For using transferFrom pool (like dodoV1, Curve)
                        IERC20(midToken[i]).transfer(curPoolInfo.adapter, curAmount);
                    } else {
                        //For using transfer pool (like dodoV2)
                        IERC20(midToken[i]).transfer(curPoolInfo.pool, curAmount);
                    }
                }
                
                if(curPoolInfo.direction == 0) {
                    IDODOAdapter(curPoolInfo.adapter).sellBase(assetFrom[i], curPoolInfo.pool, curPoolInfo.moreInfo);
                } else {
                    IDODOAdapter(curPoolInfo.adapter).sellQuote(assetFrom[i], curPoolInfo.pool, curPoolInfo.moreInfo);
                }
            }
        }
    }

    function _deposit(
        address from,
        address to,
        address token,
        uint256 amount,
        bool isETH
    ) internal {
        if (isETH) {
            if (amount > 0) {
                IWETH(_WETH_).deposit{value: amount}();
                if (to != address(this)) SafeERC20.safeTransfer(IERC20(_WETH_), to, amount);
            }
        } else {
            IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(token, from, to, amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"weth","type":"address"},{"internalType":"address","name":"dodoApproveProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"fromToken","type":"address"},{"indexed":false,"internalType":"address","name":"toToken","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"fromAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"}],"name":"OrderHistory","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_DODO_APPROVE_PROXY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_WETH_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTokenAmount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256[]","name":"totalWeight","type":"uint256[]"},{"internalType":"uint256[]","name":"splitNumber","type":"uint256[]"},{"internalType":"address[]","name":"midToken","type":"address[]"},{"internalType":"address[]","name":"assetFrom","type":"address[]"},{"internalType":"bytes[]","name":"sequence","type":"bytes[]"},{"internalType":"uint256","name":"deadLine","type":"uint256"}],"name":"dodoMutliSwap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"fromTokenAmount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"address[]","name":"mixAdapters","type":"address[]"},{"internalType":"address[]","name":"mixPairs","type":"address[]"},{"internalType":"address[]","name":"assetTo","type":"address[]"},{"internalType":"uint256","name":"directions","type":"uint256"},{"internalType":"bytes[]","name":"moreInfos","type":"bytes[]"},{"internalType":"uint256","name":"deadLine","type":"uint256"}],"name":"mixSwap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b5060405162001a7038038062001a70833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c61197a620000f6600039806108b55280610a5552508060c152806103c3528061046252806106ea5280610789528061098b5280610a13525061197a6000f3fe6080604052600436106100435760003560e01c80630d4eec8f1461004c5780637617b389146100775780638179178814610097578063eb99be12146100aa5761004a565b3661004a57005b005b34801561005857600080fd5b506100616100bf565b60405161006e9190611540565b60405180910390f35b61008a61008536600461130f565b6100e3565b60405161006e919061188c565b61008a6100a536600461143b565b61059a565b3480156100b657600080fd5b506100616108b3565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000814281101561010f5760405162461bcd60e51b815260040161010690611618565b60405180910390fd5b60008751116101305760405162461bcd60e51b81526004016101069061164f565b87518751146101515760405162461bcd60e51b815260040161010690611686565b60018651038751146101755760405162461bcd60e51b8152600401610106906117d9565b600089116101955760405162461bcd60e51b815260040161010690611774565b8b8b8b60006101b36001600160a01b0384163363ffffffff6108d716565b90506101fe338b6000815181106101c657fe5b6020026020010151868573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316896001600160a01b03161461097d565b60005b8b518110156103865760018a166102c8578c818151811061021e57fe5b60200260200101516001600160a01b03166330e6ae318c836001018151811061024357fe5b60200260200101518e848151811061025757fe5b60200260200101518c858151811061026b57fe5b60200260200101516040518463ffffffff1660e01b8152600401610291939291906115b2565b600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b5050505061037a565b8c81815181106102d457fe5b60200260200101516001600160a01b0316636f7929f28c83600101815181106102f957fe5b60200260200101518e848151811061030d57fe5b60200260200101518c858151811061032157fe5b60200260200101516040518463ffffffff1660e01b8152600401610347939291906115b2565b600060405180830381600087803b15801561036157600080fd5b505af1158015610375573d6000803e3d6000fd5b505050505b6001998a1c9901610201565b506001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156104fc576040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906103f8903090600401611540565b60206040518083038186803b15801561041057600080fd5b505afa158015610424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104489190611423565b604051632e1a7d4d60e01b81529096506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d9061049790899060040161188c565b600060405180830381600087803b1580156104b157600080fd5b505af11580156104c5573d6000803e3d6000fd5b505060405133925088156108fc02915088906000818181858888f193505050501580156104f6573d6000803e3d6000fd5b50610528565b610525816105196001600160a01b0386163363ffffffff610aca16565b9063ffffffff610af916565b95505b8c8610156105485760405162461bcd60e51b8152600401610106906116cc565b7f92ceb067a9883c85aba061e46b9edf505a0d6e81927c4b966ebed543a5221787848433858a60405161057f959493929190611554565b60405180910390a150505050509a9950505050505050505050565b600081428110156105bd5760405162461bcd60e51b815260040161010690611618565b86518551146105de5760405162461bcd60e51b8152600401610106906117d9565b600089116105fe5760405162461bcd60e51b815260040161010690611774565b60008a905060008760008151811061061257fe5b6020026020010151905060008860018a51038151811061062e57fe5b60200260200101519050600061065633836001600160a01b03166108d790919063ffffffff16565b90506106a1338a60008151811061066957fe5b6020026020010151858773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316886001600160a01b03161461097d565b6106ae8c8b8d8b8d610b21565b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610823576040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061071f903090600401611540565b60206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190611423565b604051632e1a7d4d60e01b81529096506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906107be90899060040161188c565b600060405180830381600087803b1580156107d857600080fd5b505af11580156107ec573d6000803e3d6000fd5b505060405133925088156108fc02915088906000818181858888f1935050505015801561081d573d6000803e3d6000fd5b50610843565b610840816105196001600160a01b0385163363ffffffff610aca16565b95505b8c8610156108635760405162461bcd60e51b8152600401610106906116cc565b7f92ceb067a9883c85aba061e46b9edf505a0d6e81927c4b966ebed543a5221787838333878a60405161089a959493929190611554565b60405180910390a1505050505098975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006108e283610f00565b156108f857506001600160a01b03811631610977565b6040516370a0823160e01b81526001600160a01b038416906370a0823190610924908590600401611540565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190611423565b90505b92915050565b8015610a3e578115610a39577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156109e457600080fd5b505af11580156109f8573d6000803e3d6000fd5b505050506001600160a01b03851630149050610a3957610a397f00000000000000000000000000000000000000000000000000000000000000008584610f25565b610ac3565b60405163052f523360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630a5ea46690610a90908690899089908890600401611588565b600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b505050505b5050505050565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190610924908590600401611540565b600082821115610b1b5760405162461bcd60e51b8152600401610106906117b6565b50900390565b60015b8351811015610ef8576000610b74836001840381518110610b4157fe5b6020026020010151878481518110610b5557fe5b60200260200101516001600160a01b0316610aca90919063ffffffff16565b90506000876001840381518110610b8757fe5b602002602001015190506000866001850381518110610ba257fe5b602002602001015190505b868481518110610bb957fe5b6020026020010151811015610eed57610bd06110a9565b600080600060608a8681518110610be357fe5b6020026020010151806020019051810190610bfe9190611268565b601182901c8952607f600983901c1660408a015260ff90911660208901526001600160a01b0392831660608901529116608087015260a0860152505087513092508891506000198801908110610c5057fe5b60200260200101516001600160a01b03161415610dd6576040810151600090610c8f90610c83878763ffffffff610f8016565b9063ffffffff610fb216565b9050816020015160011415610d3b57898681518110610caa57fe5b60200260200101516001600160a01b031663a9059cbb8360800151836040518363ffffffff1660e01b8152600401610ce39291906115ff565b602060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190611403565b50610dd4565b898681518110610d4757fe5b60200260200101516001600160a01b031663a9059cbb8360600151836040518363ffffffff1660e01b8152600401610d809291906115ff565b602060405180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd29190611403565b505b505b8051610e625780608001516001600160a01b03166330e6ae31878781518110610dfb57fe5b602002602001015183606001518460a001516040518463ffffffff1660e01b8152600401610e2b939291906115b2565b600060405180830381600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b50505050610ee4565b80608001516001600160a01b0316636f7929f2878781518110610e8157fe5b602002602001015183606001518460a001516040518463ffffffff1660e01b8152600401610eb1939291906115b2565b600060405180830381600087803b158015610ecb57600080fd5b505af1158015610edf573d6000803e3d6000fd5b505050505b50600101610bad565b505050600101610b24565b505050505050565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14919050565b610f7b8363a9059cbb60e01b8484604051602401610f449291906115ff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610fec565b505050565b6000808211610fa15760405162461bcd60e51b81526004016101069061174c565b818381610faa57fe5b049392505050565b600082610fc157506000610977565b82820282848281610fce57fe5b04146109745760405162461bcd60e51b815260040161010690611869565b60006060836001600160a01b0316836040516110089190611524565b6000604051808303816000865af19150503d8060008114611045576040519150601f19603f3d011682016040523d82523d6000602084013e61104a565b606091505b50915091508161106c5760405162461bcd60e51b815260040161010690611717565b8051156110a357808060200190518101906110879190611403565b6110a35760405162461bcd60e51b81526004016101069061181f565b50505050565b6040518060c0016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b80356109778161192c565b600082601f83011261110c578081fd5b813561111f61111a826118bc565b611895565b81815291506020808301908481018184028601820187101561114057600080fd5b60005b848110156111685781356111568161192c565b84529282019290820190600101611143565b505050505092915050565b600082601f830112611183578081fd5b813561119161111a826118bc565b818152915060208083019084810160005b84811015611168578135870188603f8201126111bd57600080fd5b838101356111cd61111a826118dc565b81815260408b818486010111156111e357600080fd5b828185018884013750600091810186019190915285525092820192908201906001016111a2565b600082601f83011261121a578081fd5b813561122861111a826118bc565b81815291506020808301908481018184028601820187101561124957600080fd5b60005b848110156111685781358452928201929082019060010161124c565b6000806000806080858703121561127d578384fd5b84516112888161192c565b60208601519094506112998161192c565b60408601516060870151919450925067ffffffffffffffff8111156112bc578182fd5b80860187601f8201126112cd578283fd5b805191506112dd61111a836118dc565b8281528860208484010111156112f1578384fd5b611302836020830160208501611900565b9598949750929550505050565b6000806000806000806000806000806101408b8d03121561132e578586fd5b6113388c8c6110f1565b99506113478c60208d016110f1565b985060408b0135975060608b0135965060808b013567ffffffffffffffff80821115611371578788fd5b61137d8e838f016110fc565b975060a08d0135915080821115611392578687fd5b61139e8e838f016110fc565b965060c08d01359150808211156113b3578586fd5b6113bf8e838f016110fc565b955060e08d013594506101008d01359150808211156113dc578384fd5b506113e98d828e01611173565b9250506101208b013590509295989b9194979a5092959850565b600060208284031215611414578081fd5b81518015158114610974578182fd5b600060208284031215611434578081fd5b5051919050565b600080600080600080600080610100898b031215611457578384fd5b8835975060208901359650604089013567ffffffffffffffff8082111561147c578586fd5b6114888c838d0161120a565b975060608b013591508082111561149d578586fd5b6114a98c838d0161120a565b965060808b01359150808211156114be578586fd5b6114ca8c838d016110fc565b955060a08b01359150808211156114df578485fd5b6114eb8c838d016110fc565b945060c08b0135915080821115611500578384fd5b5061150d8b828c01611173565b92505060e089013590509295985092959890939650565b60008251611536818460208701611900565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b600060018060a01b0380861683528085166020840152506060604083015282518060608401526115e9816080850160208701611900565b601f01601f191691909101608001949350505050565b6001600160a01b03929092168252602082015260400190565b60208082526017908201527f444f444f526f75746550726f78793a2045585049524544000000000000000000604082015260600190565b6020808252601b908201527f444f444f526f75746550726f78793a2050414952535f454d5054590000000000604082015260600190565b60208082526026908201527f444f444f526f75746550726f78793a20504149525f414441505445525f4e4f546040820152650be9a82a886960d31b606082015260800190565b6020808252602b908201527f444f444f526f75746550726f78793a2052657475726e20616d6f756e7420697360408201526a040dcdee840cadcdeeaced60ab1b606082015260800190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252600e908201526d2224ab24a224a723afa2a92927a960911b604082015260600190565b60208082526022908201527f444f444f526f75746550726f78793a2052455455524e5f414d4f554e545f5a45604082015261524f60f01b606082015260800190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526026908201527f444f444f526f75746550726f78793a20504149525f4153534554544f5f4e4f546040820152650be9a82a886960d31b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff811182821017156118b457600080fd5b604052919050565b600067ffffffffffffffff8211156118d2578081fd5b5060209081020190565b600067ffffffffffffffff8211156118f2578081fd5b50601f01601f191660200190565b60005b8381101561191b578181015183820152602001611903565b838111156110a35750506000910152565b6001600160a01b038116811461194157600080fd5b5056fea2646970667358221220dbbd9888adbcc1054e6920d6da5017b9335680caa7689de59140cc96322b51dc64736f6c634300060900330000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7

-----Decoded View---------------
Arg [0] : weth (address): 0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : dodoApproveProxy (address): 0x01feea29da5ae41b0b5f6b10b93ee34752ef80d7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : 00000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7


Deployed ByteCode Sourcemap

13743:7692:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13973:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14917:2111;;;;;;;;;:::i;:::-;;;;;;;;17036:1626;;;;;;;;;:::i;14011:45::-;;;;;;;;;;;;;:::i;13973:31::-;;;:::o;14917:2111::-;15313:20;15294:8;14588:15;14576:8;:27;;14568:63;;;;-1:-1:-1;;;14568:63:0;;;;;;;;;;;;;;;;;15372:1:::1;15354:8;:15;:19;15346:59;;;;-1:-1:-1::0;;;15346:59:0::1;;;;;;;;;15443:11;:18;15424:8;:15;:37;15416:88;;;;-1:-1:-1::0;;;15416:88:0::1;;;;;;;;;15559:1;15542:7;:14;:18;15523:8;:15;:37;15515:88;;;;-1:-1:-1::0;;;15515:88:0::1;;;;;;;;;15640:1;15622:15;:19;15614:66;;;;-1:-1:-1::0;;;15614:66:0::1;;;;;;;;;15714:9:::0;15753:7;15798:15;15693:18:::1;15865:47;-1:-1:-1::0;;;;;15865:35:0;::::1;15901:10;15865:47;:35;:47;:::i;:::-;15834:78;;15933:91;15942:10;15954:7;15962:1;15954:10;;;;;;;;;;;;;;15966;15978:16;13924:42;-1:-1:-1::0;;;;;15996:27:0::1;:10;-1:-1:-1::0;;;;;15996:27:0::1;;15933:8;:91::i;:::-;16042:9;16037:375;16061:8;:15;16057:1;:19;16037:375;;;16115:1;16102:14:::0;::::1;16098:260;;16155:11;16167:1;16155:14;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16142:37:0::1;;16180:7;16188:1;16192;16188:5;16180:14;;;;;;;;;;;;;;16195:8;16204:1;16195:11;;;;;;;;;;;;;;16208:9;16218:1;16208:12;;;;;;;;;;;;;;16142:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16098:260;;;16275:11;16287:1;16275:14;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16262:38:0::1;;16301:7;16309:1;16313;16309:5;16301:14;;;;;;;;;;;;;;16316:8;16325:1;16316:11;;;;;;;;;;;;;;16329:9;16339:1;16329:12;;;;;;;;;;;;;;16262:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16098:260;16399:1;16385:15:::0;;::::1;::::0;16078:3:::1;16037:375;;;-1:-1:-1::0;;;;;;16427:25:0;::::1;13924:42;16427:25;16424:325;;;16484:38;::::0;-1:-1:-1;;;16484:38:0;;-1:-1:-1;;;;;16490:6:0::1;16484:23;::::0;::::1;::::0;:38:::1;::::0;16516:4:::1;::::0;16484:38:::1;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16537:36;::::0;-1:-1:-1;;;16537:36:0;;16469:53;;-1:-1:-1;;;;;;16543:6:0::1;16537:22;::::0;::::1;::::0;:36:::1;::::0;16469:53;;16537:36:::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16588:33:0::1;::::0;:10:::1;::::0;-1:-1:-1;16588:33:0;::::1;;;::::0;-1:-1:-1;16608:12:0;;16588:33:::1;::::0;;;16608:12;16588:10;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16424:325;;;16668:69;16716:20:::0;16668:43:::1;-1:-1:-1::0;;;;;16668:31:0;::::1;16700:10;16668:43;:31;:43;:::i;:::-;:47:::0;:69:::1;:47;:69;:::i;:::-;16653:84;;16424:325;16785:15;16769:12;:31;;16761:87;;;;-1:-1:-1::0;;;16761:87:0::1;;;;;;;;;16866:154;16893:10;16918:8;16941:10;16966:16;16997:12;16866:154;;;;;;;;;;;;;;;;;;;14642:1;;;;14917:2111:::0;;;;;;;;;;;;;:::o;17036:1626::-;17395:20;17376:8;14588:15;14576:8;:27;;14568:63;;;;-1:-1:-1;;;14568:63:0;;;;;;;;;17456:11:::1;:18;17436:9;:16;:38;17428:89;;;;-1:-1:-1::0;;;17428:89:0::1;;;;;;;;;17562:1;17544:15;:19;17536:66;;;;-1:-1:-1::0;;;17536:66:0::1;;;;;;;;;17623:24;17650:15;17623:42;;17676:17;17696:8;17705:1;17696:11;;;;;;;;;;;;;;17676:31;;17718:15;17736:8;17763:1;17745:8;:15;:19;17736:29;;;;;;;;;;;;;;17718:47;;17778:28;17809:46;17844:10;17816:7;-1:-1:-1::0;;;;;17809:34:0::1;;;:46;;;;:::i;:::-;17778:77;;17866:91;17875:10;17887:9;17897:1;17887:12;;;;;;;;;;;;;;17901:9;17912:16;13924:42;-1:-1:-1::0;;;;;17930:26:0::1;:9;-1:-1:-1::0;;;;;17930:26:0::1;;17866:8;:91::i;:::-;17970:67;17981:11;17994:8;18004:11;18017:8;18027:9;17970:10;:67::i;:::-;-1:-1:-1::0;;;;;18057:24:0;::::1;13924:42;18057:24;18054:323;;;18113:38;::::0;-1:-1:-1;;;18113:38:0;;-1:-1:-1;;;;;18119:6:0::1;18113:23;::::0;::::1;::::0;:38:::1;::::0;18145:4:::1;::::0;18113:38:::1;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18166:36;::::0;-1:-1:-1;;;18166:36:0;;18098:53;;-1:-1:-1;;;;;;18172:6:0::1;18166:22;::::0;::::1;::::0;:36:::1;::::0;18098:53;;18166:36:::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18217:33:0::1;::::0;:10:::1;::::0;-1:-1:-1;18217:33:0;::::1;;;::::0;-1:-1:-1;18237:12:0;;18217:33:::1;::::0;;;18237:12;18217:10;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18054:323;;;18297:68;18344:20:::0;18297:42:::1;-1:-1:-1::0;;;;;18297:30:0;::::1;18328:10;18297:42;:30;:42;:::i;:68::-;18282:83;;18054:323;18413:15;18397:12;:31;;18389:87;;;;-1:-1:-1::0;;;18389:87:0::1;;;;;;;;;18498:152;18525:9;18549:7;18571:10;18596:16;18627:12;18498:152;;;;;;;;;;;;;;;;;;;14642:1;;;;17036:1626:::0;;;;;;;;;;;:::o;14011:45::-;;;:::o;12820:228::-;12898:7;12922:12;12928:5;12922;:12::i;:::-;12918:123;;;-1:-1:-1;;;;;;12958:11:0;;;12951:18;;12918:123;13009:20;;-1:-1:-1;;;13009:20:0;;-1:-1:-1;;;;;13009:15:0;;;;;:20;;13025:3;;13009:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13002:27;;12918:123;12820:228;;;;:::o;20937:495::-;21100:5;21096:329;;;21126:10;;21122:183;;21163:6;-1:-1:-1;;;;;21157:21:0;;21186:6;21157:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;21218:19:0;;21232:4;21218:19;;-1:-1:-1;21214:75:0;;21239:50;21269:6;21278:2;21282:6;21239:22;:50::i;:::-;21096:329;;;21337:76;;-1:-1:-1;;;21337:76:0;;-1:-1:-1;;;;;21355:20:0;21337:51;;;;:76;;21389:5;;21396:4;;21402:2;;21406:6;;21337:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21096:329;20937:495;;;;;:::o;13056:129::-;13157:20;;-1:-1:-1;;;13157:20:0;;13130:7;;-1:-1:-1;;;;;13157:15:0;;;;;:20;;13173:3;;13157:20;;;;8134:137;8192:7;8225:1;8220;:6;;8212:28;;;;-1:-1:-1;;;8212:28:0;;;;;;;;;-1:-1:-1;8258:5:0;;;8134:137::o;18741:2188::-;18994:1;18978:1944;19001:11;:18;18997:1;:22;18978:1944;;;19103:22;19128:50;19163:9;19175:1;19173;:3;19163:14;;;;;;;;;;;;;;19135:8;19144:1;19135:11;;;;;;;;;;;;;;-1:-1:-1;;;;;19128:34:0;;;:50;;;;:::i;:::-;19103:75;;19193:22;19218:11;19232:1;19230;:3;19218:16;;;;;;;;;;;;;;19193:41;;19267:9;19279:11;19293:1;19291;:3;19279:16;;;;;;;;;;;;;;19267:28;;19263:1648;19301:11;19313:1;19301:14;;;;;;;;;;;;;;19297:1;:18;19263:1648;;;19341:27;;:::i;:::-;19411:12;19425:15;19442;19459:21;19495:12;19508:1;19495:15;;;;;;;;;;;;;;19484:63;;;;;;;;;;;;;;19623:2;19612:13;;;19588:37;;19669:23;19691:1;19669:23;;;;19648:18;;;:44;19742:4;:14;;;19715:23;;;:42;-1:-1:-1;;;;;19780:23:0;;;:16;;;:23;19826:29;;:19;;;:29;19878:20;;;:31;-1:-1:-1;;19952:14:0;;19978:4;;-1:-1:-1;19952:9:0;;-1:-1:-1;;;19962:3:0;;;19952:14;;;;;;;;;;;;-1:-1:-1;;;;;19952:31:0;;19949:595;;;20067:18;;;;20008:17;;20028:58;;:34;:14;20047;20028:34;:18;:34;:::i;:::-;:38;:58;:38;:58;:::i;:::-;20008:78;;20126:11;:23;;;20153:1;20126:28;20123:402;;;20269:8;20278:1;20269:11;;;;;;;;;;;;;;-1:-1:-1;;;;;20262:28:0;;20291:11;:19;;;20312:9;20262:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20123:402;;;20451:8;20460:1;20451:11;;;;;;;;;;;;;;-1:-1:-1;;;;;20444:28:0;;20473:11;:16;;;20491:9;20444:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20123:402;19949:595;;20583:21;;20580:316;;20647:11;:19;;;-1:-1:-1;;;;;20634:42:0;;20677:9;20687:1;20677:12;;;;;;;;;;;;;;20691:11;:16;;;20709:11;:20;;;20634:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20580:316;;;20792:11;:19;;;-1:-1:-1;;;;;20779:43:0;;20823:9;20833:1;20823:12;;;;;;;;;;;;;;20837:11;:16;;;20855:11;:20;;;20779:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20580:316;-1:-1:-1;19317:3:0;;19263:1648;;;-1:-1:-1;;;19021:3:0;;18978:1944;;;;18741:2188;;;;;:::o;13193:104::-;-1:-1:-1;;;;;13269:20:0;;12055:42;13269:20;13193:104;;;:::o;9226:211::-;9343:86;9363:5;9393:23;;;9418:2;9422:5;9370:58;;;;;;;;;;;;;;-1:-1:-1;;9370:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;9370:58:0;-1:-1:-1;;;;;;9370:58:0;;;;;;;;;;9343:19;:86::i;:::-;9226:211;;;:::o;7689:141::-;7747:7;7779:1;7775;:5;7767:32;;;;-1:-1:-1;;;7767:32:0;;;;;;;;;7821:1;7817;:5;;;;;;;7689:141;-1:-1:-1;;;7689:141:0:o;7455:226::-;7513:7;7537:6;7533:47;;-1:-1:-1;7567:1:0;7560:8;;7533:47;7604:5;;;7608:1;7604;:5;:1;7628:5;;;;;:10;7620:32;;;;-1:-1:-1;;;7620:32:0;;;;;;;;10799:1046;11459:12;11473:23;11508:5;-1:-1:-1;;;;;11500:19:0;11520:4;11500:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11458:67;;;;11544:7;11536:52;;;;-1:-1:-1;;;11536:52:0;;;;;;;;;11605:17;;:21;11601:237;;11760:10;11749:30;;;;;;;;;;;;;;11741:85;;;;-1:-1:-1;;;11741:85:0;;;;;;;;;10799:1046;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;;317:707;;434:3;427:4;419:6;415:17;411:27;401:2;;-1:-1;;442:12;401:2;489:6;476:20;511:80;526:64;583:6;526:64;;;511:80;;;619:21;;;502:89;-1:-1;663:4;676:14;;;;651:17;;;765;;;756:27;;;;753:36;-1:-1;750:2;;;802:1;;792:12;750:2;827:1;812:206;837:6;834:1;831:13;812:206;;;85:6;72:20;97:33;124:5;97:33;;;905:50;;969:14;;;;997;;;;859:1;852:9;812:206;;;816:14;;;;;394:630;;;;;1048:705;;1174:3;1167:4;1159:6;1155:17;1151:27;1141:2;;-1:-1;;1182:12;1141:2;1229:6;1216:20;1251:89;1266:73;1332:6;1266:73;;1251:89;1368:21;;;1242:98;-1:-1;1412:4;1425:14;;;;1400:17;;;1520:1;1505:242;1530:6;1527:1;1524:13;1505:242;;;1613:3;1600:17;1404:6;1588:30;2731:3;2712:17;1588:30;2712:17;2708:27;2698:2;;1520:1;;2739:12;2698:2;1412:4;1588:30;;2773:20;2808:64;2823:48;2864:6;2823:48;;2808:64;2892:6;2885:5;2878:21;2916:17;2996:3;2916:17;2987:6;1588:30;2978:16;;2975:25;2972:2;;;1520:1;;3003:12;2972:2;24794:6;2916:17;1588:30;2916:17;1412:4;2954:5;2950:16;24771:30;-1:-1;1520:1;24832:16;;;;;24825:27;;;;1625:59;;-1:-1;1698:14;;;;1726;;;;1552:1;1545:9;1505:242;;1779:707;;1896:3;1889:4;1881:6;1877:17;1873:27;1863:2;;-1:-1;;1904:12;1863:2;1951:6;1938:20;1973:80;1988:64;2045:6;1988:64;;1973:80;2081:21;;;1964:89;-1:-1;2125:4;2138:14;;;;2113:17;;;2227;;;2218:27;;;;2215:36;-1:-1;2212:2;;;2264:1;;2254:12;2212:2;2289:1;2274:206;2299:6;2296:1;2293:13;2274:206;;;3596:20;;2367:50;;2431:14;;;;2459;;;;2321:1;2314:9;2274:206;;3807:801;;;;;3998:3;3986:9;3977:7;3973:23;3969:33;3966:2;;;-1:-1;;4005:12;3966:2;234:6;228:13;246:41;281:5;246:41;;;4176:2;4234:22;;228:13;4057:82;;-1:-1;246:41;228:13;246:41;;;4303:2;4353:22;;3744:13;4443:2;4428:18;;4422:25;4184:82;;-1:-1;3744:13;-1:-1;4467:18;4456:30;;4453:2;;;-1:-1;;4489:12;4453:2;4575:6;4564:9;4560:22;3191:3;3184:4;3176:6;3172:17;3168:27;3158:2;;-1:-1;;3199:12;3158:2;3239:6;3233:13;3219:27;;3261:64;3276:48;3317:6;3276:48;;3261:64;3345:6;3338:5;3331:21;3449:3;4176:2;3440:6;3373;3431:16;;3428:25;3425:2;;;-1:-1;;3456:12;3425:2;3476:39;3508:6;4176:2;3407:5;3403:16;4176:2;3373:6;3369:17;3476:39;;;3960:648;;;;-1:-1;3960:648;;-1:-1;;;;3960:648;4615:1935;;;;;;;;;;;4981:3;4969:9;4960:7;4956:23;4952:33;4949:2;;;-1:-1;;4988:12;4949:2;5050:53;5095:7;5071:22;5050:53;;;5040:63;;5158:53;5203:7;5140:2;5183:9;5179:22;5158:53;;;5148:63;;5248:2;5291:9;5287:22;3596:20;5256:63;;5356:2;5399:9;5395:22;3596:20;5364:63;;5492:3;5481:9;5477:19;5464:33;5517:18;;5509:6;5506:30;5503:2;;;-1:-1;;5539:12;5503:2;5569:78;5639:7;5630:6;5619:9;5615:22;5569:78;;;5559:88;;5712:3;5701:9;5697:19;5684:33;5670:47;;5517:18;5729:6;5726:30;5723:2;;;-1:-1;;5759:12;5723:2;5789:78;5859:7;5850:6;5839:9;5835:22;5789:78;;;5779:88;;5932:3;5921:9;5917:19;5904:33;5890:47;;5517:18;5949:6;5946:30;5943:2;;;-1:-1;;5979:12;5943:2;6009:78;6079:7;6070:6;6059:9;6055:22;6009:78;;;5999:88;;6124:3;6168:9;6164:22;3596:20;6133:63;;6261:3;6250:9;6246:19;6233:33;6219:47;;5517:18;6278:6;6275:30;6272:2;;;-1:-1;;6308:12;6272:2;;6338:87;6417:7;6408:6;6397:9;6393:22;6338:87;;;6328:97;;;6462:3;6506:9;6502:22;3596:20;6471:63;;4943:1607;;;;;;;;;;;;;;6557:257;;6669:2;6657:9;6648:7;6644:23;6640:32;6637:2;;;-1:-1;;6675:12;6637:2;2575:6;2569:13;25593:5;24100:13;24093:21;25571:5;25568:32;25558:2;;-1:-1;;25604:12;6821:263;;6936:2;6924:9;6915:7;6911:23;6907:32;6904:2;;;-1:-1;;6942:12;6904:2;-1:-1;3744:13;;6898:186;-1:-1;6898:186;7091:1819;;;;;;;;;7448:3;7436:9;7427:7;7423:23;7419:33;7416:2;;;-1:-1;;7455:12;7416:2;7538:22;3596:20;7507:63;;7607:2;7650:9;7646:22;3596:20;7615:63;;7743:2;7732:9;7728:18;7715:32;7767:18;;7759:6;7756:30;7753:2;;;-1:-1;;7789:12;7753:2;7819:78;7889:7;7880:6;7869:9;7865:22;7819:78;;;7809:88;;7962:2;7951:9;7947:18;7934:32;7920:46;;7767:18;7978:6;7975:30;7972:2;;;-1:-1;;8008:12;7972:2;8038:78;8108:7;8099:6;8088:9;8084:22;8038:78;;;8028:88;;8181:3;8170:9;8166:19;8153:33;8139:47;;7767:18;8198:6;8195:30;8192:2;;;-1:-1;;8228:12;8192:2;8258:78;8328:7;8319:6;8308:9;8304:22;8258:78;;;8248:88;;8401:3;8390:9;8386:19;8373:33;8359:47;;7767:18;8418:6;8415:30;8412:2;;;-1:-1;;8448:12;8412:2;8478:78;8548:7;8539:6;8528:9;8524:22;8478:78;;;8468:88;;8621:3;8610:9;8606:19;8593:33;8579:47;;7767:18;8638:6;8635:30;8632:2;;;-1:-1;;8668:12;8632:2;;8698:87;8777:7;8768:6;8757:9;8753:22;8698:87;;;8688:97;;;8822:3;8866:9;8862:22;3596:20;8831:63;;7410:1500;;;;;;;;;;;;13910:271;;9696:5;23293:12;9807:52;9852:6;9847:3;9840:4;9833:5;9829:16;9807:52;;;9871:16;;;;;14044:137;-1:-1;;14044:137;14188:222;-1:-1;;;;;24188:54;;;;9137:37;;14315:2;14300:18;;14286:124;14662:684;-1:-1;;;;;24188:54;;;9137:37;;24188:54;;;15074:2;15059:18;;9137:37;24188:54;;;;15165:2;15150:18;;8996:58;15248:2;15233:18;;13861:37;;;;15331:3;15316:19;;13861:37;;;;14909:3;14894:19;;14880:466;15353:556;-1:-1;;;;;24188:54;;;9137:37;;24188:54;;;15729:2;15714:18;;9137:37;24188:54;;15812:2;15797:18;;9137:37;15895:2;15880:18;;13861:37;;;;15564:3;15549:19;;15535:374;15916:528;;4467:18;;24199:42;;;;24192:5;24188:54;9144:3;9137:37;24199:42;24192:5;24188:54;16281:2;16270:9;16266:18;9137:37;;16117:2;16318;16307:9;16303:18;16296:48;9328:5;23293:12;23449:6;16117:2;16106:9;16102:18;23437:19;9421:52;9466:6;23477:14;16106:9;23477:14;16281:2;9447:5;9443:16;9421:52;;;25227:7;25211:14;-1:-1;;25207:28;9485:39;;;;23477:14;9485:39;;16088:356;-1:-1;;;;16088:356;16451:333;-1:-1;;;;;24188:54;;;;9137:37;;16770:2;16755:18;;13861:37;16606:2;16591:18;;16577:207;16791:416;16991:2;17005:47;;;10124:2;16976:18;;;23437:19;10160:25;23477:14;;;10140:46;10205:12;;;16962:245;17214:416;17414:2;17428:47;;;10456:2;17399:18;;;23437:19;10492:29;23477:14;;;10472:50;10541:12;;;17385:245;17637:416;17837:2;17851:47;;;10792:2;17822:18;;;23437:19;10828:34;23477:14;;;10808:55;-1:-1;;;10883:12;;;10876:30;10925:12;;;17808:245;18060:416;18260:2;18274:47;;;11176:2;18245:18;;;23437:19;11212:34;23477:14;;;11192:55;-1:-1;;;11267:12;;;11260:35;11314:12;;;18231:245;18483:416;18683:2;18697:47;;;18668:18;;;23437:19;11601:34;23477:14;;;11581:55;11655:12;;;18654:245;18906:416;19106:2;19120:47;;;11906:2;19091:18;;;23437:19;-1:-1;;;23477:14;;;11922:37;11978:12;;;19077:245;19329:416;19529:2;19543:47;;;12229:2;19514:18;;;23437:19;12265:34;23477:14;;;12245:55;-1:-1;;;12320:12;;;12313:26;12358:12;;;19500:245;19752:416;19952:2;19966:47;;;12609:1;19937:18;;;23437:19;-1:-1;;;23477:14;;;12624:32;12675:12;;;19923:245;20175:416;20375:2;20389:47;;;12926:2;20360:18;;;23437:19;12962:34;23477:14;;;12942:55;-1:-1;;;13017:12;;;13010:30;13059:12;;;20346:245;20598:416;20798:2;20812:47;;;13310:2;20783:18;;;23437:19;13346:34;23477:14;;;13326:55;-1:-1;;;13401:12;;;13394:34;13447:12;;;20769:245;21021:416;21221:2;21235:47;;;13698:1;21206:18;;;23437:19;-1:-1;;;23477:14;;;13713:32;13764:12;;;21192:245;21444:222;13861:37;;;21571:2;21556:18;;21542:124;21673:256;21735:2;21729:9;21761:17;;;21836:18;21821:34;;21857:22;;;21818:62;21815:2;;;21893:1;;21883:12;21815:2;21735;21902:22;21713:216;;-1:-1;21713:216;21936:304;;22095:18;22087:6;22084:30;22081:2;;;-1:-1;;22117:12;22081:2;-1:-1;22162:4;22150:17;;;22215:15;;22018:222;22878:321;;23021:18;23013:6;23010:30;23007:2;;;-1:-1;;23043:12;23007:2;-1:-1;25227:7;23097:17;-1:-1;;23093:33;23184:4;23174:15;;22944:255;24867:268;24932:1;24939:101;24953:6;24950:1;24947:13;24939:101;;;25020:11;;;25014:18;25001:11;;;24994:39;24975:2;24968:10;24939:101;;;25055:6;25052:1;25049:13;25046:2;;;-1:-1;;24932:1;25102:16;;25095:27;24916:219;25248:117;-1:-1;;;;;24188:54;;25307:35;;25297:2;;25356:1;;25346:12;25297:2;25291:74;

Swarm Source

ipfs://dbbd9888adbcc1054e6920d6da5017b9335680caa7689de59140cc96322b51dc
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.