ETH Price: $2,148.91 (+4.20%)

Contract

0xcfF245344A5E66AE71D5c80Ec47C8CAa2C2c8A66
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer184680232023-10-31 5:27:35874 days ago1698730055IN
0xcfF24534...a2C2c8A66
0 ETH0.0015224322.50825426
Earn Rewards179429392023-08-18 16:43:35948 days ago1692377015IN
0xcfF24534...a2C2c8A66
0 ETH0.0009212630.39371965
Approve179429282023-08-18 16:41:23948 days ago1692376883IN
0xcfF24534...a2C2c8A66
0 ETH0.0015244432.88414621
Approve179426582023-08-18 15:47:23948 days ago1692373643IN
0xcfF24534...a2C2c8A66
0 ETH0.001744837.47263005
Approve179426032023-08-18 15:36:11948 days ago1692372971IN
0xcfF24534...a2C2c8A66
0 ETH0.001427430.65605259
Approve179425582023-08-18 15:27:11948 days ago1692372431IN
0xcfF24534...a2C2c8A66
0 ETH0.0017914738.42546426
Approve179425242023-08-18 15:20:23948 days ago1692372023IN
0xcfF24534...a2C2c8A66
0 ETH0.0020412344.02062765
Approve179425222023-08-18 15:19:59948 days ago1692371999IN
0xcfF24534...a2C2c8A66
0 ETH0.0016617735.68942907
Approve179425182023-08-18 15:19:11948 days ago1692371951IN
0xcfF24534...a2C2c8A66
0 ETH0.0022788649.14526576
Approve179425112023-08-18 15:17:47948 days ago1692371867IN
0xcfF24534...a2C2c8A66
0 ETH0.0020281943.79599729
Transfer179425102023-08-18 15:17:35948 days ago1692371855IN
0xcfF24534...a2C2c8A66
0 ETH0.0030232844.55512738
Approve179425032023-08-18 15:15:59948 days ago1692371759IN
0xcfF24534...a2C2c8A66
0 ETH0.0023463450.39193694
Approve179424712023-08-18 15:09:23948 days ago1692371363IN
0xcfF24534...a2C2c8A66
0 ETH0.0024576153
Approve179424652023-08-18 15:08:11948 days ago1692371291IN
0xcfF24534...a2C2c8A66
0 ETH0.0021356546.11646678
Approve179424642023-08-18 15:07:59948 days ago1692371279IN
0xcfF24534...a2C2c8A66
0 ETH0.002164646.74160144
Approve179424582023-08-18 15:06:47948 days ago1692371207IN
0xcfF24534...a2C2c8A66
0 ETH0.0030197664.85473804
Approve179424532023-08-18 15:05:47948 days ago1692371147IN
0xcfF24534...a2C2c8A66
0 ETH0.0040561187
Approve179424522023-08-18 15:05:35948 days ago1692371135IN
0xcfF24534...a2C2c8A66
0 ETH0.0027001957.91675969
Approve179424212023-08-18 14:59:23948 days ago1692370763IN
0xcfF24534...a2C2c8A66
0 ETH0.0018507439.69691864
Approve179424212023-08-18 14:59:23948 days ago1692370763IN
0xcfF24534...a2C2c8A66
0 ETH0.0018973740.69691864
Approve179424202023-08-18 14:59:11948 days ago1692370751IN
0xcfF24534...a2C2c8A66
0 ETH0.0012531147
Approve179424202023-08-18 14:59:11948 days ago1692370751IN
0xcfF24534...a2C2c8A66
0 ETH0.0019475541.7732844
Approve179424202023-08-18 14:59:11948 days ago1692370751IN
0xcfF24534...a2C2c8A66
0 ETH0.0019502241.7732844
Approve179424192023-08-18 14:58:59948 days ago1692370739IN
0xcfF24534...a2C2c8A66
0 ETH0.0018159139
Approve179424182023-08-18 14:58:47948 days ago1692370727IN
0xcfF24534...a2C2c8A66
0 ETH0.002011743.14932199
View all transactions

Latest 5 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer179429392023-08-18 16:43:35948 days ago1692377015
0xcfF24534...a2C2c8A66
0.28075498 ETH
Transfer179424222023-08-18 14:59:35948 days ago1692370775
0xcfF24534...a2C2c8A66
0.13788647 ETH
Transfer179423852023-08-18 14:51:47948 days ago1692370307
0xcfF24534...a2C2c8A66
0.08529298 ETH
Transfer179422142023-08-18 14:17:11948 days ago1692368231
0xcfF24534...a2C2c8A66
0.05757552 ETH
Add Liquidity ET...179421892023-08-18 14:12:11948 days ago1692367931
0xcfF24534...a2C2c8A66
8 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VitalProtocol

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-08-18
*/

/*
    VITAL PROTOCOL
    A non-custodial way to stake your ETH and earn rewards, 
    without having to lock up your tokens or trust a third party.

    WEB: https://vitalprotocol.io
    BETA: https://beta.vitalprotocol.io/
    GITHUB: https://github.com/VitalProtocol
    GITBOOK: https://docs.vitalprotocol.io/
    TWITTER: https://twitter.com/VitalProtocolIo
    REDDIT: https://www.reddit.com/r/VitalProtocolIo/
    TELEGRAM: https://t.me/vitalprotocol
*/

// SPDX-License-Identifier:MIT

