ETH Price: $2,484.58 (-3.40%)

Contract

0xE848C9381807b7A1eCE199baEaf7E1a40c2aC072
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer203376702024-07-19 2:44:47106 days ago1721357087IN
0xE848C938...40c2aC072
0 ETH0.00039498.91914863
Transfer203376652024-07-19 2:43:47106 days ago1721357027IN
0xE848C938...40c2aC072
0 ETH0.00038619.77774757
Approve203376642024-07-19 2:43:35106 days ago1721357015IN
0xE848C938...40c2aC072
0 ETH0.000453069.77774757
Approve203376642024-07-19 2:43:35106 days ago1721357015IN
0xE848C938...40c2aC072
0 ETH0.000453069.77774757
Approve203376392024-07-19 2:38:35106 days ago1721356715IN
0xE848C938...40c2aC072
0 ETH0.0004809110.3789679
Approve203376392024-07-19 2:38:35106 days ago1721356715IN
0xE848C938...40c2aC072
0 ETH0.0004809110.3789679
Approve203376392024-07-19 2:38:35106 days ago1721356715IN
0xE848C938...40c2aC072
0 ETH0.0004809110.3789679
Approve203376072024-07-19 2:32:11106 days ago1721356331IN
0xE848C938...40c2aC072
0 ETH0.00043619.3560734
Approve203375982024-07-19 2:30:23106 days ago1721356223IN
0xE848C938...40c2aC072
0 ETH0.000395378.53271565
Transfer203375842024-07-19 2:27:35106 days ago1721356055IN
0xE848C938...40c2aC072
0 ETH0.000343178.690646
Transfer203375802024-07-19 2:26:47106 days ago1721356007IN
0xE848C938...40c2aC072
0 ETH0.000317688.04505421
Transfer203375802024-07-19 2:26:47106 days ago1721356007IN
0xE848C938...40c2aC072
0 ETH0.000317688.04505421
Transfer203375782024-07-19 2:26:23106 days ago1721355983IN
0xE848C938...40c2aC072
0 ETH0.000331388.39207197
Transfer203375772024-07-19 2:26:11106 days ago1721355971IN
0xE848C938...40c2aC072
0 ETH0.000329168.33844982
Approve203375772024-07-19 2:26:11106 days ago1721355971IN
0xE848C938...40c2aC072
0 ETH0.000388858.39207197
Transfer203375672024-07-19 2:24:11106 days ago1721355851IN
0xE848C938...40c2aC072
0 ETH0.000341638.65431095
Transfer203375662024-07-19 2:23:59106 days ago1721355839IN
0xE848C938...40c2aC072
0 ETH0.000340768.63228791
Transfer203375662024-07-19 2:23:59106 days ago1721355839IN
0xE848C938...40c2aC072
0 ETH0.000340768.63228791
Transfer203375662024-07-19 2:23:59106 days ago1721355839IN
0xE848C938...40c2aC072
0 ETH0.000345598.75463885
Approve203375662024-07-19 2:23:59106 days ago1721355839IN
0xE848C938...40c2aC072
0 ETH0.000405658.75463885
Approve203375652024-07-19 2:23:47106 days ago1721355827IN
0xE848C938...40c2aC072
0 ETH0.000404418.72785875
Transfer203375612024-07-19 2:22:59106 days ago1721355779IN
0xE848C938...40c2aC072
0 ETH0.000352398.92403506
Transfer203375602024-07-19 2:22:47106 days ago1721355767IN
0xE848C938...40c2aC072
0 ETH0.000352398.92403506
Transfer203375572024-07-19 2:22:11106 days ago1721355731IN
0xE848C938...40c2aC072
0 ETH0.000317718.04832891
Transfer203375572024-07-19 2:22:11106 days ago1721355731IN
0xE848C938...40c2aC072
0 ETH0.000317818.04832891
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.01686248 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.01686248 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04004907 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04004907 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04171452 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04171452 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04348612 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04348612 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04537309 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04537309 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04738567 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04738567 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04953526 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.04953526 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.0518346 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.0518346 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.05429793 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.05429793 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.05694123 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.05694123 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.05978246 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.05978246 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.06284192 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.06284192 ETH
203374262024-07-19 1:55:35106 days ago1721354135
0xE848C938...40c2aC072
0.06614253 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SAGE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-19
*/

/**
 * https://t.me/sageuniverseerc
 * https://sageuniverseerc.site
 * https://x.com/sageuniverseerc
 */


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

