ETH Price: $3,831.78 (+4.87%)

Contract

0x3D5b124C7f771792A080CA64AdE179D93642ec1a
 

Overview

ETH Balance

0.210489438368911058 ETH

Eth Value

$806.55 (@ $3,831.78/ETH)

Multichain Info

No addresses found
Amount:Between 1-100
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

Latest 10 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
210741552024-10-29 22:03:1143 days ago1730239391
0x3D5b124C...93642ec1a
0.04374981 ETH
210666762024-10-28 21:00:1144 days ago1730149211
0x3D5b124C...93642ec1a
0.00819232 ETH
210617422024-10-28 4:27:1144 days ago1730089631
0x3D5b124C...93642ec1a
0.19752327 ETH
210616372024-10-28 4:06:1144 days ago1730088371
0x3D5b124C...93642ec1a
0.03414579 ETH
203383952024-07-19 5:10:11145 days ago1721365811
0x3D5b124C...93642ec1a
0.00883999 ETH
202247412024-07-03 8:18:11161 days ago1719994691
0x3D5b124C...93642ec1a
0.09956 ETH
198823782024-05-16 11:56:11209 days ago1715860571
0x3D5b124C...93642ec1a
0.01912 ETH
198820302024-05-16 10:46:11209 days ago1715856371
0x3D5b124C...93642ec1a
0.00112 ETH
198679972024-05-14 11:38:23211 days ago1715686703
0x3D5b124C...93642ec1a
0.00923 ETH
198403172024-05-10 14:45:11215 days ago1715352311
0x3D5b124C...93642ec1a
0.00868 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bridge

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-02
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8 .17;

interface ERC20Essential {

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

    function transfer(address _to, uint256 _amount) external returns(bool);

    function transferFrom(address _from, address _to, uint256 _amount) external returns(bool);

    function mint(address account, uint256 value) external;

    function burn(address account, uint256 value) external;

    function transferOwnership(address newOwner) external;

    function owner() external returns(address);

}


//USDT contract in Ethereum does not follow ERC20 standard so it needs different interface
interface usdtContract {
    function transferFrom(address _from, address _to, uint256 _amount) external;

    function transfer(address _to, uint256 _amount) external;

    function mint(address account, uint256 value) external;

    function burn(address account, uint256 value) external;

    function balanceOf(address user) external view returns(uint256);
}