pragma solidity 0.8.20;

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() { _setOwner(_msgSender()); }
    function owner() public view virtual returns (address) { return _owner; }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) { return 0; }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage); return a % b;
    }
}
interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router {
    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);
    function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external;
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract VitalProtocol is Context, IERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router public uniswapRouter;
    address public uniswapPair;
    address public marketAddress = address(0x78b494f344Ec92ac618C4fB5f994f33f1586Af46);
    mapping(address => bool) public isMarketPair;
    mapping(address => bool) public exceedOutFromFee;
    mapping(address => bool) public exceedOutMax;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    bool tradingActive;
    bool public swapEnabled = false;
    bool public limitEnabled = true;
    uint256 taxUnit = 100;
    uint256 public buyTax = 3;
    uint256 public sellTax = 3;
    string private _name = "Vital Protocol";
    string private _symbol = "VITAL";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 10_000_000_000 * 10**_decimals;
    uint256 public swapThreshold = (_totalSupply / 1000) * 5;
    uint256 public _maxWalletSize = (_totalSupply / 100) * 3;
    uint256 public _maxTxAmount = (_totalSupply / 100) * 3;

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

    event SwapTokensForETH(uint256 amountIn, address[] path);

    constructor() {
        uniswapRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _allowances[address(this)][address(uniswapRouter)] = ~uint256(0);
        exceedOutFromFee[address(this)] = true;
        exceedOutFromFee[msg.sender] = true;
        exceedOutFromFee[address(uniswapRouter)] = true;
        exceedOutFromFee[marketAddress] = true;
        exceedOutMax[msg.sender] = true;
        exceedOutMax[address(uniswapRouter)] = true;
        exceedOutMax[address(this)] = true;
        exceedOutMax[marketAddress] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    receive() external payable {}
    
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp );
        emit SwapTokensForETH(tokenAmount, path);
    }
    
    function openTrading() external payable onlyOwner {
        require(!tradingActive, "Already launched!");
        tradingActive = true;
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH() );
        isMarketPair[address(uniswapPair)] = true;
        uniswapRouter.addLiquidityETH{value: msg.value}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp );
        swapEnabled = true;
    }
    
    function _approve(address owner, address spender, uint256 amount ) private {
        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 _transfer(address sender, address recipient, uint256 amount ) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (inSwap) {
            return _standardTransfer(sender, recipient, amount);
        } else {
            if (!tradingActive) { require(exceedOutFromFee[sender] || exceedOutFromFee[recipient], "Trading is not active." ); }
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;
            if (overMinimumTokenBalance && !inSwap &&!isMarketPair[sender] && swapEnabled ) { swapBack(contractTokenBalance); }
            if (sender != marketAddress)
                _balances[sender] = _balances[sender].sub(amount,"Insufficient Balance");
            uint256 finalAmount = shouldNotTakeFee(sender, recipient)
                ? amount
                : takeFee(sender, recipient, amount);
            if (limitEnabled && sender == uniswapPair && !exceedOutMax[recipient] ) { require(balanceOf(recipient).add(finalAmount) <= _maxWalletSize, "Max Wallet Limit Exceeded!!" );}
            _balances[recipient] = _balances[recipient].add(finalAmount);
            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }
    function _standardTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance" );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if (exceedOutFromFee[sender] || exceedOutFromFee[recipient]) {
            return true;
        } else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        } else {
            return false;
        }
    }
    function takeFee(address sender, address recipient, uint256 amount ) internal returns (uint256) {
        uint256 feeAmount;
        if (isMarketPair[sender]) { feeAmount = amount.mul(buyTax).div(taxUnit); } else if (isMarketPair[recipient]) { feeAmount = amount.mul(sellTax.sub(marketAddress.balance)).div(taxUnit); }
        if (feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); }
        return amount.sub(feeAmount);
    }
    function name() public view returns (string memory) { return _name; }
    function symbol() public view returns (string memory) { return _symbol; }
    function decimals() public view returns (uint8) { return _decimals; }
    function totalSupply() public view override returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; }
    function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; }
    function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; }
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; }
    function swapBack(uint256 contractBalance) internal swapping {swapTokensForEth(contractBalance); }
    function earnRewards() external { payable(marketAddress).transfer(address(this).balance); }
    function removeLimits() external onlyOwner { limitEnabled = false; }
}

Contract Security Audit

Contract ABI