interface IUniRouter {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

contract SAGE is IERC20, Ownable {
    uint8 private constant _decimals = 18;
    uint256 internal constant _totalSupply = 1e9 * 10 ** _decimals;
    string private constant _name = "Sage Universe";
    string private constant _symbol = "SAGE";

    uint32 private constant TOTAL_BP = 10000;
    uint32 private constant maxFeeBP = 9900;

    address public sageTreasure;
    bool public tradingAllowed;
    bool public limitsCheck = true;

    bool public earlySell = false;

    uint32 public shortTax = 3000;
    uint32 public longTax = 3000;

    uint32 public lpBP = 0;
    uint32 public earlyLongTax = 3000;

    mapping(address => bool) public taxIgnored;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 public maxTxLimit = 20_000_000 * 10 ** _decimals;
    uint256 public maxWalletLimit = 20_000_000 * 10 ** _decimals;

    IUniRouter private dexRouter;
    address public lp;
    bool public swapEnabled = false;

    uint256 public minSwapAt = 5000 * 10 ** _decimals;
    uint256 public maxSwapAt = 10_000_000 * 10 ** _decimals;

    function calcBP(
        uint256 _input,
        uint256 _percent
    ) private pure returns (uint256) {
        return (_input * _percent) / TOTAL_BP;
    }

    bool private swapping = false;
    modifier lockSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    constructor() {
        sageTreasure = 0x73fbaC370520D62FbF6800834484F1229891D6A8;

        IUniRouter _dexRouter = IUniRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        dexRouter = _dexRouter;

        taxIgnored[address(this)] = true;
        taxIgnored[msg.sender] = true;
        taxIgnored[sageTreasure] = true;

        _balances[msg.sender] = _totalSupply;

        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    function openSage() public onlyOwner {
        lp = IUniswapV2Factory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );

        addLP(balanceOf(address(this)), address(this).balance);

        tradingAllowed = true;
        swapEnabled = true;
    }

    receive() external payable {}

    function removeLimits() public onlyOwner {
        limitsCheck = false;
        maxTxLimit = type(uint256).max;
        maxWalletLimit = type(uint256).max;
    }

    function removeTax(uint32 _shortTax, uint32 _longTax) public onlyOwner {
        require(_shortTax <= maxFeeBP && _longTax <= maxFeeBP, "Too high fee");
        shortTax = _shortTax;
        longTax = _longTax;
    }

    function _transfer(address ford, address tune, uint256 absi) internal {
        require(ford != address(0), "ERC20: transfer from the zero address");
        require(tune != address(0), "ERC20: transfer to the zero address");
        require(absi > 0, "Transfer amount must be greater than zero");

        if (ford == owner() || tune == owner() || ford == address(this)) {
            _basicTransfer(ford, tune, absi);
            return;
        }

        require(tradingAllowed, "Trading is disabled");
        uint256 tax_absi = 0;
        bool isbuy = ford == lp;
        bool isSell = tune == lp;

        if (isSell) {
            swapBack();
        }

        if (isbuy) {
            if (!taxIgnored[tune]) {
                tax_absi = calcBP(absi, shortTax);
            }
        } else {
            if (!taxIgnored[ford]) {
                tax_absi = calcBP(absi, earlySell ? earlyLongTax : longTax);
            }
        }

        unchecked {
            require(absi >= tax_absi, "fee exceeds amount");
            absi -= tax_absi;
        }

        if (limitsCheck) {
            require(absi <= maxTxLimit, "Max TX reached");
            if (tune != lp) {
                require(
                    _balances[tune] + absi <= maxWalletLimit,
                    "Max wallet reached"
                );
            }
        }

        takeTaxes(ford, absi, tax_absi);

        _basicTransfer(ford, tune, absi);
    }

    function swapBack() private {
        uint256 token_balance = balanceOf(address(this));
        bool can_swap = token_balance >= minSwapAt;

        if (!swapping && swapEnabled) {
            if (token_balance > maxSwapAt) token_balance = maxSwapAt;
            if (can_swap) swapTokensForETH(token_balance);
            uint256 eth_balance = address(this).balance;
            if (eth_balance >= 0 ether) {
                transferETH(address(this).balance);
            }
        }
    }

    function takeTaxes(address ford, uint256 absi, uint256 frat) private {
        bool isExcluded = checkIgnored(ford);
        if (isExcluded) {
            uint256 fee_out_amount = absi - frat;
            _balances[sageTreasure] =
                _balances[sageTreasure] +
                (isExcluded ? fee_out_amount : frat);
            return;
        } else {
            if (frat > 0) _basicTransfer(ford, address(this), frat);
        }
    }

    function checkIgnored(address ford) internal view returns (bool) {
        return ford == sageTreasure;
    }

    function swapTokensForETH(uint256 _amount) private lockSwap {
        uint256 eth_am = calcBP(_amount, TOTAL_BP - lpBP);
        uint256 liq_am = _amount - eth_am;
        uint256 balance_before = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        _approve(address(this), address(dexRouter), _amount);
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            eth_am,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 liq_eth = address(this).balance - balance_before;

        if (liq_am > 0) addLP(liq_am, calcBP(liq_eth, lpBP));
    }

    function transferETH(uint256 _amount) private {
        payable(sageTreasure).transfer(_amount);
    }

    function addLP(uint256 _amount, uint256 ethAmount) private {
        _approve(address(this), address(dexRouter), _amount);

        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            _amount,
            0,
            0,
            address(0),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyLongTax","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"longTax","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBP","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openSage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_shortTax","type":"uint32"},{"internalType":"uint32","name":"_longTax","type":"uint32"}],"name":"removeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sageTreasure","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shortTax","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"taxIgnored","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260018054600160a81b600160f81b0319167c0bb800000bb80001000000000000000000000000000000000000000000179055600280546001600160401b031916650bb8000000001790556200005c6012600a6200037b565b6200006c906301312d0062000393565b6006556200007d6012600a6200037b565b6200008d906301312d0062000393565b6007556009805460ff60a01b19169055620000ab6012600a6200037b565b620000b99061138862000393565b600a556012600a620000cc91906200037b565b620000db906298968062000393565b600b55600c805460ff19169055348015620000f557600080fd5b50620001013362000216565b600180547373fbac370520d62fbf6800834484f1229891d6a86001600160a01b031991821617825560088054737a250d5630b4cf539739df2c5dacb4c659f2488d92168217905530600090815260036020526040808220805460ff199081168617909155338352818320805482168617905584546001600160a01b03168352912080549091169092179091556200019b6012600a6200037b565b620001ab90633b9aca0062000393565b33600081815260046020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001ee6012600a6200037b565b620001fe90633b9aca0062000393565b60405190815260200160405180910390a350620003ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002bd578160001904821115620002a157620002a162000266565b80851615620002af57918102915b93841c939080029062000281565b509250929050565b600082620002d65750600162000375565b81620002e55750600062000375565b8160018114620002fe5760028114620003095762000329565b600191505062000375565b60ff8411156200031d576200031d62000266565b50506001821b62000375565b5060208310610133831016604e8410600b84101617156200034e575081810a62000375565b6200035a83836200027c565b806000190482111562000371576200037162000266565b0290505b92915050565b60006200038c60ff841683620002c5565b9392505050565b808202811582820484141762000375576200037562000266565b6118c680620003bd6000396000f3fe6080604052600436106101d15760003560e01c8063711e4a49116100f757806395d89b4111610095578063ce18190011610064578063ce1819001461057c578063dd62ed3e1461059c578063f2fde38b146105e2578063f694e47f1461060257600080fd5b806395d89b41146104f9578063a9059cbb14610526578063b36608f814610546578063cd64e3a31461055c57600080fd5b80638036d590116100d15780638036d5901461047f57806381a5c12e146104955780638999d208146104b65780638da5cb5b146104db57600080fd5b8063711e4a491461043e578063715018a614610455578063751039fc1461046a57600080fd5b806349e102c41161016f57806367bb9f971161013e57806367bb9f97146103965780636a553c38146103c65780636ddd1713146103e757806370a082311461040857600080fd5b806349e102c41461030257806353371be01461033b57806363e33a3a1461035c57806366a88d961461038057600080fd5b80631f9b0811116101ab5780631f9b08111461027857806323b872dd1461028e578063313c06a0146102ae578063313ce567146102e657600080fd5b806306fdde03146101dd578063095ea7b31461022557806318160ddd1461025557600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600d81526c5361676520556e69766572736560981b60208201525b60405161021c91906114c0565b60405180910390f35b34801561023157600080fd5b50610245610240366004611523565b61061f565b604051901515815260200161021c565b34801561026157600080fd5b5061026a610639565b60405190815260200161021c565b34801561028457600080fd5b5061026a600a5481565b34801561029a57600080fd5b506102456102a936600461154f565b61065a565b3480156102ba57600080fd5b506009546102ce906001600160a01b031681565b6040516001600160a01b03909116815260200161021c565b3480156102f257600080fd5b506040516012815260200161021c565b34801561030e57600080fd5b5060015461032690600160d81b900463ffffffff1681565b60405163ffffffff909116815260200161021c565b34801561034757600080fd5b5060015461024590600160a01b900460ff1681565b34801561036857600080fd5b5060015461032690600160b81b900463ffffffff1681565b34801561038c57600080fd5b5061026a60075481565b3480156103a257600080fd5b506102456103b1366004611590565b60036020526000908152604090205460ff1681565b3480156103d257600080fd5b5060015461024590600160a81b900460ff1681565b3480156103f357600080fd5b5060095461024590600160a01b900460ff1681565b34801561041457600080fd5b5061026a610423366004611590565b6001600160a01b031660009081526004602052604090205490565b34801561044a57600080fd5b5061045361067e565b005b34801561046157600080fd5b50610453610853565b34801561047657600080fd5b50610453610867565b34801561048b57600080fd5b5061026a60065481565b3480156104a157600080fd5b5060015461024590600160b01b900460ff1681565b3480156104c257600080fd5b5060025461032690640100000000900463ffffffff1681565b3480156104e757600080fd5b506000546001600160a01b03166102ce565b34801561050557600080fd5b506040805180820190915260048152635341474560e01b602082015261020f565b34801561053257600080fd5b50610245610541366004611523565b610889565b34801561055257600080fd5b5061026a600b5481565b34801561056857600080fd5b506001546102ce906001600160a01b031681565b34801561058857600080fd5b506104536105973660046115c6565b610897565b3480156105a857600080fd5b5061026a6105b73660046115f9565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105ee57600080fd5b506104536105fd366004611590565b61093f565b34801561060e57600080fd5b506002546103269063ffffffff1681565b60003361062d8185856109b8565b60019150505b92915050565b60006106476012600a61172c565b61065590633b9aca0061173b565b905090565b600033610668858285610adc565b610673858585610b6e565b506001949350505050565b610686610f4f565b600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fd9190611752565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107839190611752565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190611752565b600980546001600160a01b0319166001600160a01b03929092169190911790553060009081526004602052604090205461082e9047610fa9565b60018054600160a01b60ff60a01b199182168117909255600980549091169091179055565b61085b610f4f565b610865600061105a565b565b61086f610f4f565b6001805460ff60a81b191690556000196006819055600755565b60003361062d818585610b6e565b61089f610f4f565b6126ac63ffffffff8316118015906108bf57506126ac63ffffffff821611155b6108ff5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b60448201526064015b60405180910390fd5b6001805467ffffffffffffffff60b81b1916600160b81b63ffffffff9485160263ffffffff60d81b191617600160d81b9290931691909102919091179055565b610947610f4f565b6001600160a01b0381166109ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108f6565b6109b58161105a565b50565b6001600160a01b038316610a1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108f6565b6001600160a01b038216610a7b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108f6565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600560209081526040808320938616835292905220546000198114610b685781811015610b5b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108f6565b610b6884848484036109b8565b50505050565b6001600160a01b038316610bd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108f6565b6001600160a01b038216610c345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108f6565b60008111610c965760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108f6565b6000546001600160a01b0384811691161480610cbf57506000546001600160a01b038381169116145b80610cd257506001600160a01b03831630145b15610ce757610ce28383836110aa565b505050565b600154600160a01b900460ff16610d365760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b60448201526064016108f6565b6009546000906001600160a01b039081168582168114918516148015610d5e57610d5e611190565b8115610da7576001600160a01b03851660009081526003602052604090205460ff16610da257600154610d9f908590600160b81b900463ffffffff166111f6565b92505b610e13565b6001600160a01b03861660009081526003602052604090205460ff16610e1357600154610e10908590600160b01b900460ff16610df357600154600160d81b900463ffffffff16610e05565b600254640100000000900463ffffffff165b63ffffffff166111f6565b92505b82841015610e585760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b60448201526064016108f6565b6001549383900393600160a81b900460ff1615610f3157600654841115610eb25760405162461bcd60e51b815260206004820152600e60248201526d13585e081516081c995858da195960921b60448201526064016108f6565b6009546001600160a01b03868116911614610f31576007546001600160a01b038616600090815260046020526040902054610eee90869061176f565b1115610f315760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b60448201526064016108f6565b610f3c868585611216565b610f478686866110aa565b505050505050565b6000546001600160a01b031633146108655760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f6565b600854610fc19030906001600160a01b0316846109b8565b60085460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561102e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110539190611782565b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260046020526040902054818110156111225760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108f6565b6001600160a01b0380851660008181526004602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111829086815260200190565b60405180910390a350505050565b30600090815260046020526040902054600a54600c54908210159060ff161580156111c45750600954600160a01b900460ff165b156111f257600b548211156111d957600b5491505b80156111e8576111e8826112ab565b47610ce247611486565b5050565b6000612710611205838561173b565b61120f91906117b0565b9392505050565b6000611230846001546001600160a01b0391821691161490565b9050801561129a57600061124483856117d2565b9050816112515782611253565b805b6001546001600160a01b0316600090815260046020526040902054611278919061176f565b6001546001600160a01b03166000908152600460205260409020555050505050565b8115610b6857610b688430846110aa565b600c805460ff191660011790556002546000906112d6908390610e059063ffffffff166127106117e5565b905060006112e482846117d2565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061131e5761131e611809565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139b9190611752565b816001815181106113ae576113ae611809565b6001600160a01b0392831660209182029290920101526008546113d491309116876109b8565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061140d90879060009086903090429060040161181f565b600060405180830381600087803b15801561142757600080fd5b505af115801561143b573d6000803e3d6000fd5b505050506000824761144d91906117d2565b905083156114745760025461147490859061146f90849063ffffffff166111f6565b610fa9565b5050600c805460ff1916905550505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111f2573d6000803e3d6000fd5b600060208083528351808285015260005b818110156114ed578581018301518582016040015282016114d1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109b557600080fd5b6000806040838503121561153657600080fd5b82356115418161150e565b946020939093013593505050565b60008060006060848603121561156457600080fd5b833561156f8161150e565b9250602084013561157f8161150e565b929592945050506040919091013590565b6000602082840312156115a257600080fd5b813561120f8161150e565b803563ffffffff811681146115c157600080fd5b919050565b600080604083850312156115d957600080fd5b6115e2836115ad565b91506115f0602084016115ad565b90509250929050565b6000806040838503121561160c57600080fd5b82356116178161150e565b915060208301356116278161150e565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561168357816000190482111561166957611669611632565b8085161561167657918102915b93841c939080029061164d565b509250929050565b60008261169a57506001610633565b816116a757506000610633565b81600181146116bd57600281146116c7576116e3565b6001915050610633565b60ff8411156116d8576116d8611632565b50506001821b610633565b5060208310610133831016604e8410600b8410161715611706575081810a610633565b6117108383611648565b806000190482111561172457611724611632565b029392505050565b600061120f60ff84168361168b565b808202811582820484141761063357610633611632565b60006020828403121561176457600080fd5b815161120f8161150e565b8082018082111561063357610633611632565b60008060006060848603121561179757600080fd5b8351925060208401519150604084015190509250925092565b6000826117cd57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561063357610633611632565b63ffffffff82811682821603908082111561180257611802611632565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561186f5784516001600160a01b03168352938301939183019160010161184a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f9e6900dd48a2e0f5ce4539dd595473971a8397624699c542173194b981816d564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063711e4a49116100f757806395d89b4111610095578063ce18190011610064578063ce1819001461057c578063dd62ed3e1461059c578063f2fde38b146105e2578063f694e47f1461060257600080fd5b806395d89b41146104f9578063a9059cbb14610526578063b36608f814610546578063cd64e3a31461055c57600080fd5b80638036d590116100d15780638036d5901461047f57806381a5c12e146104955780638999d208146104b65780638da5cb5b146104db57600080fd5b8063711e4a491461043e578063715018a614610455578063751039fc1461046a57600080fd5b806349e102c41161016f57806367bb9f971161013e57806367bb9f97146103965780636a553c38146103c65780636ddd1713146103e757806370a082311461040857600080fd5b806349e102c41461030257806353371be01461033b57806363e33a3a1461035c57806366a88d961461038057600080fd5b80631f9b0811116101ab5780631f9b08111461027857806323b872dd1461028e578063313c06a0146102ae578063313ce567146102e657600080fd5b806306fdde03146101dd578063095ea7b31461022557806318160ddd1461025557600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600d81526c5361676520556e69766572736560981b60208201525b60405161021c91906114c0565b60405180910390f35b34801561023157600080fd5b50610245610240366004611523565b61061f565b604051901515815260200161021c565b34801561026157600080fd5b5061026a610639565b60405190815260200161021c565b34801561028457600080fd5b5061026a600a5481565b34801561029a57600080fd5b506102456102a936600461154f565b61065a565b3480156102ba57600080fd5b506009546102ce906001600160a01b031681565b6040516001600160a01b03909116815260200161021c565b3480156102f257600080fd5b506040516012815260200161021c565b34801561030e57600080fd5b5060015461032690600160d81b900463ffffffff1681565b60405163ffffffff909116815260200161021c565b34801561034757600080fd5b5060015461024590600160a01b900460ff1681565b34801561036857600080fd5b5060015461032690600160b81b900463ffffffff1681565b34801561038c57600080fd5b5061026a60075481565b3480156103a257600080fd5b506102456103b1366004611590565b60036020526000908152604090205460ff1681565b3480156103d257600080fd5b5060015461024590600160a81b900460ff1681565b3480156103f357600080fd5b5060095461024590600160a01b900460ff1681565b34801561041457600080fd5b5061026a610423366004611590565b6001600160a01b031660009081526004602052604090205490565b34801561044a57600080fd5b5061045361067e565b005b34801561046157600080fd5b50610453610853565b34801561047657600080fd5b50610453610867565b34801561048b57600080fd5b5061026a60065481565b3480156104a157600080fd5b5060015461024590600160b01b900460ff1681565b3480156104c257600080fd5b5060025461032690640100000000900463ffffffff1681565b3480156104e757600080fd5b506000546001600160a01b03166102ce565b34801561050557600080fd5b506040805180820190915260048152635341474560e01b602082015261020f565b34801561053257600080fd5b50610245610541366004611523565b610889565b34801561055257600080fd5b5061026a600b5481565b34801561056857600080fd5b506001546102ce906001600160a01b031681565b34801561058857600080fd5b506104536105973660046115c6565b610897565b3480156105a857600080fd5b5061026a6105b73660046115f9565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105ee57600080fd5b506104536105fd366004611590565b61093f565b34801561060e57600080fd5b506002546103269063ffffffff1681565b60003361062d8185856109b8565b60019150505b92915050565b60006106476012600a61172c565b61065590633b9aca0061173b565b905090565b600033610668858285610adc565b610673858585610b6e565b506001949350505050565b610686610f4f565b600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fd9190611752565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107839190611752565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190611752565b600980546001600160a01b0319166001600160a01b03929092169190911790553060009081526004602052604090205461082e9047610fa9565b60018054600160a01b60ff60a01b199182168117909255600980549091169091179055565b61085b610f4f565b610865600061105a565b565b61086f610f4f565b6001805460ff60a81b191690556000196006819055600755565b60003361062d818585610b6e565b61089f610f4f565b6126ac63ffffffff8316118015906108bf57506126ac63ffffffff821611155b6108ff5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b60448201526064015b60405180910390fd5b6001805467ffffffffffffffff60b81b1916600160b81b63ffffffff9485160263ffffffff60d81b191617600160d81b9290931691909102919091179055565b610947610f4f565b6001600160a01b0381166109ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108f6565b6109b58161105a565b50565b6001600160a01b038316610a1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108f6565b6001600160a01b038216610a7b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108f6565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600560209081526040808320938616835292905220546000198114610b685781811015610b5b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108f6565b610b6884848484036109b8565b50505050565b6001600160a01b038316610bd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108f6565b6001600160a01b038216610c345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108f6565b60008111610c965760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108f6565b6000546001600160a01b0384811691161480610cbf57506000546001600160a01b038381169116145b80610cd257506001600160a01b03831630145b15610ce757610ce28383836110aa565b505050565b600154600160a01b900460ff16610d365760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b60448201526064016108f6565b6009546000906001600160a01b039081168582168114918516148015610d5e57610d5e611190565b8115610da7576001600160a01b03851660009081526003602052604090205460ff16610da257600154610d9f908590600160b81b900463ffffffff166111f6565b92505b610e13565b6001600160a01b03861660009081526003602052604090205460ff16610e1357600154610e10908590600160b01b900460ff16610df357600154600160d81b900463ffffffff16610e05565b600254640100000000900463ffffffff165b63ffffffff166111f6565b92505b82841015610e585760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b60448201526064016108f6565b6001549383900393600160a81b900460ff1615610f3157600654841115610eb25760405162461bcd60e51b815260206004820152600e60248201526d13585e081516081c995858da195960921b60448201526064016108f6565b6009546001600160a01b03868116911614610f31576007546001600160a01b038616600090815260046020526040902054610eee90869061176f565b1115610f315760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b60448201526064016108f6565b610f3c868585611216565b610f478686866110aa565b505050505050565b6000546001600160a01b031633146108655760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f6565b600854610fc19030906001600160a01b0316846109b8565b60085460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561102e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110539190611782565b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260046020526040902054818110156111225760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108f6565b6001600160a01b0380851660008181526004602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111829086815260200190565b60405180910390a350505050565b30600090815260046020526040902054600a54600c54908210159060ff161580156111c45750600954600160a01b900460ff165b156111f257600b548211156111d957600b5491505b80156111e8576111e8826112ab565b47610ce247611486565b5050565b6000612710611205838561173b565b61120f91906117b0565b9392505050565b6000611230846001546001600160a01b0391821691161490565b9050801561129a57600061124483856117d2565b9050816112515782611253565b805b6001546001600160a01b0316600090815260046020526040902054611278919061176f565b6001546001600160a01b03166000908152600460205260409020555050505050565b8115610b6857610b688430846110aa565b600c805460ff191660011790556002546000906112d6908390610e059063ffffffff166127106117e5565b905060006112e482846117d2565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061131e5761131e611809565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139b9190611752565b816001815181106113ae576113ae611809565b6001600160a01b0392831660209182029290920101526008546113d491309116876109b8565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061140d90879060009086903090429060040161181f565b600060405180830381600087803b15801561142757600080fd5b505af115801561143b573d6000803e3d6000fd5b505050506000824761144d91906117d2565b905083156114745760025461147490859061146f90849063ffffffff166111f6565b610fa9565b5050600c805460ff1916905550505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111f2573d6000803e3d6000fd5b600060208083528351808285015260005b818110156114ed578581018301518582016040015282016114d1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109b557600080fd5b6000806040838503121561153657600080fd5b82356115418161150e565b946020939093013593505050565b60008060006060848603121561156457600080fd5b833561156f8161150e565b9250602084013561157f8161150e565b929592945050506040919091013590565b6000602082840312156115a257600080fd5b813561120f8161150e565b803563ffffffff811681146115c157600080fd5b919050565b600080604083850312156115d957600080fd5b6115e2836115ad565b91506115f0602084016115ad565b90509250929050565b6000806040838503121561160c57600080fd5b82356116178161150e565b915060208301356116278161150e565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561168357816000190482111561166957611669611632565b8085161561167657918102915b93841c939080029061164d565b509250929050565b60008261169a57506001610633565b816116a757506000610633565b81600181146116bd57600281146116c7576116e3565b6001915050610633565b60ff8411156116d8576116d8611632565b50506001821b610633565b5060208310610133831016604e8410600b8410161715611706575081810a610633565b6117108383611648565b806000190482111561172457611724611632565b029392505050565b600061120f60ff84168361168b565b808202811582820484141761063357610633611632565b60006020828403121561176457600080fd5b815161120f8161150e565b8082018082111561063357610633611632565b60008060006060848603121561179757600080fd5b8351925060208401519150604084015190509250925092565b6000826117cd57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561063357610633611632565b63ffffffff82811682821603908082111561180257611802611632565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561186f5784516001600160a01b03168352938301939183019160010161184a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f9e6900dd48a2e0f5ce4539dd595473971a8397624699c542173194b981816d564736f6c63430008130033

Deployed Bytecode Sourcemap

3162:9381:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5123:91;;;;;;;;;;-1:-1:-1;5201:5:0;;;;;;;;;;;;-1:-1:-1;;;5201:5:0;;;;5123:91;;;;;;;:::i;:::-;;;;;;;;6395:226;;;;;;;;;;-1:-1:-1;6395:226:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6395:226:0;1023:187:1;5424:99:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;5424:99:0;1215:177:1;4210:49:0;;;;;;;;;;;;;;;;5908:295;;;;;;;;;;-1:-1:-1;5908:295:0;;;;;:::i;:::-;;:::i;4146:17::-;;;;;;;;;;-1:-1:-1;4146:17:0;;;;-1:-1:-1;;;;;4146:17:0;;;;;;-1:-1:-1;;;;;2022:32:1;;;2004:51;;1992:2;1977:18;4146:17:0;1858:203:1;5325:91:0;;;;;;;;;;-1:-1:-1;5325:91:0;;3237:2;2208:36:1;;2196:2;2181:18;5325:91:0;2066:184:1;3693:28:0;;;;;;;;;;-1:-1:-1;3693:28:0;;;;-1:-1:-1;;;3693:28:0;;;;;;;;;2429:10:1;2417:23;;;2399:42;;2387:2;2372:18;3693:28:0;2255:192:1;3547:26:0;;;;;;;;;;-1:-1:-1;3547:26:0;;;;-1:-1:-1;;;3547:26:0;;;;;;3657:29;;;;;;;;;;-1:-1:-1;3657:29:0;;;;-1:-1:-1;;;3657:29:0;;;;;;4042:60;;;;;;;;;;;;;;;;3801:42;;;;;;;;;;-1:-1:-1;3801:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3580:30;;;;;;;;;;-1:-1:-1;3580:30:0;;;;-1:-1:-1;;;3580:30:0;;;;;;4170:31;;;;;;;;;;-1:-1:-1;4170:31:0;;;;-1:-1:-1;;;4170:31:0;;;;;;5531:143;;;;;;;;;;-1:-1:-1;5531:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5648:18:0;5621:7;5648:18;;;:9;:18;;;;;;;5531:143;7995:310;;;;;;;;;;;;;:::i;:::-;;997:103;;;;;;;;;;;;;:::i;8350:165::-;;;;;;;;;;;;;:::i;3979:56::-;;;;;;;;;;;;;;;;3619:29;;;;;;;;;;-1:-1:-1;3619:29:0;;;;-1:-1:-1;;;3619:29:0;;;;;;3759:33;;;;;;;;;;-1:-1:-1;3759:33:0;;;;;;;;;;;762:87;;;;;;;;;;-1:-1:-1;808:7:0;835:6;-1:-1:-1;;;;;835:6:0;762:87;;5222:95;;;;;;;;;;-1:-1:-1;5302:7:0;;;;;;;;;;;;-1:-1:-1;;;5302:7:0;;;;5222:95;;5682:218;;;;;;;;;;-1:-1:-1;5682:218:0;;;;;:::i;:::-;;:::i;4266:55::-;;;;;;;;;;;;;;;;3513:27;;;;;;;;;;-1:-1:-1;3513:27:0;;;;-1:-1:-1;;;;;3513:27:0;;;8523:220;;;;;;;;;;-1:-1:-1;8523:220:0;;;;;:::i;:::-;;:::i;6211:176::-;;;;;;;;;;-1:-1:-1;6211:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;6352:18:0;;;6325:7;6352:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6211:176;1108:238;;;;;;;;;;-1:-1:-1;1108:238:0;;;;;:::i;:::-;;:::i;3730:22::-;;;;;;;;;;-1:-1:-1;3730:22:0;;;;;;;;6395:226;6503:4;290:10;6559:32;290:10;6575:7;6584:6;6559:8;:32::i;:::-;6609:4;6602:11;;;6395:226;;;;;:::o;5424:99::-;5476:7;3293:15;3237:2;3293;:15;:::i;:::-;3287:21;;:3;:21;:::i;:::-;5496:19;;5424:99;:::o;5908:295::-;6039:4;290:10;6097:38;6113:4;290:10;6128:6;6097:15;:38::i;:::-;6146:27;6156:4;6162:2;6166:6;6146:9;:27::i;:::-;-1:-1:-1;6191:4:0;;5908:295;-1:-1:-1;;;;5908:295:0:o;7995:310::-;721:13;:11;:13::i;:::-;8066:9:::1;;;;;;;;;-1:-1:-1::0;;;;;8066:9:0::1;-1:-1:-1::0;;;;;8066:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8048:49:0::1;;8120:4;8140:9;;;;;;;;;-1:-1:-1::0;;;;;8140:9:0::1;-1:-1:-1::0;;;;;8140:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8048:119;::::0;-1:-1:-1;;;;;;8048:119:0::1;::::0;;;;;;-1:-1:-1;;;;;5700:15:1;;;8048:119:0::1;::::0;::::1;5682:34:1::0;5752:15;;5732:18;;;5725:43;5617:18;;8048:119:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8043:2;:124:::0;;-1:-1:-1;;;;;;8043:124:0::1;-1:-1:-1::0;;;;;8043:124:0;;;::::1;::::0;;;::::1;::::0;;8204:4:::1;-1:-1:-1::0;5648:18:0;;;:9;:18;;;;;;8180:54:::1;::::0;8212:21:::1;8180:5;:54::i;:::-;8264:4;8247:21:::0;;-1:-1:-1;;;;;;;8247:21:0;;::::1;::::0;::::1;::::0;;;8279:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;7995:310::o;997:103::-;721:13;:11;:13::i;:::-;1062:30:::1;1089:1;1062:18;:30::i;:::-;997:103::o:0;8350:165::-;721:13;:11;:13::i;:::-;8402:11:::1;:19:::0;;-1:-1:-1;;;;8402:19:0::1;::::0;;-1:-1:-1;;8432:10:0::1;:30:::0;;;8473:14:::1;:34:::0;8350:165::o;5682:218::-;5786:4;290:10;5842:28;290:10;5859:2;5863:6;5842:9;:28::i;8523:220::-;721:13;:11;:13::i;:::-;3500:4:::1;8613:21;::::0;::::1;;::::0;::::1;::::0;:45:::1;;-1:-1:-1::0;3500:4:0::1;8638:20;::::0;::::1;;;8613:45;8605:70;;;::::0;-1:-1:-1;;;8605:70:0;;5981:2:1;8605:70:0::1;::::0;::::1;5963:21:1::0;6020:2;6000:18;;;5993:30;-1:-1:-1;;;6039:18:1;;;6032:42;6091:18;;8605:70:0::1;;;;;;;;;8686:8;:20:::0;;-1:-1:-1;;;;8717:18:0;-1:-1:-1;;;8686:20:0::1;::::0;;::::1;;-1:-1:-1::0;;;;8717:18:0;;-1:-1:-1;;;8717:18:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8523:220::o;1108:238::-;721:13;:11;:13::i;:::-;-1:-1:-1;;;;;1211:22:0;::::1;1189:110;;;::::0;-1:-1:-1;;;1189:110:0;;6322:2:1;1189:110:0::1;::::0;::::1;6304:21:1::0;6361:2;6341:18;;;6334:30;6400:34;6380:18;;;6373:62;-1:-1:-1;;;6451:18:1;;;6444:36;6497:19;;1189:110:0::1;6120:402:1::0;1189:110:0::1;1310:28;1329:8;1310:18;:28::i;:::-;1108:238:::0;:::o;6629:380::-;-1:-1:-1;;;;;6765:19:0;;6757:68;;;;-1:-1:-1;;;6757:68:0;;6729:2:1;6757:68:0;;;6711:21:1;6768:2;6748:18;;;6741:30;6807:34;6787:18;;;6780:62;-1:-1:-1;;;6858:18:1;;;6851:34;6902:19;;6757:68:0;6527:400:1;6757:68:0;-1:-1:-1;;;;;6844:21:0;;6836:68;;;;-1:-1:-1;;;6836:68:0;;7134:2:1;6836:68:0;;;7116:21:1;7173:2;7153:18;;;7146:30;7212:34;7192:18;;;7185:62;-1:-1:-1;;;7263:18:1;;;7256:32;7305:19;;6836:68:0;6932:398:1;6836:68:0;-1:-1:-1;;;;;6917:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6969:32;;1361:25:1;;;6969:32:0;;1334:18:1;6969:32:0;;;;;;;6629:380;;;:::o;7017:502::-;-1:-1:-1;;;;;6352:18:0;;;7152:24;6352:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;7219:37:0;;7215:297;;7319:6;7299:16;:26;;7273:117;;;;-1:-1:-1;;;7273:117:0;;7537:2:1;7273:117:0;;;7519:21:1;7576:2;7556:18;;;7549:30;7615:31;7595:18;;;7588:59;7664:18;;7273:117:0;7335:353:1;7273:117:0;7434:51;7443:5;7450:7;7478:6;7459:16;:25;7434:8;:51::i;:::-;7141:378;7017:502;;;:::o;8751:1487::-;-1:-1:-1;;;;;8840:18:0;;8832:68;;;;-1:-1:-1;;;8832:68:0;;7895:2:1;8832:68:0;;;7877:21:1;7934:2;7914:18;;;7907:30;7973:34;7953:18;;;7946:62;-1:-1:-1;;;8024:18:1;;;8017:35;8069:19;;8832:68:0;7693:401:1;8832:68:0;-1:-1:-1;;;;;8919:18:0;;8911:66;;;;-1:-1:-1;;;8911:66:0;;8301:2:1;8911:66:0;;;8283:21:1;8340:2;8320:18;;;8313:30;8379:34;8359:18;;;8352:62;-1:-1:-1;;;8430:18:1;;;8423:33;8473:19;;8911:66:0;8099:399:1;8911:66:0;9003:1;8996:4;:8;8988:62;;;;-1:-1:-1;;;8988:62:0;;8705:2:1;8988:62:0;;;8687:21:1;8744:2;8724:18;;;8717:30;8783:34;8763:18;;;8756:62;-1:-1:-1;;;8834:18:1;;;8827:39;8883:19;;8988:62:0;8503:405:1;8988:62:0;808:7;835:6;-1:-1:-1;;;;;9067:15:0;;;835:6;;9067:15;;:34;;-1:-1:-1;808:7:0;835:6;-1:-1:-1;;;;;9086:15:0;;;835:6;;9086:15;9067:34;:59;;;-1:-1:-1;;;;;;9105:21:0;;9121:4;9105:21;9067:59;9063:145;;;9143:32;9158:4;9164;9170;9143:14;:32::i;:::-;8751:1487;;;:::o;9063:145::-;9228:14;;-1:-1:-1;;;9228:14:0;;;;9220:46;;;;-1:-1:-1;;;9220:46:0;;9115:2:1;9220:46:0;;;9097:21:1;9154:2;9134:18;;;9127:30;-1:-1:-1;;;9173:18:1;;;9166:49;9232:18;;9220:46:0;8913:343:1;9220:46:0;9329:2;;9277:16;;-1:-1:-1;;;;;9329:2:0;;;9321:10;;;;;;9356;;;9379:49;;;;9406:10;:8;:10::i;:::-;9444:5;9440:277;;;-1:-1:-1;;;;;9471:16:0;;;;;;:10;:16;;;;;;;;9466:91;;9532:8;;9519:22;;9526:4;;-1:-1:-1;;;9532:8:0;;;;9519:6;:22::i;:::-;9508:33;;9466:91;9440:277;;;-1:-1:-1;;;;;9594:16:0;;;;;;:10;:16;;;;;;;;9589:117;;9655:9;;9642:48;;9649:4;;-1:-1:-1;;;9655:9:0;;;;:34;;9682:7;;-1:-1:-1;;;9682:7:0;;;;9655:34;;;9667:12;;;;;;;9655:34;9642:48;;:6;:48::i;:::-;9631:59;;9589:117;9770:8;9762:4;:16;;9754:47;;;;-1:-1:-1;;;9754:47:0;;9463:2:1;9754:47:0;;;9445:21:1;9502:2;9482:18;;;9475:30;-1:-1:-1;;;9521:18:1;;;9514:48;9579:18;;9754:47:0;9261:342:1;9754:47:0;9860:11;;9816:16;;;;;-1:-1:-1;;;9860:11:0;;;;9856:286;;;9904:10;;9896:4;:18;;9888:45;;;;-1:-1:-1;;;9888:45:0;;9810:2:1;9888:45:0;;;9792:21:1;9849:2;9829:18;;;9822:30;-1:-1:-1;;;9868:18:1;;;9861:44;9922:18;;9888:45:0;9608:338:1;9888:45:0;9960:2;;-1:-1:-1;;;;;9952:10:0;;;9960:2;;9952:10;9948:183;;10039:14;;-1:-1:-1;;;;;10013:15:0;;;;;;:9;:15;;;;;;:22;;10031:4;;10013:22;:::i;:::-;:40;;9983:132;;;;-1:-1:-1;;;9983:132:0;;10283:2:1;9983:132:0;;;10265:21:1;10322:2;10302:18;;;10295:30;-1:-1:-1;;;10341:18:1;;;10334:48;10399:18;;9983:132:0;10081:342:1;9983:132:0;10154:31;10164:4;10170;10176:8;10154:9;:31::i;:::-;10198:32;10213:4;10219;10225;10198:14;:32::i;:::-;8821:1417;;;8751:1487;;;:::o;857:132::-;808:7;835:6;-1:-1:-1;;;;;835:6:0;290:10;921:23;913:68;;;;-1:-1:-1;;;913:68:0;;10630:2:1;913:68:0;;;10612:21:1;;;10649:18;;;10642:30;10708:34;10688:18;;;10681:62;10760:18;;913:68:0;10428:356:1;12206:334:0;12308:9;;12276:52;;12293:4;;-1:-1:-1;;;;;12308:9:0;12320:7;12276:8;:52::i;:::-;12341:9;;:191;;-1:-1:-1;;;12341:191:0;;12407:4;12341:191;;;11130:34:1;11180:18;;;11173:34;;;12341:9:0;11223:18:1;;;11216:34;;;11266:18;;;11259:34;;;11309:19;;;11302:44;12506:15:0;11362:19:1;;;11355:35;-1:-1:-1;;;;;12341:9:0;;;;:25;;12374:9;;11064:19:1;;12341:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12206:334;;:::o;1354:191::-;1428:16;1447:6;;-1:-1:-1;;;;;1464:17:0;;;-1:-1:-1;;;;;;1464:17:0;;;;;;1497:40;;1447:6;;;;;;;1497:40;;1428:16;1497:40;1417:128;1354:191;:::o;7527:460::-;-1:-1:-1;;;;;7677:15:0;;7655:19;7677:15;;;:9;:15;;;;;;7725:21;;;;7703:109;;;;-1:-1:-1;;;7703:109:0;;11914:2:1;7703:109:0;;;11896:21:1;11953:2;11933:18;;;11926:30;11992:34;11972:18;;;11965:62;-1:-1:-1;;;12043:18:1;;;12036:36;12089:19;;7703:109:0;11712:402:1;7703:109:0;-1:-1:-1;;;;;7848:15:0;;;;;;;:9;:15;;;;;;7866:20;;;7848:38;;7901:13;;;;;;;;;;:23;;;;;;7953:26;;;;;;7880:6;1361:25:1;;1349:2;1334:18;;1215:177;7953:26:0;;;;;;;;7644:343;7527:460;;;:::o;10246:502::-;10327:4;10285:21;5648:18;;;:9;:18;;;;;;10377:9;;10404:8;;10360:26;;;;;10404:8;;10403:9;:24;;;;-1:-1:-1;10416:11:0;;-1:-1:-1;;;10416:11:0;;;;10403:24;10399:342;;;10464:9;;10448:13;:25;10444:56;;;10491:9;;10475:25;;10444:56;10519:8;10515:45;;;10529:31;10546:13;10529:16;:31::i;:::-;10597:21;10680:34;10692:21;10680:11;:34::i;10399:342::-;10274:474;;10246:502::o;4330:162::-;4427:7;3453:5;4455:17;4464:8;4455:6;:17;:::i;:::-;4454:30;;;;:::i;:::-;4447:37;4330:162;-1:-1:-1;;;4330:162:0:o;10756:459::-;10836:15;10854:18;10867:4;11314:12;;-1:-1:-1;;;;;11306:20:0;;;11314:12;;11306:20;;11223:111;10854:18;10836:36;;10887:10;10883:325;;;10914:22;10939:11;10946:4;10939;:11;:::i;:::-;10914:36;;11052:10;:34;;11082:4;11052:34;;;11065:14;11052:34;11018:12;;-1:-1:-1;;;;;11018:12:0;11008:23;;;;:9;:23;;;;;;:79;;;;:::i;:::-;10975:12;;-1:-1:-1;;;;;10975:12:0;10965:23;;;;:9;:23;;;;;:122;-1:-1:-1;;;;;10756:459:0:o;10883:325::-;11145:8;;11141:55;;11155:41;11170:4;11184;11191;11155:14;:41::i;11342:744::-;4567:8;:15;;-1:-1:-1;;4567:15:0;4578:4;4567:15;;;11457:4:::1;::::0;4567:8;;11430:32:::1;::::0;11437:7;;11446:15:::1;::::0;11457:4:::1;;3453:5;11446:15;:::i;11430:32::-;11413:49:::0;-1:-1:-1;11473:14:0::1;11490:16;11413:49:::0;11490:7;:16:::1;:::i;:::-;11600;::::0;;11614:1:::1;11600:16:::0;;;;;::::1;::::0;;11473:33;;-1:-1:-1;11542:21:0::1;::::0;11517:22:::1;::::0;11600:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11600:16:0::1;11576:40;;11645:4;11627;11632:1;11627:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11627:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11671:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;11671:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;11627:7;;11671:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11661:4;11666:1;11661:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11661:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;11730:9:::1;::::0;11698:52:::1;::::0;11715:4:::1;::::0;11730:9:::1;11742:7:::0;11698:8:::1;:52::i;:::-;11761:9;::::0;:185:::1;::::0;-1:-1:-1;;;11761:185:0;;-1:-1:-1;;;;;11761:9:0;;::::1;::::0;:60:::1;::::0;:185:::1;::::0;11836:6;;11761:9:::1;::::0;11873:4;;11900::::1;::::0;11920:15:::1;::::0;11761:185:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11957:15;11999:14;11975:21;:38;;;;:::i;:::-;11957:56:::0;-1:-1:-1;12030:10:0;;12026:52:::1;;12072:4;::::0;12042:36:::1;::::0;12048:6;;12056:21:::1;::::0;12063:7;;12072:4:::1;;12056:6;:21::i;:::-;12042:5;:36::i;:::-;-1:-1:-1::0;;4605:8:0;:16;;-1:-1:-1;;4605:16:0;;;-1:-1:-1;;;;11342:744:0:o;12094:104::-;12159:12;;12151:39;;-1:-1:-1;;;;;12159:12:0;;;;12151:39;;;;;12182:7;;12159:12;12151:39;12159:12;12151:39;12182:7;12159:12;12151:39;;;;;;;;;;;;;;;;;;;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2452:247::-;2511:6;2564:2;2552:9;2543:7;2539:23;2535:32;2532:52;;;2580:1;2577;2570:12;2532:52;2619:9;2606:23;2638:31;2663:5;2638:31;:::i;2704:163::-;2771:20;;2831:10;2820:22;;2810:33;;2800:61;;2857:1;2854;2847:12;2800:61;2704:163;;;:::o;2872:256::-;2938:6;2946;2999:2;2987:9;2978:7;2974:23;2970:32;2967:52;;;3015:1;3012;3005:12;2967:52;3038:28;3056:9;3038:28;:::i;:::-;3028:38;;3085:37;3118:2;3107:9;3103:18;3085:37;:::i;:::-;3075:47;;2872:256;;;;;:::o;3133:388::-;3201:6;3209;3262:2;3250:9;3241:7;3237:23;3233:32;3230:52;;;3278:1;3275;3268:12;3230:52;3317:9;3304:23;3336:31;3361:5;3336:31;:::i;:::-;3386:5;-1:-1:-1;3443:2:1;3428:18;;3415:32;3456:33;3415:32;3456:33;:::i;:::-;3508:7;3498:17;;;3133:388;;;;;:::o;3526:127::-;3587:10;3582:3;3578:20;3575:1;3568:31;3618:4;3615:1;3608:15;3642:4;3639:1;3632:15;3658:422;3747:1;3790:5;3747:1;3804:270;3825:7;3815:8;3812:21;3804:270;;;3884:4;3880:1;3876:6;3872:17;3866:4;3863:27;3860:53;;;3893:18;;:::i;:::-;3943:7;3933:8;3929:22;3926:55;;;3963:16;;;;3926:55;4042:22;;;;4002:15;;;;3804:270;;;3808:3;3658:422;;;;;:::o;4085:806::-;4134:5;4164:8;4154:80;;-1:-1:-1;4205:1:1;4219:5;;4154:80;4253:4;4243:76;;-1:-1:-1;4290:1:1;4304:5;;4243:76;4335:4;4353:1;4348:59;;;;4421:1;4416:130;;;;4328:218;;4348:59;4378:1;4369:10;;4392:5;;;4416:130;4453:3;4443:8;4440:17;4437:43;;;4460:18;;:::i;:::-;-1:-1:-1;;4516:1:1;4502:16;;4531:5;;4328:218;;4630:2;4620:8;4617:16;4611:3;4605:4;4602:13;4598:36;4592:2;4582:8;4579:16;4574:2;4568:4;4565:12;4561:35;4558:77;4555:159;;;-1:-1:-1;4667:19:1;;;4699:5;;4555:159;4746:34;4771:8;4765:4;4746:34;:::i;:::-;4816:6;4812:1;4808:6;4804:19;4795:7;4792:32;4789:58;;;4827:18;;:::i;:::-;4865:20;;4085:806;-1:-1:-1;;;4085:806:1:o;4896:140::-;4954:5;4983:47;5024:4;5014:8;5010:19;5004:4;4983:47;:::i;5041:168::-;5114:9;;;5145;;5162:15;;;5156:22;;5142:37;5132:71;;5183:18;;:::i;5214:251::-;5284:6;5337:2;5325:9;5316:7;5312:23;5308:32;5305:52;;;5353:1;5350;5343:12;5305:52;5385:9;5379:16;5404:31;5429:5;5404:31;:::i;9951:125::-;10016:9;;;10037:10;;;10034:36;;;10050:18;;:::i;11401:306::-;11489:6;11497;11505;11558:2;11546:9;11537:7;11533:23;11529:32;11526:52;;;11574:1;11571;11564:12;11526:52;11603:9;11597:16;11587:26;;11653:2;11642:9;11638:18;11632:25;11622:35;;11697:2;11686:9;11682:18;11676:25;11666:35;;11401:306;;;;;:::o;12119:217::-;12159:1;12185;12175:132;;12229:10;12224:3;12220:20;12217:1;12210:31;12264:4;12261:1;12254:15;12292:4;12289:1;12282:15;12175:132;-1:-1:-1;12321:9:1;;12119:217::o;12341:128::-;12408:9;;;12429:11;;;12426:37;;;12443:18;;:::i;12474:175::-;12542:10;12585;;;12573;;;12569:27;;12608:12;;;12605:38;;;12623:18;;:::i;:::-;12605:38;12474:175;;;;:::o;12786:127::-;12847:10;12842:3;12838:20;12835:1;12828:31;12878:4;12875:1;12868:15;12902:4;12899:1;12892:15;12918:980;13180:4;13228:3;13217:9;13213:19;13259:6;13248:9;13241:25;13285:2;13323:6;13318:2;13307:9;13303:18;13296:34;13366:3;13361:2;13350:9;13346:18;13339:31;13390:6;13425;13419:13;13456:6;13448;13441:22;13494:3;13483:9;13479:19;13472:26;;13533:2;13525:6;13521:15;13507:29;;13554:1;13564:195;13578:6;13575:1;13572:13;13564:195;;;13643:13;;-1:-1:-1;;;;;13639:39:1;13627:52;;13734:15;;;;13699:12;;;;13675:1;13593:9;13564:195;;;-1:-1:-1;;;;;;;13815:32:1;;;;13810:2;13795:18;;13788:60;-1:-1:-1;;;13879:3:1;13864:19;13857:35;13776:3;12918:980;-1:-1:-1;;;12918:980:1:o

Swarm Source

ipfs://f9e6900dd48a2e0f5ce4539dd595473971a8397624699c542173194b981816d5

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  ]
[ 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.