//*******************************************************************//
//------------------ Contract to Manage Ownership -------------------//
//*******************************************************************//
contract owned {
    address public owner;
    address internal newOwner;
    mapping(address => bool) public signer;

    event OwnershipTransferred(address indexed _from, address indexed _to);
    event SignerUpdated(address indexed signer, bool indexed status);

    constructor() {
        owner = msg.sender;
        //owner does not become signer automatically.
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }


    modifier onlySigner {
        require(signer[msg.sender], 'caller must be signer');
        _;
    }


    function changeSigner(address _signer, bool _status) public onlyOwner {
        signer[_signer] = _status;
        emit SignerUpdated(_signer, _status);
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    //the reason for this flow is to protect owners from sending ownership to unintended address due to human error
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}




//****************************************************************************//
//---------------------        MAIN CODE STARTS HERE     ---------------------//
//****************************************************************************//

contract Bridge is owned {

    uint256 public orderID;
    uint256 public exraCoinRewards; // if we give users extra coins to cover gas cost of some initial transactions.

    address public feeWallet;
    address public reserveWallet;
    address public usdtAddress = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
    uint256 public reserveFundThreshold = 10e18;
    uint256 public txFee;

    // /* This mapping contains the status of tokenAddresses who are not under our control like those which we cannot burn or mint*/
    // mapping(address=>bool) public noControl;
    mapping(address => uint256) public tokenFundThreshold;


    // This generates a public event of coin received by contract
    event CoinIn(uint256 indexed orderID, address indexed user, uint256 value, address outputCurrency);
    event CoinOut(uint256 indexed orderID, address indexed user, uint256 value);
    event CoinOutFailed(uint256 indexed orderID, address indexed user, uint256 value);
    event TokenIn(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID, address outputCurrency);
    event TokenOut(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID);
    event TokenOutFailed(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID);




    receive() external payable {
        //nothing happens for incoming fund
    }

    constructor() {

        tokenFundThreshold[0xdAC17F958D2ee523a2206206994597C13D831ec7] = 100e6; /*USDT Ethereum*/
        tokenFundThreshold[0x55d398326f99059fF775485246999027B3197955] = 100e18; /*USDT Binance*/
        tokenFundThreshold[0xc2132D05D31c914a87C6611C10748AEb04B58e8F] = 100e6; /*USDT Matic*/
    }

    function coinIn(address outputCurrency) external payable returns(bool) {
        orderID++;
        uint256 amount = msg.value;


        if (address(this).balance >= reserveFundThreshold) {
            payable(owner).transfer(amount);
        }

        emit CoinIn(orderID, msg.sender, amount, outputCurrency);
        return true;
    }

    function coinOut(address user, uint256 amount, uint256 _orderID) external onlySigner returns(bool) {
        uint256 afterTax;
        uint256 tax;

        if (txFee != 0) {
            (afterTax, tax) = processTax(amount);
            if (feeWallet != address(0)) {
                payable(feeWallet).transfer(tax);
            }
            payable(user).transfer(afterTax);
        } else {
            payable(user).transfer(amount);
            afterTax = amount;
        }

        emit CoinOut(_orderID, user, afterTax);
        return true;
    }


    function tokenIn(address tokenAddress, uint256 tokenAmount, uint256 chainID, address outputCurrency) external returns(bool) {
        orderID++;

        if (tokenAddress == usdtAddress) {
            usdtContract(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount);
            if (usdtContract(tokenAddress).balanceOf(address(this)) >= tokenFundThreshold[tokenAddress]) {
                usdtContract(tokenAddress).transfer(owner, tokenAmount);
            }

        } else {
            ERC20Essential(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount);
            if (usdtContract(tokenAddress).balanceOf(address(this)) >= tokenFundThreshold[tokenAddress]) {
                ERC20Essential(tokenAddress).transfer(owner, tokenAmount);
            }
        }

        emit TokenIn(orderID, tokenAddress, msg.sender, tokenAmount, chainID, outputCurrency);
        return true;
    }


    function tokenOut(address tokenAddress, address user, uint256 tokenAmount, uint256 _orderID, uint256 chainID) external onlySigner returns(bool) {
        uint256 minted = tokenAmount;
        uint256 tax;
        uint256 afterTax;


        if (tokenAddress == usdtAddress) {
            if (txFee != 0) {
                (afterTax, tax) = processTax(tokenAmount);
                usdtContract(tokenAddress).transfer(user, afterTax);
                if (feeWallet != address(0)) {
                    usdtContract(tokenAddress).transfer(feeWallet, tax);
                }
                minted = afterTax;
            } else {
                usdtContract(tokenAddress).transfer(user, tokenAmount);
                minted = tokenAmount;
            }

        } else {
            if (txFee != 0) {
                (afterTax, tax) = processTax(tokenAmount);
                ERC20Essential(tokenAddress).transfer(user, afterTax);
                if (feeWallet != address(0)) {
                    ERC20Essential(tokenAddress).transfer(feeWallet, tax);
                }
                minted = afterTax;
            } else {
                ERC20Essential(tokenAddress).transfer(user, tokenAmount);
                minted = tokenAmount;
            }

        }


        emit TokenOut(_orderID, tokenAddress, user, minted, chainID);

        return true;
    }

    /* Process Tax*/
    function processTax(uint256 amount) internal view returns(uint256 afterTax, uint256 deductedTax) {
        require(amount>txFee, "Fee greater than amount");
        deductedTax = txFee;
        afterTax = amount - deductedTax;
    }


    /*Change feeWallet*/
    function setFeeWallet(address _feeWallet) external onlyOwner returns(address oldWallet, address newWallet) {
        oldWallet = feeWallet;
        feeWallet = _feeWallet;
        newWallet = feeWallet;
    }

    /*Change reserveWallet*/
    function setReserveWallet(address _reserveWallet) external onlyOwner returns(address oldWallet, address newWallet) {
        oldWallet = reserveWallet;
        reserveWallet = _reserveWallet;
        newWallet = reserveWallet;
    }

    /* set usdt token address*/
    function setUSDTAddress(address _tokenAddress) external onlyOwner returns(address newAddress) {
        require(_tokenAddress != address(0), "zero address not allowed");
        require(_tokenAddress != usdtAddress, "same as old address");
        usdtAddress = _tokenAddress;
        newAddress = usdtAddress;
    }

    /* set Threshold*/
    function setFundThreshold(uint256 _amount) external onlyOwner returns(uint256 oldAmount, uint256 newAmount) {
        oldAmount = reserveFundThreshold;
        reserveFundThreshold = _amount;
        newAmount = _amount;
    }

    /* Change owner of the given token contract*/
    function transferTokenOwnership(address ofTokenAddress, address toAddress) external onlyOwner returns(address oldOwner, address newOwner) {
        require(ofTokenAddress != address(0) && toAddress != address(0), "zero address not allowed");
        oldOwner = ERC20Essential(ofTokenAddress).owner();
        ERC20Essential(ofTokenAddress).transferOwnership(toAddress);
        newOwner = ERC20Essential(ofTokenAddress).owner();
    }

    /* Modify the token reserve threshold values
     */
    function setTokenReserveThreshold(address forToken, uint256 threshold) external onlyOwner {
        tokenFundThreshold[forToken] = threshold;
    }

    function rescueNative(uint256 rescueAmount) external onlyOwner {
        if (address(this).balance <= rescueAmount) {
            rescueAmount = address(this).balance;
        }
        payable(owner).transfer(rescueAmount);
    }
    function setTxFee(uint256 amount) external onlyOwner {
        txFee = amount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputCurrency","type":"address"}],"name":"CoinIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CoinOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CoinOutFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"SignerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputCurrency","type":"address"}],"name":"TokenIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"TokenOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"TokenOutFailed","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_signer","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"changeSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"outputCurrency","type":"address"}],"name":"coinIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"_orderID","type":"uint256"}],"name":"coinOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exraCoinRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orderID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rescueAmount","type":"uint256"}],"name":"rescueNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveFundThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeWallet","type":"address"}],"name":"setFeeWallet","outputs":[{"internalType":"address","name":"oldWallet","type":"address"},{"internalType":"address","name":"newWallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setFundThreshold","outputs":[{"internalType":"uint256","name":"oldAmount","type":"uint256"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_reserveWallet","type":"address"}],"name":"setReserveWallet","outputs":[{"internalType":"address","name":"oldWallet","type":"address"},{"internalType":"address","name":"newWallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forToken","type":"address"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTokenReserveThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"setUSDTAddress","outputs":[{"internalType":"address","name":"newAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"signer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenFundThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"chainID","type":"uint256"},{"internalType":"address","name":"outputCurrency","type":"address"}],"name":"tokenIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_orderID","type":"uint256"},{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"tokenOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ofTokenAddress","type":"address"},{"internalType":"address","name":"toAddress","type":"address"}],"name":"transferTokenOwnership","outputs":[{"internalType":"address","name":"oldOwner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600780546001600160a01b03191673dac17f958d2ee523a2206206994597c13d831ec7179055678ac7230489e8000060085534801561004257600080fd5b50600080546001600160a01b03191633178155600a6020526305f5e1007fb7e2958a2abfb668f1e99d86008b48267975d726df44a62b9676fda384beb19581905568056bc75e2d631000007fb0775d57c3eeb070f58d410e36e9ff396813a5d76997d9a91bdf10f0798296f05573c2132d05d31c914a87c6611c10748aeb04b58e8f9091527f8a10ac49449cc42ad5f1435ba0e39c8ff12ee5867371ae9a8b5024fb3f73cf0055611643806100f86000396000f3fe60806040526004361061016a5760003560e01c80639ab4a445116100d1578063dda4fa8f1161008a578063f25f4b5611610064578063f25f4b5614610465578063f2fde38b14610485578063f3a7cb61146104a5578063fea54d06146104c557600080fd5b8063dda4fa8f1461040f578063f05d16f71461042f578063f1c069061461044f57600080fd5b80639ab4a4451461034e578063b8fb28161461036e578063c7e0af6a1461038e578063cd23e147146103c3578063cf820461146103d9578063d72b11bd146103ef57600080fd5b806355eba8681161012357806355eba868146102705780636fba2983146102a857806379ba5097146102e357806381203d03146102f85780638da5cb5b1461030e57806390d49b9d1461032e57600080fd5b80630536b7231461017657806315a01045146101bb578063256c1ea3146101ce578063383fe467146101ee578063454aa6691461022e57806351295f011461025057600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101a66101913660046113c4565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101a66101c93660046113c4565b6104e5565b3480156101da57600080fd5b506101a66101e93660046113e8565b610591565b3480156101fa57600080fd5b5061020e610209366004611439565b610969565b604080516001600160a01b039384168152929091166020830152016101b2565b34801561023a57600080fd5b5061024e610249366004611472565b610b1a565b005b34801561025c57600080fd5b5061024e61026b366004611499565b610b78565b34801561027c57600080fd5b5061029061028b3660046113c4565b610be3565b6040516001600160a01b0390911681526020016101b2565b3480156102b457600080fd5b506102d56102c33660046113c4565b600a6020526000908152604090205481565b6040519081526020016101b2565b3480156102ef57600080fd5b5061024e610cc3565b34801561030457600080fd5b506102d560035481565b34801561031a57600080fd5b50600054610290906001600160a01b031681565b34801561033a57600080fd5b5061020e6103493660046113c4565b610d3e565b34801561035a57600080fd5b50600754610290906001600160a01b031681565b34801561037a57600080fd5b5061024e6103893660046114c7565b610d80565b34801561039a57600080fd5b506103ae6103a9366004611472565b610db3565b604080519283526020830191909152016101b2565b3480156103cf57600080fd5b506102d560085481565b3480156103e557600080fd5b506102d560095481565b3480156103fb57600080fd5b50600654610290906001600160a01b031681565b34801561041b57600080fd5b5061020e61042a3660046113c4565b610dda565b34801561043b57600080fd5b5061024e61044a366004611472565b610e1c565b34801561045b57600080fd5b506102d560045481565b34801561047157600080fd5b50600554610290906001600160a01b031681565b34801561049157600080fd5b5061024e6104a03660046113c4565b610e38565b3480156104b157600080fd5b506101a66104c03660046114f3565b610e71565b3480156104d157600080fd5b506101a66104e036600461153d565b6111bd565b60038054600091826104f683611588565b90915550506008543490471061054157600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561053f573d6000803e3d6000fd5b505b600354604080518381526001600160a01b03861660208201523392917f50ed54fdff2e8028310feac14aa2e8343c5eb6ab4fb192510bd3358cbe18fb1d910160405180910390a350600192915050565b3360009081526002602052604081205460ff166105ed5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064015b60405180910390fd5b600754849060009081906001600160a01b03908116908a160361076f57600954156107055761061b87611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb90604401600060405180830381600087803b15801561066b57600080fd5b505af115801561067f573d6000803e3d6000fd5b50506005546001600160a01b03161591506106fd90505760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb90604401600060405180830381600087803b1580156106e457600080fd5b505af11580156106f8573d6000803e3d6000fd5b505050505b809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb90604401600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050869250610903565b6009541561088b5761078087611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb906044016020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906115a1565b506005546001600160a01b0316156106fd5760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb906044016020604051808303816000875af115801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906115a1565b50809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb906044016020604051808303816000875af11580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe91906115a1565b508692505b876001600160a01b0316896001600160a01b0316877f227f62390ff31ea224acc601adb99ca571aafaeef45b6528a1f75af3fdee81b08689604051610952929190918252602082015260400190565b60405180910390a450600198975050505050505050565b6000805481906001600160a01b0316331461098357600080fd5b6001600160a01b038416158015906109a357506001600160a01b03831615155b6109ea5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906115be565b60405163f2fde38b60e01b81526001600160a01b0385811660048301529193509085169063f2fde38b90602401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50505050836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1191906115be565b90509250929050565b6000546001600160a01b03163314610b3157600080fd5b804711610b3b5750475b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610b74573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b8f57600080fd5b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917ffcaa24b1276bfa7dbf77797c0a984b9df924acbeaabd48cd2f1b0eca379b78fa91a35050565b600080546001600160a01b03163314610bfb57600080fd5b6001600160a01b038216610c4c5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b6007546001600160a01b0390811690831603610ca05760405162461bcd60e51b815260206004820152601360248201527273616d65206173206f6c64206164647265737360681b60448201526064016105e4565b50600780546001600160a01b039092166001600160a01b03199092168217905590565b6001546001600160a01b03163314610cda57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000805481906001600160a01b03163314610d5857600080fd5b5050600580546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610d9757600080fd5b6001600160a01b039091166000908152600a6020526040902055565b6000805481906001600160a01b03163314610dcd57600080fd5b5050600880549082905591565b6000805481906001600160a01b03163314610df457600080fd5b5050600680546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610e3357600080fd5b600955565b6000546001600160a01b03163314610e4f57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460009182610e8283611588565b90915550506007546001600160a01b0390811690861603610fee576040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd90606401600060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505050506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d91906115db565b10610fe95760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb90604401600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050505b61115e565b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015611041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106591906115a1565b506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906115db565b1061115e5760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb906044016020604051808303816000875af1158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c91906115a1565b505b60035460408051868152602081018690526001600160a01b03858116828401529151339392891692917f8a9f5b93a9427ed2074a269336914d74d6b34dfe5679f30c5cf172f5842aa795919081900360600190a4506001949350505050565b3360009081526002602052604081205460ff166112145760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064016105e4565b6000806009546000146112b85761122a85611343565b60055491935091506001600160a01b03161561127c576005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561127a573d6000803e3d6000fd5b505b6040516001600160a01b0387169083156108fc029084906000818181858888f193505050501580156112b2573d6000803e3d6000fd5b506112f3565b6040516001600160a01b0387169086156108fc029087906000818181858888f193505050501580156112ee573d6000803e3d6000fd5b508491505b856001600160a01b0316847f9651479651fe91907cee7de24a0e47091421878d660c93c6fe0d04c7b7b2404b8460405161132f91815260200190565b60405180910390a350600195945050505050565b60008060095483116113975760405162461bcd60e51b815260206004820152601760248201527f4665652067726561746572207468616e20616d6f756e7400000000000000000060448201526064016105e4565b506009546113a581846115f4565b9150915091565b6001600160a01b03811681146113c157600080fd5b50565b6000602082840312156113d657600080fd5b81356113e1816113ac565b9392505050565b600080600080600060a0868803121561140057600080fd5b853561140b816113ac565b9450602086013561141b816113ac565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561144c57600080fd5b8235611457816113ac565b91506020830135611467816113ac565b809150509250929050565b60006020828403121561148457600080fd5b5035919050565b80151581146113c157600080fd5b600080604083850312156114ac57600080fd5b82356114b7816113ac565b915060208301356114678161148b565b600080604083850312156114da57600080fd5b82356114e5816113ac565b946020939093013593505050565b6000806000806080858703121561150957600080fd5b8435611514816113ac565b935060208501359250604085013591506060850135611532816113ac565b939692955090935050565b60008060006060848603121561155257600080fd5b833561155d816113ac565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161159a5761159a611572565b5060010190565b6000602082840312156115b357600080fd5b81516113e18161148b565b6000602082840312156115d057600080fd5b81516113e1816113ac565b6000602082840312156115ed57600080fd5b5051919050565b8181038181111561160757611607611572565b9291505056fea2646970667358221220e0479cfe8585a242a72a4fffc36eef989bb3d70eccd69fac9be692f5ee593ce064736f6c63430008110033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80639ab4a445116100d1578063dda4fa8f1161008a578063f25f4b5611610064578063f25f4b5614610465578063f2fde38b14610485578063f3a7cb61146104a5578063fea54d06146104c557600080fd5b8063dda4fa8f1461040f578063f05d16f71461042f578063f1c069061461044f57600080fd5b80639ab4a4451461034e578063b8fb28161461036e578063c7e0af6a1461038e578063cd23e147146103c3578063cf820461146103d9578063d72b11bd146103ef57600080fd5b806355eba8681161012357806355eba868146102705780636fba2983146102a857806379ba5097146102e357806381203d03146102f85780638da5cb5b1461030e57806390d49b9d1461032e57600080fd5b80630536b7231461017657806315a01045146101bb578063256c1ea3146101ce578063383fe467146101ee578063454aa6691461022e57806351295f011461025057600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101a66101913660046113c4565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101a66101c93660046113c4565b6104e5565b3480156101da57600080fd5b506101a66101e93660046113e8565b610591565b3480156101fa57600080fd5b5061020e610209366004611439565b610969565b604080516001600160a01b039384168152929091166020830152016101b2565b34801561023a57600080fd5b5061024e610249366004611472565b610b1a565b005b34801561025c57600080fd5b5061024e61026b366004611499565b610b78565b34801561027c57600080fd5b5061029061028b3660046113c4565b610be3565b6040516001600160a01b0390911681526020016101b2565b3480156102b457600080fd5b506102d56102c33660046113c4565b600a6020526000908152604090205481565b6040519081526020016101b2565b3480156102ef57600080fd5b5061024e610cc3565b34801561030457600080fd5b506102d560035481565b34801561031a57600080fd5b50600054610290906001600160a01b031681565b34801561033a57600080fd5b5061020e6103493660046113c4565b610d3e565b34801561035a57600080fd5b50600754610290906001600160a01b031681565b34801561037a57600080fd5b5061024e6103893660046114c7565b610d80565b34801561039a57600080fd5b506103ae6103a9366004611472565b610db3565b604080519283526020830191909152016101b2565b3480156103cf57600080fd5b506102d560085481565b3480156103e557600080fd5b506102d560095481565b3480156103fb57600080fd5b50600654610290906001600160a01b031681565b34801561041b57600080fd5b5061020e61042a3660046113c4565b610dda565b34801561043b57600080fd5b5061024e61044a366004611472565b610e1c565b34801561045b57600080fd5b506102d560045481565b34801561047157600080fd5b50600554610290906001600160a01b031681565b34801561049157600080fd5b5061024e6104a03660046113c4565b610e38565b3480156104b157600080fd5b506101a66104c03660046114f3565b610e71565b3480156104d157600080fd5b506101a66104e036600461153d565b6111bd565b60038054600091826104f683611588565b90915550506008543490471061054157600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561053f573d6000803e3d6000fd5b505b600354604080518381526001600160a01b03861660208201523392917f50ed54fdff2e8028310feac14aa2e8343c5eb6ab4fb192510bd3358cbe18fb1d910160405180910390a350600192915050565b3360009081526002602052604081205460ff166105ed5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064015b60405180910390fd5b600754849060009081906001600160a01b03908116908a160361076f57600954156107055761061b87611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb90604401600060405180830381600087803b15801561066b57600080fd5b505af115801561067f573d6000803e3d6000fd5b50506005546001600160a01b03161591506106fd90505760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb90604401600060405180830381600087803b1580156106e457600080fd5b505af11580156106f8573d6000803e3d6000fd5b505050505b809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb90604401600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050869250610903565b6009541561088b5761078087611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb906044016020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906115a1565b506005546001600160a01b0316156106fd5760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb906044016020604051808303816000875af115801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906115a1565b50809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb906044016020604051808303816000875af11580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe91906115a1565b508692505b876001600160a01b0316896001600160a01b0316877f227f62390ff31ea224acc601adb99ca571aafaeef45b6528a1f75af3fdee81b08689604051610952929190918252602082015260400190565b60405180910390a450600198975050505050505050565b6000805481906001600160a01b0316331461098357600080fd5b6001600160a01b038416158015906109a357506001600160a01b03831615155b6109ea5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906115be565b60405163f2fde38b60e01b81526001600160a01b0385811660048301529193509085169063f2fde38b90602401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50505050836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1191906115be565b90509250929050565b6000546001600160a01b03163314610b3157600080fd5b804711610b3b5750475b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610b74573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b8f57600080fd5b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917ffcaa24b1276bfa7dbf77797c0a984b9df924acbeaabd48cd2f1b0eca379b78fa91a35050565b600080546001600160a01b03163314610bfb57600080fd5b6001600160a01b038216610c4c5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b6007546001600160a01b0390811690831603610ca05760405162461bcd60e51b815260206004820152601360248201527273616d65206173206f6c64206164647265737360681b60448201526064016105e4565b50600780546001600160a01b039092166001600160a01b03199092168217905590565b6001546001600160a01b03163314610cda57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000805481906001600160a01b03163314610d5857600080fd5b5050600580546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610d9757600080fd5b6001600160a01b039091166000908152600a6020526040902055565b6000805481906001600160a01b03163314610dcd57600080fd5b5050600880549082905591565b6000805481906001600160a01b03163314610df457600080fd5b5050600680546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610e3357600080fd5b600955565b6000546001600160a01b03163314610e4f57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460009182610e8283611588565b90915550506007546001600160a01b0390811690861603610fee576040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd90606401600060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505050506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d91906115db565b10610fe95760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb90604401600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050505b61115e565b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015611041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106591906115a1565b506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906115db565b1061115e5760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb906044016020604051808303816000875af1158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c91906115a1565b505b60035460408051868152602081018690526001600160a01b03858116828401529151339392891692917f8a9f5b93a9427ed2074a269336914d74d6b34dfe5679f30c5cf172f5842aa795919081900360600190a4506001949350505050565b3360009081526002602052604081205460ff166112145760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064016105e4565b6000806009546000146112b85761122a85611343565b60055491935091506001600160a01b03161561127c576005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561127a573d6000803e3d6000fd5b505b6040516001600160a01b0387169083156108fc029084906000818181858888f193505050501580156112b2573d6000803e3d6000fd5b506112f3565b6040516001600160a01b0387169086156108fc029087906000818181858888f193505050501580156112ee573d6000803e3d6000fd5b508491505b856001600160a01b0316847f9651479651fe91907cee7de24a0e47091421878d660c93c6fe0d04c7b7b2404b8460405161132f91815260200190565b60405180910390a350600195945050505050565b60008060095483116113975760405162461bcd60e51b815260206004820152601760248201527f4665652067726561746572207468616e20616d6f756e7400000000000000000060448201526064016105e4565b506009546113a581846115f4565b9150915091565b6001600160a01b03811681146113c157600080fd5b50565b6000602082840312156113d657600080fd5b81356113e1816113ac565b9392505050565b600080600080600060a0868803121561140057600080fd5b853561140b816113ac565b9450602086013561141b816113ac565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561144c57600080fd5b8235611457816113ac565b91506020830135611467816113ac565b809150509250929050565b60006020828403121561148457600080fd5b5035919050565b80151581146113c157600080fd5b600080604083850312156114ac57600080fd5b82356114b7816113ac565b915060208301356114678161148b565b600080604083850312156114da57600080fd5b82356114e5816113ac565b946020939093013593505050565b6000806000806080858703121561150957600080fd5b8435611514816113ac565b935060208501359250604085013591506060850135611532816113ac565b939692955090935050565b60008060006060848603121561155257600080fd5b833561155d816113ac565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161159a5761159a611572565b5060010190565b6000602082840312156115b357600080fd5b81516113e18161148b565b6000602082840312156115d057600080fd5b81516113e1816113ac565b6000602082840312156115ed57600080fd5b5051919050565b8181038181111561160757611607611572565b9291505056fea2646970667358221220e0479cfe8585a242a72a4fffc36eef989bb3d70eccd69fac9be692f5ee593ce064736f6c63430008110033

Deployed Bytecode Sourcemap

2724:7584:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1359:38;;;;;;;;;;-1:-1:-1;1359:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;1359:38:0;;;;;;;;4559:350;;;;;;:::i;:::-;;:::i;6444:1400::-;;;;;;;;;;-1:-1:-1;6444:1400:0;;;;;:::i;:::-;;:::i;9315:439::-;;;;;;;;;;-1:-1:-1;9315:439:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;1816:15:1;;;1798:34;;1868:15;;;;1863:2;1848:18;;1841:43;1733:18;9315:439:0;1586:304:1;9978:235:0;;;;;;;;;;-1:-1:-1;9978:235:0;;;;;:::i;:::-;;:::i;:::-;;1871:161;;;;;;;;;;-1:-1:-1;1871:161:0;;;;;:::i;:::-;;:::i;8673:321::-;;;;;;;;;;-1:-1:-1;8673:321:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2754:32:1;;;2736:51;;2724:2;2709:18;8673:321:0;2590:203:1;3312:53:0;;;;;;;;;;-1:-1:-1;3312:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2944:25:1;;;2932:2;2917:18;3312:53:0;2798:177:1;2267:196:0;;;;;;;;;;;;;:::i;2758:22::-;;;;;;;;;;;;;;;;1300:20;;;;;;;;;;-1:-1:-1;1300:20:0;;;;-1:-1:-1;;;;;1300:20:0;;;8146:212;;;;;;;;;;-1:-1:-1;8146:212:0;;;;;:::i;:::-;;:::i;2972:71::-;;;;;;;;;;-1:-1:-1;2972:71:0;;;;-1:-1:-1;;;;;2972:71:0;;;9821:149;;;;;;;;;;-1:-1:-1;9821:149:0;;;;;:::i;:::-;;:::i;9026:230::-;;;;;;;;;;-1:-1:-1;9026:230:0;;;;;:::i;:::-;;:::i;:::-;;;;3474:25:1;;;3530:2;3515:18;;3508:34;;;;3447:18;9026:230:0;3300:248:1;3050:43:0;;;;;;;;;;;;;;;;3100:20;;;;;;;;;;;;;;;;2937:28;;;;;;;;;;-1:-1:-1;2937:28:0;;;;-1:-1:-1;;;;;2937:28:0;;;8396:236;;;;;;;;;;-1:-1:-1;8396:236:0;;;;;:::i;:::-;;:::i;10219:86::-;;;;;;;;;;-1:-1:-1;10219:86:0;;;;;:::i;:::-;;:::i;2787:30::-;;;;;;;;;;;;;;;;2906:24;;;;;;;;;;-1:-1:-1;2906:24:0;;;;-1:-1:-1;;;;;2906:24:0;;;2040:102;;;;;;;;;;-1:-1:-1;2040:102:0;;;;;:::i;:::-;;:::i;5499:935::-;;;;;;;;;;-1:-1:-1;5499:935:0;;;;;:::i;:::-;;:::i;4917:572::-;;;;;;;;;;-1:-1:-1;4917:572:0;;;;;:::i;:::-;;:::i;4559:350::-;4641:7;:9;;4624:4;;;4641:9;;;:::i;:::-;;;;-1:-1:-1;;4731:20:0;;4678:9;;4706:21;:45;4702:109;;4776:5;;;4768:31;;-1:-1:-1;;;;;4776:5:0;;;;4768:31;;;;;4792:6;;4768:31;4776:5;4768:31;4792:6;4776:5;4768:31;;;;;;;;;;;;;;;;;;;;;4702:109;4835:7;;4828:51;;;4917:25:1;;;-1:-1:-1;;;;;4978:32:1;;4973:2;4958:18;;4951:60;4844:10:0;;4835:7;4828:51;;4890:18:1;4828:51:0;;;;;;;-1:-1:-1;4897:4:0;;4559:350;-1:-1:-1;;4559:350:0:o;6444:1400::-;1804:10;6582:4;1797:18;;;:6;:18;;;;;;;;1789:52;;;;-1:-1:-1;;;1789:52:0;;5224:2:1;1789:52:0;;;5206:21:1;5263:2;5243:18;;;5236:30;-1:-1:-1;;;5282:18:1;;;5275:51;5343:18;;1789:52:0;;;;;;;;;6711:11:::1;::::0;6616;;6599:14:::1;::::0;;;-1:-1:-1;;;;;6711:11:0;;::::1;6695:27:::0;;::::1;::::0;6691:1047:::1;;6743:5;::::0;:10;6739:473:::1;;6792:23;6803:11;6792:10;:23::i;:::-;6834:51;::::0;-1:-1:-1;;;6834:51:0;;-1:-1:-1;;;;;5564:32:1;;;6834:51:0::1;::::0;::::1;5546::1::0;5613:18;;;5606:34;;;6774:41:0;;-1:-1:-1;6774:41:0;;-1:-1:-1;6834:35:0;::::1;::::0;::::1;::::0;5519:18:1;;6834:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6908:9:0::1;::::0;-1:-1:-1;;;;;6908:9:0::1;:23:::0;;-1:-1:-1;6904:123:0::1;::::0;-1:-1:-1;6904:123:0::1;6992:9;::::0;6956:51:::1;::::0;-1:-1:-1;;;6956:51:0;;-1:-1:-1;;;;;6992:9:0;;::::1;6956:51;::::0;::::1;5546::1::0;5613:18;;;5606:34;;;6956:35:0;;::::1;::::0;::::1;::::0;5519:18:1;;6956:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6904:123;7054:8;7045:17;;6691:1047;;6739:473;7103:54;::::0;-1:-1:-1;;;7103:54:0;;-1:-1:-1;;;;;5564:32:1;;;7103:54:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7103:35:0;::::1;::::0;::::1;::::0;5519:18:1;;7103:54:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7185:11;7176:20;;6691:1047;;;7250:5;::::0;:10;7246:479:::1;;7299:23;7310:11;7299:10;:23::i;:::-;7341:53;::::0;-1:-1:-1;;;7341:53:0;;-1:-1:-1;;;;;5564:32:1;;;7341:53:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7281:41:0;;-1:-1:-1;7281:41:0;;-1:-1:-1;7341:37:0;::::1;::::0;::::1;::::0;5519:18:1;;7341:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7417:9:0::1;::::0;-1:-1:-1;;;;;7417:9:0::1;:23:::0;7413:125:::1;;7503:9;::::0;7465:53:::1;::::0;-1:-1:-1;;;7465:53:0;;-1:-1:-1;;;;;7503:9:0;;::::1;7465:53;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7465:37:0;;::::1;::::0;::::1;::::0;5519:18:1;;7465:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7565:8;7556:17;;7246:479;;;7614:56;::::0;-1:-1:-1;;;7614:56:0;;-1:-1:-1;;;;;5564:32:1;;;7614:56:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7614:37:0;::::1;::::0;::::1;::::0;5519:18:1;;7614:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7698:11;7689:20;;7246:479;7790:4;-1:-1:-1::0;;;;;7757:55:0::1;7776:12;-1:-1:-1::0;;;;;7757:55:0::1;7766:8;7757:55;7796:6;7804:7;7757:55;;;;;;3474:25:1::0;;;3530:2;3515:18;;3508:34;3462:2;3447:18;;3300:248;7757:55:0::1;;;;;;;;-1:-1:-1::0;7832:4:0::1;::::0;6444:1400;-1:-1:-1;;;;;;;;6444:1400:0:o;9315:439::-;9417:16;1722:5;;9417:16;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;9472:28:0;::::1;::::0;;::::1;::::0;:55:::1;;-1:-1:-1::0;;;;;;9504:23:0;::::1;::::0;::::1;9472:55;9464:92;;;::::0;-1:-1:-1;;;9464:92:0;;6103:2:1;9464:92:0::1;::::0;::::1;6085:21:1::0;6142:2;6122:18;;;6115:30;-1:-1:-1;;;6161:18:1;;;6154:54;6225:18;;9464:92:0::1;5901:348:1::0;9464:92:0::1;9593:14;-1:-1:-1::0;;;;;9578:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9627:59;::::0;-1:-1:-1;;;9627:59:0;;-1:-1:-1;;;;;2754:32:1;;;9627:59:0::1;::::0;::::1;2736:51:1::0;9567:49:0;;-1:-1:-1;9627:48:0;;::::1;::::0;::::1;::::0;2709:18:1;;9627:59:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9723:14;-1:-1:-1::0;;;;;9708:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9697:49;;9315:439:::0;;;;;:::o;9978:235::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;10081:12:::1;10056:21;:37;10052:106;;-1:-1:-1::0;10125:21:0::1;10052:106;10176:5;::::0;;10168:37:::1;::::0;-1:-1:-1;;;;;10176:5:0;;::::1;::::0;10168:37;::::1;;;::::0;10192:12;;10168:37;10176:5;10168:37;10192:12;10176:5;10168:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9978:235:::0;:::o;1871:161::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;1952:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:25;;-1:-1:-1;;1952:25:0::1;::::0;::::1;;::::0;;::::1;::::0;;;1993:31;;1952:25;;:15;1993:31:::1;::::0;::::1;1871:161:::0;;:::o;8673:321::-;8747:18;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;8786:27:0;::::1;8778:64;;;::::0;-1:-1:-1;;;8778:64:0;;6103:2:1;8778:64:0::1;::::0;::::1;6085:21:1::0;6142:2;6122:18;;;6115:30;-1:-1:-1;;;6161:18:1;;;6154:54;6225:18;;8778:64:0::1;5901:348:1::0;8778:64:0::1;8878:11;::::0;-1:-1:-1;;;;;8878:11:0;;::::1;8861:28:::0;;::::1;::::0;8853:60:::1;;;::::0;-1:-1:-1;;;8853:60:0;;6712:2:1;8853:60:0::1;::::0;::::1;6694:21:1::0;6751:2;6731:18;;;6724:30;-1:-1:-1;;;6770:18:1;;;6763:49;6829:18;;8853:60:0::1;6510:343:1::0;8853:60:0::1;-1:-1:-1::0;8924:11:0::1;:27:::0;;-1:-1:-1;;;;;8924:27:0;;::::1;-1:-1:-1::0;;;;;;8924:27:0;;::::1;::::0;::::1;::::0;;;8673:321::o;2267:196::-;2334:8;;-1:-1:-1;;;;;2334:8:0;2320:10;:22;2312:31;;;;;;2387:8;;;2380:5;;2359:37;;-1:-1:-1;;;;;2387:8:0;;;;2380:5;;;;2359:37;;;2415:8;;;;2407:16;;-1:-1:-1;;;;;;2407:16:0;;;-1:-1:-1;;;;;2415:8:0;;2407:16;;;;2434:21;;;2267:196::o;8146:212::-;8215:17;1722:5;;8215:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;8276:9:0::1;::::0;;-1:-1:-1;;;;;8296:22:0;;::::1;-1:-1:-1::0;;;;;;8296:22:0;::::1;::::0;::::1;::::0;;;8276:9;;;::::1;::::0;8146:212::o;9821:149::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;9922:28:0;;::::1;;::::0;;;:18:::1;:28;::::0;;;;:40;9821:149::o;9026:230::-;9096:17;1722:5;;9096:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;9157:20:0::1;::::0;;9188:30;;;;9157:20;9026:230::o;8396:236::-;8473:17;1722:5;;8473:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;8534:13:0::1;::::0;;-1:-1:-1;;;;;8558:30:0;;::::1;-1:-1:-1::0;;;;;;8558:30:0;::::1;::::0;::::1;::::0;;;8534:13;;;::::1;::::0;8396:236::o;10219:86::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;10283:5:::1;:14:::0;10219:86::o;2040:102::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;2114:8:::1;:20:::0;;-1:-1:-1;;;;;;2114:20:0::1;-1:-1:-1::0;;;;;2114:20:0;;;::::1;::::0;;;::::1;::::0;;2040:102::o;5499:935::-;5634:7;:9;;5617:4;;;5634:9;;;:::i;:::-;;;;-1:-1:-1;;5676:11:0;;-1:-1:-1;;;;;5676:11:0;;;5660:27;;;;5656:651;;5704:79;;-1:-1:-1;;;5704:79:0;;5744:10;5704:79;;;7098:34:1;5764:4:0;7148:18:1;;;7141:43;7200:18;;;7193:34;;;-1:-1:-1;;;;;5704:39:0;;;;;7033:18:1;;5704:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;5857:32:0;;;;;;:18;:32;;;;;;;;5802:51;;-1:-1:-1;;;5802:51:0;;5847:4;5802:51;;;2736::1;5857:32:0;;;5802:36;;2709:18:1;;5802:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:87;5798:183;;5946:5;;5910:55;;-1:-1:-1;;;5910:55:0;;-1:-1:-1;;;;;5946:5:0;;;5910:55;;;5546:51:1;5613:18;;;5606:34;;;5910:35:0;;;;;;5519:18:1;;5910:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5798:183;5656:651;;;6015:81;;-1:-1:-1;;;6015:81:0;;6057:10;6015:81;;;7098:34:1;6077:4:0;7148:18:1;;;7141:43;7200:18;;;7193:34;;;-1:-1:-1;;;;;6015:41:0;;;;;7033:18:1;;6015:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6170:32:0;;;;;;:18;:32;;;;;;;;6115:51;;-1:-1:-1;;;6115:51:0;;6160:4;6115:51;;;2736::1;6170:32:0;;;6115:36;;2709:18:1;;6115:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:87;6111:185;;6261:5;;6223:57;;-1:-1:-1;;;6223:57:0;;-1:-1:-1;;;;;6261:5:0;;;6223:57;;;5546:51:1;5613:18;;;5606:34;;;6223:37:0;;;;;;5519:18:1;;6223:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6111:185;6332:7;;6324:80;;;7629:25:1;;;7685:2;7670:18;;7663:34;;;-1:-1:-1;;;;;7733:32:1;;;7713:18;;;7706:60;6324:80:0;;6355:10;;6324:80;;;;6332:7;6324:80;;;;;;7617:2:1;6324:80:0;;;-1:-1:-1;6422:4:0;5499:935;;;;;;:::o;4917:572::-;1804:10;5010:4;1797:18;;;:6;:18;;;;;;;;1789:52;;;;-1:-1:-1;;;1789:52:0;;5224:2:1;1789:52:0;;;5206:21:1;5263:2;5243:18;;;5236:30;-1:-1:-1;;;5282:18:1;;;5275:51;5343:18;;1789:52:0;5022:345:1;1789:52:0;5027:16:::1;5054:11:::0;5082:5:::1;;5091:1;5082:10;5078:331;;5127:18;5138:6;5127:10;:18::i;:::-;5164:9;::::0;5109:36;;-1:-1:-1;5109:36:0;-1:-1:-1;;;;;;5164:9:0::1;:23:::0;5160:96:::1;;5216:9;::::0;5208:32:::1;::::0;-1:-1:-1;;;;;5216:9:0;;::::1;::::0;5208:32;::::1;;;::::0;5236:3;;5216:9:::1;5208:32:::0;5216:9;5208:32;5236:3;5216:9;5208:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5160:96;5270:32;::::0;-1:-1:-1;;;;;5270:22:0;::::1;::::0;:32;::::1;;;::::0;5293:8;;5270:32:::1;::::0;;;5293:8;5270:22;:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5078:331;;;5335:30;::::0;-1:-1:-1;;;;;5335:22:0;::::1;::::0;:30;::::1;;;::::0;5358:6;;5335:30:::1;::::0;;;5358:6;5335:22;:30;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5391:6;5380:17;;5078:331;5444:4;-1:-1:-1::0;;;;;5426:33:0::1;5434:8;5426:33;5450:8;5426:33;;;;2944:25:1::0;;2932:2;2917:18;;2798:177;5426:33:0::1;;;;;;;;-1:-1:-1::0;5477:4:0::1;::::0;4917:572;-1:-1:-1;;;;;4917:572:0:o;7874:236::-;7932:16;7950:19;7997:5;;7990:6;:12;7982:48;;;;-1:-1:-1;;;7982:48:0;;7979:2:1;7982:48:0;;;7961:21:1;8018:2;7998:18;;;7991:30;8057:25;8037:18;;;8030:53;8100:18;;7982:48:0;7777:347:1;7982:48:0;-1:-1:-1;8055:5:0;;8082:20;8055:5;8082:6;:20;:::i;:::-;8071:31;;7874:236;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;594:594::-;689:6;697;705;713;721;774:3;762:9;753:7;749:23;745:33;742:53;;;791:1;788;781:12;742:53;830:9;817:23;849:31;874:5;849:31;:::i;:::-;899:5;-1:-1:-1;956:2:1;941:18;;928:32;969:33;928:32;969:33;:::i;:::-;594:594;;1021:7;;-1:-1:-1;;;;1075:2:1;1060:18;;1047:32;;1126:2;1111:18;;1098:32;;1177:3;1162:19;;;1149:33;;-1:-1:-1;594:594:1:o;1193:388::-;1261:6;1269;1322:2;1310:9;1301:7;1297:23;1293:32;1290:52;;;1338:1;1335;1328:12;1290:52;1377:9;1364:23;1396:31;1421:5;1396:31;:::i;:::-;1446:5;-1:-1:-1;1503:2:1;1488:18;;1475:32;1516:33;1475:32;1516:33;:::i;:::-;1568:7;1558:17;;;1193:388;;;;;:::o;1895:180::-;1954:6;2007:2;1995:9;1986:7;1982:23;1978:32;1975:52;;;2023:1;2020;2013:12;1975:52;-1:-1:-1;2046:23:1;;1895:180;-1:-1:-1;1895:180:1:o;2080:118::-;2166:5;2159:13;2152:21;2145:5;2142:32;2132:60;;2188:1;2185;2178:12;2203:382;2268:6;2276;2329:2;2317:9;2308:7;2304:23;2300:32;2297:52;;;2345:1;2342;2335:12;2297:52;2384:9;2371:23;2403:31;2428:5;2403:31;:::i;:::-;2453:5;-1:-1:-1;2510:2:1;2495:18;;2482:32;2523:30;2482:32;2523:30;:::i;2980:315::-;3048:6;3056;3109:2;3097:9;3088:7;3084:23;3080:32;3077:52;;;3125:1;3122;3115:12;3077:52;3164:9;3151:23;3183:31;3208:5;3183:31;:::i;:::-;3233:5;3285:2;3270:18;;;;3257:32;;-1:-1:-1;;;2980:315:1:o;3553:525::-;3639:6;3647;3655;3663;3716:3;3704:9;3695:7;3691:23;3687:33;3684:53;;;3733:1;3730;3723:12;3684:53;3772:9;3759:23;3791:31;3816:5;3791:31;:::i;:::-;3841:5;-1:-1:-1;3893:2:1;3878:18;;3865:32;;-1:-1:-1;3944:2:1;3929:18;;3916:32;;-1:-1:-1;4000:2:1;3985:18;;3972:32;4013:33;3972:32;4013:33;:::i;:::-;3553:525;;;;-1:-1:-1;3553:525:1;;-1:-1:-1;;3553:525:1:o;4083:383::-;4160:6;4168;4176;4229:2;4217:9;4208:7;4204:23;4200:32;4197:52;;;4245:1;4242;4235:12;4197:52;4284:9;4271:23;4303:31;4328:5;4303:31;:::i;:::-;4353:5;4405:2;4390:18;;4377:32;;-1:-1:-1;4456:2:1;4441:18;;;4428:32;;4083:383;-1:-1:-1;;;4083:383:1:o;4471:127::-;4532:10;4527:3;4523:20;4520:1;4513:31;4563:4;4560:1;4553:15;4587:4;4584:1;4577:15;4603:135;4642:3;4663:17;;;4660:43;;4683:18;;:::i;:::-;-1:-1:-1;4730:1:1;4719:13;;4603:135::o;5651:245::-;5718:6;5771:2;5759:9;5750:7;5746:23;5742:32;5739:52;;;5787:1;5784;5777:12;5739:52;5819:9;5813:16;5838:28;5860:5;5838:28;:::i;6254:251::-;6324:6;6377:2;6365:9;6356:7;6352:23;6348:32;6345:52;;;6393:1;6390;6383:12;6345:52;6425:9;6419:16;6444:31;6469:5;6444:31;:::i;7238:184::-;7308:6;7361:2;7349:9;7340:7;7336:23;7332:32;7329:52;;;7377:1;7374;7367:12;7329:52;-1:-1:-1;7400:16:1;;7238:184;-1:-1:-1;7238:184:1:o;8129:128::-;8196:9;;;8217:11;;;8214:37;;;8231:18;;:::i;:::-;8129:128;;;;:::o

Swarm Source

ipfs://e0479cfe8585a242a72a4fffc36eef989bb3d70eccd69fac9be692f5ee593ce0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.