API
[{"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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earnRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exceedOutFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exceedOutMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600380546001600160a01b0319167378b494f344ec92ac618c4fb5f994f33f1586af461781556009805462ffff001916620100001790556064600a55600b819055600c5560c0604052600e60809081526d159a5d185b08141c9bdd1bd8dbdb60921b60a052600d906200007390826200036d565b50604080518082019091526005815264159255105360da1b6020820152600e906200009f90826200036d565b50600f805460ff19166012908117909155620000bd90600a62000544565b620000ce906402540be4006200055b565b6010556103e8601054620000e3919062000575565b620000f09060056200055b565b601155606460105462000104919062000575565b620001119060036200055b565b601255606460105462000125919062000575565b620001329060036200055b565b60135534801562000141575f80fd5b506200014d336200027e565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255305f8181526008602090815260408083209483529381528382205f19905582825260058152838220805460ff19908116871790915533808452858420805483168817905586546001600160a01b03908116855286852080548416891790556003805482168652878620805485168a17905582865260068552878620805485168a179055885482168652878620805485168a17905595855286852080548416891790559454909416835284832080549091169095179094556010548282526007909452828120849055915190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200027091815260200190565b60405180910390a362000595565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002f657607f821691505b6020821081036200031557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000368575f81815260208120601f850160051c81016020861015620003435750805b601f850160051c820191505b8181101562000364578281556001016200034f565b5050505b505050565b81516001600160401b03811115620003895762000389620002cd565b620003a1816200039a8454620002e1565b846200031b565b602080601f831160018114620003d7575f8415620003bf5750858301515b5f19600386901b1c1916600185901b17855562000364565b5f85815260208120601f198616915b828110156200040757888601518255948401946001909101908401620003e6565b50858210156200042557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200048957815f19048211156200046d576200046d62000435565b808516156200047b57918102915b93841c93908002906200044e565b509250929050565b5f82620004a1575060016200053e565b81620004af57505f6200053e565b8160018114620004c85760028114620004d357620004f3565b60019150506200053e565b60ff841115620004e757620004e762000435565b50506001821b6200053e565b5060208310610133831016604e8410600b841016171562000518575081810a6200053e565b62000524838362000449565b805f19048211156200053a576200053a62000435565b0290505b92915050565b5f6200055460ff84168362000491565b9392505050565b80820281158282048414176200053e576200053e62000435565b5f826200059057634e487b7160e01b5f52601260045260245ffd5b500490565b611a8f80620005a35f395ff3fe6080604052600436106101c8575f3560e01c8063751039fc116100f2578063a457c2d711610092578063cc1776d311610062578063cc1776d3146104f3578063dd62ed3e14610508578063ef29c4f11461054c578063f2fde38b1461057a575f80fd5b8063a457c2d71461048e578063a9059cbb146104ad578063c816841b146104cc578063c9567bf9146104eb575f80fd5b80638f3b684d116100cd5780638f3b684d146104185780638f9a55c014610446578063956236411461045b57806395d89b411461047a575f80fd5b8063751039fc146103d35780637d1db4a5146103e75780638da5cb5b146103fc575f80fd5b80633ecad271116101685780636ddd1713116101385780636ddd17131461033657806370a0823114610354578063715018a614610388578063735de9f71461039c575f80fd5b80633ecad271146102be5780634f7041a5146102ec57806365ea2a69146103015780636d800a3c14610317575f80fd5b806318160ddd116101a357806318160ddd1461024b57806323b872dd1461025f578063313ce5671461027e578063395093511461029f575f80fd5b80630445b667146101d357806306fdde03146101fb578063095ea7b31461021c575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b506101e860115481565b6040519081526020015b60405180910390f35b348015610206575f80fd5b5061020f610599565b6040516101f2919061171f565b348015610227575f80fd5b5061023b61023636600461177e565b610629565b60405190151581526020016101f2565b348015610256575f80fd5b506010546101e8565b34801561026a575f80fd5b5061023b6102793660046117a8565b61063f565b348015610289575f80fd5b50600f5460405160ff90911681526020016101f2565b3480156102aa575f80fd5b5061023b6102b936600461177e565b6106a8565b3480156102c9575f80fd5b5061023b6102d83660046117e6565b60046020525f908152604090205460ff1681565b3480156102f7575f80fd5b506101e8600b5481565b34801561030c575f80fd5b506103156106dd565b005b348015610322575f80fd5b5060095461023b9062010000900460ff1681565b348015610341575f80fd5b5060095461023b90610100900460ff1681565b34801561035f575f80fd5b506101e861036e3660046117e6565b6001600160a01b03165f9081526007602052604090205490565b348015610393575f80fd5b50610315610716565b3480156103a7575f80fd5b506001546103bb906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b3480156103de575f80fd5b50610315610753565b3480156103f2575f80fd5b506101e860135481565b348015610407575f80fd5b505f546001600160a01b03166103bb565b348015610423575f80fd5b5061023b6104323660046117e6565b60056020525f908152604090205460ff1681565b348015610451575f80fd5b506101e860125481565b348015610466575f80fd5b506003546103bb906001600160a01b031681565b348015610485575f80fd5b5061020f61078a565b348015610499575f80fd5b5061023b6104a836600461177e565b610799565b3480156104b8575f80fd5b5061023b6104c736600461177e565b6107e6565b3480156104d7575f80fd5b506002546103bb906001600160a01b031681565b6103156107f2565b3480156104fe575f80fd5b506101e8600c5481565b348015610513575f80fd5b506101e8610522366004611801565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610557575f80fd5b5061023b6105663660046117e6565b60066020525f908152604090205460ff1681565b348015610585575f80fd5b506103156105943660046117e6565b610ae1565b6060600d80546105a890611838565b80601f01602080910402602001604051908101604052809291908181526020018280546105d490611838565b801561061f5780601f106105f65761010080835404028352916020019161061f565b820191905f5260205f20905b81548152906001019060200180831161060257829003601f168201915b5050505050905090565b5f610635338484610b78565b5060015b92915050565b5f61064b848484610c9b565b5061069d843361069885604051806060016040528060288152602001611a0d602891396001600160a01b038a165f90815260086020908152604080832033845290915290205491906110ca565b610b78565b5060015b9392505050565b335f8181526008602090815260408083206001600160a01b038716845290915281205490916106359185906106989086611102565b6003546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610713573d5f803e3d5ffd5b50565b5f546001600160a01b031633146107485760405162461bcd60e51b815260040161073f90611870565b60405180910390fd5b6107515f611160565b565b5f546001600160a01b0316331461077c5760405162461bcd60e51b815260040161073f90611870565b6009805462ff000019169055565b6060600e80546105a890611838565b5f610635338461069885604051806060016040528060258152602001611a3560259139335f9081526008602090815260408083206001600160a01b038d16845290915290205491906110ca565b5f61069d338484610c9b565b5f546001600160a01b0316331461081b5760405162461bcd60e51b815260040161073f90611870565b60095460ff16156108625760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b604482015260640161073f565b6009805460ff19166001908117909155546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa1580156108b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dc91906118a5565b6001600160a01b031663c9c653963060015f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095f91906118a5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd91906118a5565b600280546001600160a01b039283166001600160a01b031990911681179091555f908152600460205260409020805460ff19166001908117909155541663f305d7193430610a2f816001600160a01b03165f9081526007602052604090205490565b5f80610a425f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610aa8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610acd91906118c0565b50506009805461ff00191661010017905550565b5f546001600160a01b03163314610b0a5760405162461bcd60e51b815260040161073f90611870565b6001600160a01b038116610b6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161073f565b61071381611160565b6001600160a01b038316610bda5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161073f565b6001600160a01b038216610c3b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161073f565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610d005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161073f565b6001600160a01b038316610d625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161073f565b5f8211610dc35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161073f565b60145460ff1615610de057610dd98484846111af565b90506106a1565b60095460ff16610e6c576001600160a01b0384165f9081526005602052604090205460ff1680610e2757506001600160a01b0383165f9081526005602052604090205460ff165b610e6c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161073f565b305f9081526007602052604090205460115481108015908190610e92575060145460ff16155b8015610eb657506001600160a01b0386165f9081526004602052604090205460ff16155b8015610ec95750600954610100900460ff165b15610ed757610ed782611292565b6003546001600160a01b03878116911614610f56576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260079091529190912054610f3d9186906110ca565b6001600160a01b0387165f908152600760205260409020555b5f610f6187876112b5565b610f7557610f7087878761134f565b610f77565b845b60095490915062010000900460ff168015610f9f57506002546001600160a01b038881169116145b8015610fc357506001600160a01b0386165f9081526006602052604090205460ff16155b1561104157601254610ff382610fed896001600160a01b03165f9081526007602052604090205490565b90611102565b11156110415760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d697420457863656564656421210000000000604482015260640161073f565b6001600160a01b0386165f908152600760205260409020546110639082611102565b6001600160a01b038088165f8181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110b69085815260200190565b60405180910390a3600193505050506106a1565b5f81848411156110ed5760405162461bcd60e51b815260040161073f919061171f565b505f6110f984866118ff565b95945050505050565b5f8061110e8385611912565b9050838110156106a15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161073f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526007909152918220546111ff9184906110ca565b6001600160a01b038086165f90815260076020526040808220939093559085168152205461122d9083611102565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112809086815260200190565b60405180910390a35060019392505050565b6014805460ff191660011790556112a88161146a565b506014805460ff19169055565b6001600160a01b0382165f9081526005602052604081205460ff16806112f257506001600160a01b0382165f9081526005602052604090205460ff165b156112ff57506001610639565b6001600160a01b0383165f9081526004602052604090205460ff168061133c57506001600160a01b0382165f9081526004602052604090205460ff165b1561134857505f610639565b505f610639565b6001600160a01b0383165f90815260046020526040812054819060ff161561139957611392600a5461138c600b54866115f390919063ffffffff16565b90611671565b90506113e8565b6001600160a01b0384165f9081526004602052604090205460ff16156113e857600a54600354600c546113e5929161138c916113de916001600160a01b0316316116b2565b86906115f3565b90505b801561146057305f908152600760205260409020546114079082611102565b305f81815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114579085815260200190565b60405180910390a35b6110f983826116b2565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061149d5761149d611925565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151891906118a5565b8160018151811061152b5761152b611925565b6001600160a01b0392831660209182029290920101526001546115519130911684610b78565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906115899085905f9086903090429060040161197b565b5f604051808303815f87803b1580156115a0575f80fd5b505af11580156115b2573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516115e79291906119b6565b60405180910390a15050565b5f825f0361160257505f610639565b5f61160d83856119d6565b90508261161a85836119ed565b146106a15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161073f565b5f6106a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116f3565b5f6106a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110ca565b5f81836117135760405162461bcd60e51b815260040161073f919061171f565b505f6110f984866119ed565b5f6020808352835180828501525f5b8181101561174a5785810183015185820160400152820161172e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610713575f80fd5b5f806040838503121561178f575f80fd5b823561179a8161176a565b946020939093013593505050565b5f805f606084860312156117ba575f80fd5b83356117c58161176a565b925060208401356117d58161176a565b929592945050506040919091013590565b5f602082840312156117f6575f80fd5b81356106a18161176a565b5f8060408385031215611812575f80fd5b823561181d8161176a565b9150602083013561182d8161176a565b809150509250929050565b600181811c9082168061184c57607f821691505b60208210810361186a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118b5575f80fd5b81516106a18161176a565b5f805f606084860312156118d2575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610639576106396118eb565b80820180821115610639576106396118eb565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156119705781516001600160a01b03168752958201959082019060010161194b565b509495945050505050565b85815284602082015260a060408201525f61199960a0830186611939565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6119ce6040830184611939565b949350505050565b8082028115828204841417610639576106396118eb565b5f82611a0757634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220939892e19ee4025da399592c2e33add18e5ea6f3b12321685c6707adc67e6df464736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101c8575f3560e01c8063751039fc116100f2578063a457c2d711610092578063cc1776d311610062578063cc1776d3146104f3578063dd62ed3e14610508578063ef29c4f11461054c578063f2fde38b1461057a575f80fd5b8063a457c2d71461048e578063a9059cbb146104ad578063c816841b146104cc578063c9567bf9146104eb575f80fd5b80638f3b684d116100cd5780638f3b684d146104185780638f9a55c014610446578063956236411461045b57806395d89b411461047a575f80fd5b8063751039fc146103d35780637d1db4a5146103e75780638da5cb5b146103fc575f80fd5b80633ecad271116101685780636ddd1713116101385780636ddd17131461033657806370a0823114610354578063715018a614610388578063735de9f71461039c575f80fd5b80633ecad271146102be5780634f7041a5146102ec57806365ea2a69146103015780636d800a3c14610317575f80fd5b806318160ddd116101a357806318160ddd1461024b57806323b872dd1461025f578063313ce5671461027e578063395093511461029f575f80fd5b80630445b667146101d357806306fdde03146101fb578063095ea7b31461021c575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b506101e860115481565b6040519081526020015b60405180910390f35b348015610206575f80fd5b5061020f610599565b6040516101f2919061171f565b348015610227575f80fd5b5061023b61023636600461177e565b610629565b60405190151581526020016101f2565b348015610256575f80fd5b506010546101e8565b34801561026a575f80fd5b5061023b6102793660046117a8565b61063f565b348015610289575f80fd5b50600f5460405160ff90911681526020016101f2565b3480156102aa575f80fd5b5061023b6102b936600461177e565b6106a8565b3480156102c9575f80fd5b5061023b6102d83660046117e6565b60046020525f908152604090205460ff1681565b3480156102f7575f80fd5b506101e8600b5481565b34801561030c575f80fd5b506103156106dd565b005b348015610322575f80fd5b5060095461023b9062010000900460ff1681565b348015610341575f80fd5b5060095461023b90610100900460ff1681565b34801561035f575f80fd5b506101e861036e3660046117e6565b6001600160a01b03165f9081526007602052604090205490565b348015610393575f80fd5b50610315610716565b3480156103a7575f80fd5b506001546103bb906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b3480156103de575f80fd5b50610315610753565b3480156103f2575f80fd5b506101e860135481565b348015610407575f80fd5b505f546001600160a01b03166103bb565b348015610423575f80fd5b5061023b6104323660046117e6565b60056020525f908152604090205460ff1681565b348015610451575f80fd5b506101e860125481565b348015610466575f80fd5b506003546103bb906001600160a01b031681565b348015610485575f80fd5b5061020f61078a565b348015610499575f80fd5b5061023b6104a836600461177e565b610799565b3480156104b8575f80fd5b5061023b6104c736600461177e565b6107e6565b3480156104d7575f80fd5b506002546103bb906001600160a01b031681565b6103156107f2565b3480156104fe575f80fd5b506101e8600c5481565b348015610513575f80fd5b506101e8610522366004611801565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610557575f80fd5b5061023b6105663660046117e6565b60066020525f908152604090205460ff1681565b348015610585575f80fd5b506103156105943660046117e6565b610ae1565b6060600d80546105a890611838565b80601f01602080910402602001604051908101604052809291908181526020018280546105d490611838565b801561061f5780601f106105f65761010080835404028352916020019161061f565b820191905f5260205f20905b81548152906001019060200180831161060257829003601f168201915b5050505050905090565b5f610635338484610b78565b5060015b92915050565b5f61064b848484610c9b565b5061069d843361069885604051806060016040528060288152602001611a0d602891396001600160a01b038a165f90815260086020908152604080832033845290915290205491906110ca565b610b78565b5060015b9392505050565b335f8181526008602090815260408083206001600160a01b038716845290915281205490916106359185906106989086611102565b6003546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610713573d5f803e3d5ffd5b50565b5f546001600160a01b031633146107485760405162461bcd60e51b815260040161073f90611870565b60405180910390fd5b6107515f611160565b565b5f546001600160a01b0316331461077c5760405162461bcd60e51b815260040161073f90611870565b6009805462ff000019169055565b6060600e80546105a890611838565b5f610635338461069885604051806060016040528060258152602001611a3560259139335f9081526008602090815260408083206001600160a01b038d16845290915290205491906110ca565b5f61069d338484610c9b565b5f546001600160a01b0316331461081b5760405162461bcd60e51b815260040161073f90611870565b60095460ff16156108625760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b604482015260640161073f565b6009805460ff19166001908117909155546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa1580156108b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dc91906118a5565b6001600160a01b031663c9c653963060015f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095f91906118a5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd91906118a5565b600280546001600160a01b039283166001600160a01b031990911681179091555f908152600460205260409020805460ff19166001908117909155541663f305d7193430610a2f816001600160a01b03165f9081526007602052604090205490565b5f80610a425f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610aa8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610acd91906118c0565b50506009805461ff00191661010017905550565b5f546001600160a01b03163314610b0a5760405162461bcd60e51b815260040161073f90611870565b6001600160a01b038116610b6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161073f565b61071381611160565b6001600160a01b038316610bda5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161073f565b6001600160a01b038216610c3b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161073f565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610d005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161073f565b6001600160a01b038316610d625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161073f565b5f8211610dc35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161073f565b60145460ff1615610de057610dd98484846111af565b90506106a1565b60095460ff16610e6c576001600160a01b0384165f9081526005602052604090205460ff1680610e2757506001600160a01b0383165f9081526005602052604090205460ff165b610e6c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161073f565b305f9081526007602052604090205460115481108015908190610e92575060145460ff16155b8015610eb657506001600160a01b0386165f9081526004602052604090205460ff16155b8015610ec95750600954610100900460ff165b15610ed757610ed782611292565b6003546001600160a01b03878116911614610f56576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260079091529190912054610f3d9186906110ca565b6001600160a01b0387165f908152600760205260409020555b5f610f6187876112b5565b610f7557610f7087878761134f565b610f77565b845b60095490915062010000900460ff168015610f9f57506002546001600160a01b038881169116145b8015610fc357506001600160a01b0386165f9081526006602052604090205460ff16155b1561104157601254610ff382610fed896001600160a01b03165f9081526007602052604090205490565b90611102565b11156110415760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d697420457863656564656421210000000000604482015260640161073f565b6001600160a01b0386165f908152600760205260409020546110639082611102565b6001600160a01b038088165f8181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110b69085815260200190565b60405180910390a3600193505050506106a1565b5f81848411156110ed5760405162461bcd60e51b815260040161073f919061171f565b505f6110f984866118ff565b95945050505050565b5f8061110e8385611912565b9050838110156106a15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161073f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526007909152918220546111ff9184906110ca565b6001600160a01b038086165f90815260076020526040808220939093559085168152205461122d9083611102565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112809086815260200190565b60405180910390a35060019392505050565b6014805460ff191660011790556112a88161146a565b506014805460ff19169055565b6001600160a01b0382165f9081526005602052604081205460ff16806112f257506001600160a01b0382165f9081526005602052604090205460ff165b156112ff57506001610639565b6001600160a01b0383165f9081526004602052604090205460ff168061133c57506001600160a01b0382165f9081526004602052604090205460ff165b1561134857505f610639565b505f610639565b6001600160a01b0383165f90815260046020526040812054819060ff161561139957611392600a5461138c600b54866115f390919063ffffffff16565b90611671565b90506113e8565b6001600160a01b0384165f9081526004602052604090205460ff16156113e857600a54600354600c546113e5929161138c916113de916001600160a01b0316316116b2565b86906115f3565b90505b801561146057305f908152600760205260409020546114079082611102565b305f81815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114579085815260200190565b60405180910390a35b6110f983826116b2565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061149d5761149d611925565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151891906118a5565b8160018151811061152b5761152b611925565b6001600160a01b0392831660209182029290920101526001546115519130911684610b78565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906115899085905f9086903090429060040161197b565b5f604051808303815f87803b1580156115a0575f80fd5b505af11580156115b2573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516115e79291906119b6565b60405180910390a15050565b5f825f0361160257505f610639565b5f61160d83856119d6565b90508261161a85836119ed565b146106a15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161073f565b5f6106a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116f3565b5f6106a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110ca565b5f81836117135760405162461bcd60e51b815260040161073f919061171f565b505f6110f984866119ed565b5f6020808352835180828501525f5b8181101561174a5785810183015185820160400152820161172e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610713575f80fd5b5f806040838503121561178f575f80fd5b823561179a8161176a565b946020939093013593505050565b5f805f606084860312156117ba575f80fd5b83356117c58161176a565b925060208401356117d58161176a565b929592945050506040919091013590565b5f602082840312156117f6575f80fd5b81356106a18161176a565b5f8060408385031215611812575f80fd5b823561181d8161176a565b9150602083013561182d8161176a565b809150509250929050565b600181811c9082168061184c57607f821691505b60208210810361186a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118b5575f80fd5b81516106a18161176a565b5f805f606084860312156118d2575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610639576106396118eb565b80820180821115610639576106396118eb565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156119705781516001600160a01b03168752958201959082019060010161194b565b509495945050505050565b85815284602082015260a060408201525f61199960a0830186611939565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6119ce6040830184611939565b949350505050565b8082028115828204841417610639576106396118eb565b5f82611a0757634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220939892e19ee4025da399592c2e33add18e5ea6f3b12321685c6707adc67e6df464736f6c63430008140033

Deployed Bytecode Sourcemap

4408:7898:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5326:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5326:56:0;;;;;;;;10431:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11453:138::-;;;;;;;;;;-1:-1:-1;11453:138:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;11453:138:0;1205:187:1;10660:86:0;;;;;;;;;;-1:-1:-1;10731:12:0;;10660:86;;11747:281;;;;;;;;;;-1:-1:-1;11747:281:0;;;;;:::i;:::-;;:::i;10585:69::-;;;;;;;;;;-1:-1:-1;10642:9:0;;10585:69;;10642:9;;;;2000:36:1;;1988:2;1973:18;10585:69:0;1858:184:1;10998:195:0;;;;;;;;;;-1:-1:-1;10998:195:0;;;;;:::i;:::-;;:::i;4667:44::-;;;;;;;;;;-1:-1:-1;4667:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5073:25;;;;;;;;;;;;;;;;12138:91;;;;;;;;;;;;;:::i;:::-;;5007:31;;;;;;;;;;-1:-1:-1;5007:31:0;;;;;;;;;;;4969;;;;;;;;;;-1:-1:-1;4969:31:0;;;;;;;;;;;10752:105;;;;;;;;;;-1:-1:-1;10752:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;10836:18:0;10818:7;10836:18;;;:9;:18;;;;;;;10752:105;1193:80;;;;;;;;;;;;;:::i;4501:37::-;;;;;;;;;;-1:-1:-1;4501:37:0;;;;-1:-1:-1;;;;;4501:37:0;;;;;;-1:-1:-1;;;;;2487:32:1;;;2469:51;;2457:2;2442:18;4501:37:0;2299:227:1;12235:68:0;;;;;;;;;;;;;:::i;5452:54::-;;;;;;;;;;;;;;;;988:73;;;;;;;;;;-1:-1:-1;1034:7:0;1052:6;-1:-1:-1;;;;;1052:6:0;988:73;;4718:48;;;;;;;;;;-1:-1:-1;4718:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5389:56;;;;;;;;;;;;;;;;4578:82;;;;;;;;;;-1:-1:-1;4578:82:0;;;;-1:-1:-1;;;;;4578:82:0;;;10506:73;;;;;;;;;;;;;:::i;11199:248::-;;;;;;;;;;-1:-1:-1;11199:248:0;;;;;:::i;:::-;;:::i;11597:144::-;;;;;;;;;;-1:-1:-1;11597:144:0;;;;;:::i;:::-;;:::i;4545:26::-;;;;;;;;;;-1:-1:-1;4545:26:0;;;;-1:-1:-1;;;;;4545:26:0;;;6877:473;;;:::i;5105:26::-;;;;;;;;;;;;;;;;10863:129;;;;;;;;;;-1:-1:-1;10863:129:0;;;;;:::i;:::-;-1:-1:-1;;;;;10962:18:0;;;10944:7;10962:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10863:129;4773:44;;;;;;;;;;-1:-1:-1;4773:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1279:192;;;;;;;;;;-1:-1:-1;1279:192:0;;;;;:::i;:::-;;:::i;10431:69::-;10468:13;10492:5;10485:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10431:69;:::o;11453:138::-;11528:4;11536:39;641:10;11559:7;11568:6;11536:8;:39::i;:::-;-1:-1:-1;11584:4:0;11453:138;;;;;:::o;11747:281::-;11845:4;11853:36;11863:6;11871:9;11882:6;11853:9;:36::i;:::-;-1:-1:-1;11891:121:0;11900:6;641:10;11922:89;11960:6;11922:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11922:19:0;;;;;;:11;:19;;;;;;;;641:10;11922:33;;;;;;;;;;:37;:89::i;:::-;11891:8;:121::i;:::-;-1:-1:-1;12021:4:0;11747:281;;;;;;:::o;10998:195::-;641:10;11086:4;11126:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11126:34:0;;;;;;;;;;11086:4;;11094:83;;11117:7;;11126:50;;11165:10;11126:38;:50::i;12138:91::-;12180:13;;12172:54;;-1:-1:-1;;;;;12180:13:0;;;;12204:21;12172:54;;;;;12180:13;12172:54;12180:13;12172:54;12204:21;12180:13;12172:54;;;;;;;;;;;;;;;;;;;;;12138:91::o;1193:80::-;1034:7;1052:6;-1:-1:-1;;;;;1052:6:0;641:10;1107:23;1099:68;;;;-1:-1:-1;;;1099:68:0;;;;;;;:::i;:::-;;;;;;;;;1249:21:::1;1267:1;1249:9;:21::i;:::-;1193:80::o:0;12235:68::-;1034:7;1052:6;-1:-1:-1;;;;;1052:6:0;641:10;1107:23;1099:68;;;;-1:-1:-1;;;1099:68:0;;;;;;;:::i;:::-;12280:12:::1;:20:::0;;-1:-1:-1;;12280:20:0::1;::::0;;12235:68::o;10506:73::-;10545:13;10569:7;10562:14;;;;;:::i;11199:248::-;11292:4;11300:131;641:10;11323:7;11332:97;11371:15;11332:97;;;;;;;;;;;;;;;;;641:10;11332:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11332:34:0;;;;;;;;;;;;:38;:97::i;11597:144::-;11675:4;11683:42;641:10;11707:9;11718:6;11683:9;:42::i;6877:473::-;1034:7;1052:6;-1:-1:-1;;;;;1052:6:0;641:10;1107:23;1099:68;;;;-1:-1:-1;;;1099:68:0;;;;;;;:::i;:::-;6947:13:::1;::::0;::::1;;6946:14;6938:44;;;::::0;-1:-1:-1;;;6938:44:0;;4080:2:1;6938:44:0::1;::::0;::::1;4062:21:1::0;4119:2;4099:18;;;4092:30;-1:-1:-1;;;4138:18:1;;;4131:47;4195:18;;6938:44:0::1;3878:341:1::0;6938:44:0::1;6993:13;:20:::0;;-1:-1:-1;;6993:20:0::1;7009:4;6993:20:::0;;::::1;::::0;;;7056:13;:23:::1;::::0;;-1:-1:-1;;;7056:23:0;;;;-1:-1:-1;;;;;7056:13:0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:13;:23:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7038:53:0::1;;7100:4;7107:13;;;;;;;;;-1:-1:-1::0;;;;;7107:13:0::1;-1:-1:-1::0;;;;;7107:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7038:91;::::0;-1:-1:-1;;;;;;7038:91:0::1;::::0;;;;;;-1:-1:-1;;;;;4710:15:1;;;7038:91:0::1;::::0;::::1;4692:34:1::0;4762:15;;4742:18;;;4735:43;4627:18;;7038:91:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7024:11;:105:::0;;-1:-1:-1;;;;;7024:105:0;;::::1;-1:-1:-1::0;;;;;;7024:105:0;;::::1;::::0;::::1;::::0;;;:11:::1;7140:34:::0;;;:12:::1;:34;::::0;;;;:41;;-1:-1:-1;;7140:41:0::1;7024:105:::0;7140:41;;::::1;::::0;;;7192:13;::::1;:29;7229:9;7248:4;7255:24;7248:4:::0;-1:-1:-1;;;;;10836:18:0;10818:7;10836:18;;;:9;:18;;;;;;;10752:105;7255:24:::1;7281:1;7284::::0;7287:7:::1;1034::::0;1052:6;-1:-1:-1;;;;;1052:6:0;;988:73;7287:7:::1;7192:121;::::0;::::1;::::0;;;-1:-1:-1;;;;;;7192:121:0;;;-1:-1:-1;;;;;5148:15:1;;;7192:121:0::1;::::0;::::1;5130:34:1::0;5180:18;;;5173:34;;;;5223:18;;;5216:34;;;;5266:18;;;5259:34;5330:15;;;5309:19;;;5302:44;7296:15:0::1;5362:19:1::0;;;5355:35;5064:19;;7192:121:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;7324:11:0::1;:18:::0;;-1:-1:-1;;7324:18:0::1;;;::::0;;-1:-1:-1;6877:473:0:o;1279:192::-;1034:7;1052:6;-1:-1:-1;;;;;1052:6:0;641:10;1107:23;1099:68;;;;-1:-1:-1;;;1099:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1368:22:0;::::1;1360:73;;;::::0;-1:-1:-1;;;1360:73:0;;5914:2:1;1360:73:0::1;::::0;::::1;5896:21:1::0;5953:2;5933:18;;;5926:30;5992:34;5972:18;;;5965:62;-1:-1:-1;;;6043:18:1;;;6036:36;6089:19;;1360:73:0::1;5712:402:1::0;1360:73:0::1;1444:19;1454:8;1444:9;:19::i;7362:336::-:0;-1:-1:-1;;;;;7456:19:0;;7448:68;;;;-1:-1:-1;;;7448:68:0;;6321:2:1;7448:68:0;;;6303:21:1;6360:2;6340:18;;;6333:30;6399:34;6379:18;;;6372:62;-1:-1:-1;;;6450:18:1;;;6443:34;6494:19;;7448:68:0;6119:400:1;7448:68:0;-1:-1:-1;;;;;7535:21:0;;7527:68;;;;-1:-1:-1;;;7527:68:0;;6726:2:1;7527:68:0;;;6708:21:1;6765:2;6745:18;;;6738:30;6804:34;6784:18;;;6777:62;-1:-1:-1;;;6855:18:1;;;6848:32;6897:19;;7527:68:0;6524:398:1;7527:68:0;-1:-1:-1;;;;;7606:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7658:32;;160:25:1;;;7658:32:0;;133:18:1;7658:32:0;;;;;;;7362:336;;;:::o;7704:1504::-;7792:4;-1:-1:-1;;;;;7817:20:0;;7809:70;;;;-1:-1:-1;;;7809:70:0;;7129:2:1;7809:70:0;;;7111:21:1;7168:2;7148:18;;;7141:30;7207:34;7187:18;;;7180:62;-1:-1:-1;;;7258:18:1;;;7251:35;7303:19;;7809:70:0;6927:401:1;7809:70:0;-1:-1:-1;;;;;7898:23:0;;7890:71;;;;-1:-1:-1;;;7890:71:0;;7535:2:1;7890:71:0;;;7517:21:1;7574:2;7554:18;;;7547:30;7613:34;7593:18;;;7586:62;-1:-1:-1;;;7664:18:1;;;7657:33;7707:19;;7890:71:0;7333:399:1;7890:71:0;7989:1;7980:6;:10;7972:64;;;;-1:-1:-1;;;7972:64:0;;7939:2:1;7972:64:0;;;7921:21:1;7978:2;7958:18;;;7951:30;8017:34;7997:18;;;7990:62;-1:-1:-1;;;8068:18:1;;;8061:39;8117:19;;7972:64:0;7737:405:1;7972:64:0;8053:6;;;;8049:1152;;;8083:44;8101:6;8109:9;8120:6;8083:17;:44::i;:::-;8076:51;;;;8049:1152;8165:13;;;;8160:116;;-1:-1:-1;;;;;8190:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;8218:27:0;;;;;;:16;:27;;;;;;;;8190:55;8182:91;;;;-1:-1:-1;;;8182:91:0;;8349:2:1;8182:91:0;;;8331:21:1;8388:2;8368:18;;;8361:30;-1:-1:-1;;;8407:18:1;;;8400:52;8469:18;;8182:91:0;8147:346:1;8182:91:0;8339:4;8290:28;10836:18;;;:9;:18;;;;;;8415:13;;8391:37;;;;;;;8447:34;;-1:-1:-1;8475:6:0;;;;8474:7;8447:34;:58;;;;-1:-1:-1;;;;;;8485:20:0;;;;;;:12;:20;;;;;;;;8484:21;8447:58;:73;;;;-1:-1:-1;8509:11:0;;;;;;;8447:73;8443:115;;;8525:30;8534:20;8525:8;:30::i;:::-;8586:13;;-1:-1:-1;;;;;8576:23:0;;;8586:13;;8576:23;8572:118;;8638:52;;;;;;;;;;;-1:-1:-1;;;8638:52:0;;;;;;;;-1:-1:-1;;;;;8638:17:0;;-1:-1:-1;8638:17:0;;;:9;:17;;;;;;;;:52;;8660:6;;8638:21;:52::i;:::-;-1:-1:-1;;;;;8618:17:0;;;;;;:9;:17;;;;;:72;8572:118;8705:19;8727:35;8744:6;8752:9;8727:16;:35::i;:::-;:115;;8808:34;8816:6;8824:9;8835:6;8808:7;:34::i;:::-;8727:115;;;8782:6;8727:115;8861:12;;8705:137;;-1:-1:-1;8861:12:0;;;;;:37;;;;-1:-1:-1;8887:11:0;;-1:-1:-1;;;;;8877:21:0;;;8887:11;;8877:21;8861:37;:65;;;;-1:-1:-1;;;;;;8903:23:0;;;;;;:12;:23;;;;;;;;8902:24;8861:65;8857:172;;;8980:14;;8939:37;8964:11;8939:20;8949:9;-1:-1:-1;;;;;10836:18:0;10818:7;10836:18;;;:9;:18;;;;;;;10752:105;8939:20;:24;;:37::i;:::-;:55;;8931:96;;;;-1:-1:-1;;;8931:96:0;;8700:2:1;8931:96:0;;;8682:21:1;8739:2;8719:18;;;8712:30;8778:29;8758:18;;;8751:57;8825:18;;8931:96:0;8498:351:1;8931:96:0;-1:-1:-1;;;;;9066:20:0;;;;;;:9;:20;;;;;;:37;;9091:11;9066:24;:37::i;:::-;-1:-1:-1;;;;;9043:20:0;;;;;;;:9;:20;;;;;;;:60;;;;9123:40;;;;;;;;;;9151:11;160:25:1;;148:2;133:18;;14:177;9123:40:0;;;;;;;;9185:4;9178:11;;;;;;;2006:190;2092:7;2128:12;2120:6;;;;2112:29;;;;-1:-1:-1;;;2112:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2152:9:0;2164:5;2168:1;2164;:5;:::i;:::-;2152:17;2006:190;-1:-1:-1;;;;;2006:190:0:o;1679:179::-;1737:7;;1769:5;1773:1;1769;:5;:::i;:::-;1757:17;;1798:1;1793;:6;;1785:46;;;;-1:-1:-1;;;1785:46:0;;9451:2:1;1785:46:0;;;9433:21:1;9490:2;9470:18;;;9463:30;9529:29;9509:18;;;9502:57;9576:18;;1785:46:0;9249:351:1;1477:173:0;1533:16;1552:6;;-1:-1:-1;;;;;1569:17:0;;;-1:-1:-1;;;;;;1569:17:0;;;;;;1602:40;;1552:6;;;;;;;1602:40;;1533:16;1602:40;1522:128;1477:173;:::o;9214:334::-;9347:54;;;;;;;;;;;-1:-1:-1;;;9347:54:0;;;;;;;;-1:-1:-1;;;;;9347:17:0;;9310:4;9347:17;;;:9;:17;;;;;;;:54;;9369:6;;9347:21;:54::i;:::-;-1:-1:-1;;;;;9327:17:0;;;;;;;:9;:17;;;;;;:74;;;;9435:20;;;;;;;:32;;9460:6;9435:24;:32::i;:::-;-1:-1:-1;;;;;9412:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9483:35;;;;;;;;;;9511:6;160:25:1;;148:2;133:18;;14:177;9483:35:0;;;;;;;;-1:-1:-1;9536:4:0;9214:334;;;;;:::o;12034:98::-;5564:6;:13;;-1:-1:-1;;5564:13:0;5573:4;5564:13;;;12096:33:::1;12113:15:::0;12096:16:::1;:33::i;:::-;-1:-1:-1::0;5600:6:0;:14;;-1:-1:-1;;5600:14:0;;;12034:98::o;9554:350::-;-1:-1:-1;;;;;9659:24:0;;9638:4;9659:24;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;9687:27:0;;;;;;:16;:27;;;;;;;;9659:55;9655:242;;;-1:-1:-1;9738:4:0;9731:11;;9655:242;-1:-1:-1;;;;;9764:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;9788:23:0;;;;;;:12;:23;;;;;;;;9764:47;9760:137;;;-1:-1:-1;9835:5:0;9828:12;;9760:137;-1:-1:-1;9880:5:0;9873:12;;9910:515;-1:-1:-1;;;;;10049:20:0;;9997:7;10049:20;;;:12;:20;;;;;;9997:7;;10049:20;;10045:185;;;10085:31;10108:7;;10085:18;10096:6;;10085;:10;;:18;;;;:::i;:::-;:22;;:31::i;:::-;10073:43;;10045:185;;;-1:-1:-1;;;;;10129:23:0;;;;;;:12;:23;;;;;;;;10125:105;;;10219:7;;10191:13;;10179:7;;10168:59;;10219:7;10168:46;;10179:34;;-1:-1:-1;;;;;10191:13:0;:21;10179:11;:34::i;:::-;10168:6;;:10;:46::i;:59::-;10156:71;;10125:105;10244:13;;10240:139;;10306:4;10288:24;;;;:9;:24;;;;;;:39;;10317:9;10288:28;:39::i;:::-;10279:4;10261:24;;;;:9;:24;;;;;;;:66;;;;10334:42;;-1:-1:-1;;;;;10334:42:0;;;;;;;10366:9;160:25:1;;148:2;133:18;;14:177;10334:42:0;;;;;;;;10240:139;10396:21;:6;10407:9;10396:10;:21::i;6423:442::-;6513:16;;;6527:1;6513:16;;;;;;;;6489:21;;6513:16;;;;;;;;;;-1:-1:-1;6513:16:0;6489:40;;6558:4;6540;6545:1;6540:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6540:23:0;;;:7;;;;;;;;;;:23;;;;6584:13;;:20;;;-1:-1:-1;;;6584:20:0;;;;:13;;;;;:18;;:20;;;;;6540:7;;6584:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6574:4;6579:1;6574:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6574:30:0;;;:7;;;;;;;;;:30;6647:13;;6615:60;;6632:4;;6647:13;6663:11;6615:8;:60::i;:::-;6686:13;;:120;;-1:-1:-1;;;6686:120:0;;-1:-1:-1;;;;;6686:13:0;;;;:64;;:120;;6752:11;;6686:13;;6768:4;;6782;;6789:15;;6686:120;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6822:35;6839:11;6852:4;6822:35;;;;;;;:::i;:::-;;;;;;;;6478:387;6423:442;:::o;2202:224::-;2260:7;2284:1;2289;2284:6;2280:25;;-1:-1:-1;2301:1:0;2294:8;;2280:25;2315:9;2327:5;2331:1;2327;:5;:::i;:::-;2315:17;-1:-1:-1;2360:1:0;2351:5;2355:1;2315:17;2351:5;:::i;:::-;:10;2343:56;;;;-1:-1:-1;;;2343:56:0;;11856:2:1;2343:56:0;;;11838:21:1;11895:2;11875:18;;;11868:30;11934:34;11914:18;;;11907:62;-1:-1:-1;;;11985:18:1;;;11978:31;12026:19;;2343:56:0;11654:397:1;2432:132:0;2490:7;2517:39;2521:1;2524;2517:39;;;;;;;;;;;;;;;;;:3;:39::i;1864:136::-;1922:7;1949:43;1953:1;1956;1949:43;;;;;;;;;;;;;;;;;:3;:43::i;2570:189::-;2656:7;2691:12;2684:5;2676:28;;;;-1:-1:-1;;;2676:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2715:9:0;2727:5;2731:1;2727;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885: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;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2739:388::-;2807:6;2815;2868:2;2856:9;2847:7;2843:23;2839:32;2836:52;;;2884:1;2881;2874:12;2836:52;2923:9;2910:23;2942:31;2967:5;2942:31;:::i;:::-;2992:5;-1:-1:-1;3049:2:1;3034:18;;3021:32;3062:33;3021:32;3062:33;:::i;:::-;3114:7;3104:17;;;2739:388;;;;;:::o;3132:380::-;3211:1;3207:12;;;;3254;;;3275:61;;3329:4;3321:6;3317:17;3307:27;;3275:61;3382:2;3374:6;3371:14;3351:18;3348:38;3345:161;;3428:10;3423:3;3419:20;3416:1;3409:31;3463:4;3460:1;3453:15;3491:4;3488:1;3481:15;3345:161;;3132:380;;;:::o;3517:356::-;3719:2;3701:21;;;3738:18;;;3731:30;3797:34;3792:2;3777:18;;3770:62;3864:2;3849:18;;3517:356::o;4224:251::-;4294:6;4347:2;4335:9;4326:7;4322:23;4318:32;4315:52;;;4363:1;4360;4353:12;4315:52;4395:9;4389:16;4414:31;4439:5;4414:31;:::i;5401:306::-;5489:6;5497;5505;5558:2;5546:9;5537:7;5533:23;5529:32;5526:52;;;5574:1;5571;5564:12;5526:52;5603:9;5597:16;5587:26;;5653:2;5642:9;5638:18;5632:25;5622:35;;5697:2;5686:9;5682:18;5676:25;5666:35;;5401:306;;;;;:::o;8854:127::-;8915:10;8910:3;8906:20;8903:1;8896:31;8946:4;8943:1;8936:15;8970:4;8967:1;8960:15;8986:128;9053:9;;;9074:11;;;9071:37;;;9088:18;;:::i;9119:125::-;9184:9;;;9205:10;;;9202:36;;;9218:18;;:::i;9737:127::-;9798:10;9793:3;9789:20;9786:1;9779:31;9829:4;9826:1;9819:15;9853:4;9850:1;9843:15;9869:461;9922:3;9960:5;9954:12;9987:6;9982:3;9975:19;10013:4;10042:2;10037:3;10033:12;10026:19;;10079:2;10072:5;10068:14;10100:1;10110:195;10124:6;10121:1;10118:13;10110:195;;;10189:13;;-1:-1:-1;;;;;10185:39:1;10173:52;;10245:12;;;;10280:15;;;;10221:1;10139:9;10110:195;;;-1:-1:-1;10321:3:1;;9869:461;-1:-1:-1;;;;;9869:461:1:o;10335:582::-;10634:6;10623:9;10616:25;10677:6;10672:2;10661:9;10657:18;10650:34;10720:3;10715:2;10704:9;10700:18;10693:31;10597:4;10741:57;10793:3;10782:9;10778:19;10770:6;10741:57;:::i;:::-;-1:-1:-1;;;;;10834:32:1;;;;10829:2;10814:18;;10807:60;-1:-1:-1;10898:3:1;10883:19;10876:35;10733:65;10335:582;-1:-1:-1;;;10335:582:1:o;10922:332::-;11129:6;11118:9;11111:25;11172:2;11167;11156:9;11152:18;11145:30;11092:4;11192:56;11244:2;11233:9;11229:18;11221:6;11192:56;:::i;:::-;11184:64;10922:332;-1:-1:-1;;;;10922:332:1:o;11259:168::-;11332:9;;;11363;;11380:15;;;11374:22;;11360:37;11350:71;;11401:18;;:::i;11432:217::-;11472:1;11498;11488:132;;11542:10;11537:3;11533:20;11530:1;11523:31;11577:4;11574:1;11567:15;11605:4;11602:1;11595:15;11488:132;-1:-1:-1;11634:9:1;;11432:217::o

Swarm Source

ipfs://939892e19ee4025da399592c2e33add18e5ea6f3b12321685c6707adc67e6df4

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.