ETH Price: $3,444.96 (-2.59%)
Gas: 3 Gwei

Contract

0x0730cbf506AffAfd0359a797c64FE574759f6404
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...181505602023-09-16 18:46:23310 days ago1694889983IN
0x0730cbf5...4759f6404
0 ETH0.0008051628.29301232
Approve181505552023-09-16 18:45:11310 days ago1694889911IN
0x0730cbf5...4759f6404
0 ETH0.0016157734.69039543
Approve181505542023-09-16 18:44:59310 days ago1694889899IN
0x0730cbf5...4759f6404
0 ETH0.0016089334.54364018
Approve181505532023-09-16 18:44:47310 days ago1694889887IN
0x0730cbf5...4759f6404
0 ETH0.0016561735.55784902
Approve181505532023-09-16 18:44:47310 days ago1694889887IN
0x0730cbf5...4759f6404
0 ETH0.0017488837.55784902
Zero Tax181505522023-09-16 18:44:23310 days ago1694889863IN
0x0730cbf5...4759f6404
0 ETH0.001532450
Edit Taxes181505502023-09-16 18:43:59310 days ago1694889839IN
0x0730cbf5...4759f6404
0 ETH0.0012229636.5850107
Remove Limits181505492023-09-16 18:43:47310 days ago1694889827IN
0x0730cbf5...4759f6404
0 ETH0.001861638.1788624
Approve181505452023-09-16 18:42:59310 days ago1694889779IN
0x0730cbf5...4759f6404
0 ETH0.0019944742.82097424
Approve181505452023-09-16 18:42:59310 days ago1694889779IN
0x0730cbf5...4759f6404
0 ETH0.0019944742.82097424
Approve181505442023-09-16 18:42:47310 days ago1694889767IN
0x0730cbf5...4759f6404
0 ETH0.0020000542.951791
Approve181505442023-09-16 18:42:47310 days ago1694889767IN
0x0730cbf5...4759f6404
0 ETH0.0020000542.951791
Approve181505442023-09-16 18:42:47310 days ago1694889767IN
0x0730cbf5...4759f6404
0 ETH0.0020000542.951791
Approve181505432023-09-16 18:42:35310 days ago1694889755IN
0x0730cbf5...4759f6404
0 ETH0.0019006840.80726558
Approve181505432023-09-16 18:42:35310 days ago1694889755IN
0x0730cbf5...4759f6404
0 ETH0.0019006840.80726558
Approve181505432023-09-16 18:42:35310 days ago1694889755IN
0x0730cbf5...4759f6404
0 ETH0.0018540939.81726558
Approve181505432023-09-16 18:42:35310 days ago1694889755IN
0x0730cbf5...4759f6404
0 ETH0.0018536239.80726558
Approve181505412023-09-16 18:42:11310 days ago1694889731IN
0x0730cbf5...4759f6404
0 ETH0.0015384533.03025457
LIVE181505332023-09-16 18:40:23310 days ago1694889623IN
0x0730cbf5...4759f6404
0 ETH0.0342376912.01510777
Transfer181505282023-09-16 18:39:23310 days ago1694889563IN
0x0730cbf5...4759f6404
1 ETH0.000207879.87315596
Transfer181505282023-09-16 18:39:23310 days ago1694889563IN
0x0730cbf5...4759f6404
0 ETH0.000538479.87315596
0x60806040181505152023-09-16 18:36:47310 days ago1694889407IN
 Create: DOGMAN
0 ETH0.0251490212.83628971

Latest 5 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
181505922023-09-16 18:52:47310 days ago1694890367
0x0730cbf5...4759f6404
0.02121203 ETH
181505922023-09-16 18:52:47310 days ago1694890367
0x0730cbf5...4759f6404
0.02121203 ETH
181505522023-09-16 18:44:23310 days ago1694889863
0x0730cbf5...4759f6404
0.147394 ETH
181505522023-09-16 18:44:23310 days ago1694889863
0x0730cbf5...4759f6404
0.147394 ETH
181505332023-09-16 18:40:23310 days ago1694889623
0x0730cbf5...4759f6404
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DOGMAN

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-16
*/

// $DOGMAN
// By Nate Hallinan, the artist that brought you Smurf Cat! 
// https://www.natehallinan.com/projects/L3Egkl?album_id=910810


// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;


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

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);
}

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;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _msgSender());
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address _address) external onlyOwner (){
        emit OwnershipTransferred(_owner, _address);
        _owner = _address;
    }

}  

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract DOGMAN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private balance;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping (address => bool) private bots;
    bool public transferDelayEnabled = true;
    address payable public deployerWallet;


    
    uint256 private constant _tTotal = 1_000_000_000000000;
    uint256 private  maxWallet = _tTotal/100; 
    uint256 public _maxTaxSwap= _tTotal/100;
    uint256 private taxSellPerc = 0;
    uint256 private taxBuyPerc = 0;
    string private constant _name = unicode"DOGMAN";
    string private constant _symbol = unicode"DOGMAN";
    uint8 private constant _decimals = 9;
    bool private inSwap = false;

    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private phase2;
    bool private paused;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event MaxWalletPercUpdated(uint _maxWalletPerc);
    event MaxTaxSwapPercUpdated(uint _maxTaxSwap);
    
    constructor () { 
        deployerWallet = payable(_msgSender());
        balance[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0),owner(), _tTotal);
    }

    function name() external pure returns (string memory) {
        return _name;
    }

    function symbol() external pure returns (string memory) {
        return _symbol;
    }

    function decimals() external pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() external pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address holder, address spender) external view override returns (uint256) {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function isWhitelisted(address _addr) external view returns(bool){
        return _isExcludedFromFee[_addr];
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address holder, address spender, uint256 amount) private {
        require(holder != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[holder][spender] = amount;
        emit Approval(holder, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(balanceOf(from) >= amount,"Balance less then transfer"); 
        require(!bots[from] && !bots[to]);

        uint256 taxAmount=0;
        if (!(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {  
            require(tradingOpen,"Trading is not enabled yet");
            require(amount <= _maxTxAmount,"Amount exceed max trnx amount");

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] <
                            block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }
            
            if(to != uniswapV2Pair){   
            require(balanceOf(to) + amount <= maxWallet,"max Wallet limit exceeded");
            } 

            uint256 contractETHBalance = address(this).balance;
            if(contractETHBalance > 0) { 
                sendETHToFee(address(this).balance);
            }

            
            if(from == uniswapV2Pair){
                taxAmount = amount.mul(taxBuyPerc).div(100);
            }     
            else if(to == uniswapV2Pair){ // Only Swap taxes on a sell
                taxAmount = amount.mul(taxSellPerc).div(100);
                uint256 contractTokenBalance = balanceOf(address(this));
                if(!inSwap){
                    if(phase2){
                        swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                    }
                    else{
                        if(contractTokenBalance > _tTotal/1000){ // Sell 0.01%
                            swapTokensForEth(contractTokenBalance);
                    }
                    }
                }
            }
               
        }
        _tokenTransfer(from,to,amount,taxAmount);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, uint256 _taxAmount) private {
          
        uint256 remainingAmount = amount - _taxAmount; 
        balance[sender] = balance[sender].sub(amount); 
        balance[recipient] = balance[recipient].add(remainingAmount); 
        balance[address(this)] = balance[address(this)].add(_taxAmount); 
        emit Transfer(sender, recipient, remainingAmount);
    }


    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    

    function RemoveLimits() external onlyOwner{
        require(tradingOpen,"Trading is not enabled yet");
        _maxTxAmount = _tTotal;
        maxWallet = _tTotal;
        _maxTaxSwap = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
        emit MaxWalletPercUpdated(_tTotal);
        emit MaxTaxSwapPercUpdated(_tTotal);
        transferDelayEnabled=false;

    }

    function sendETHToFee(uint256 amount) private {
        deployerWallet.transfer(amount);        
    }
    
    
    function LIVE() external onlyOwner {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        _maxTxAmount = _tTotal*20/1000;
        maxWallet = _tTotal*20/1000;
        _maxTaxSwap = _tTotal*20/1000;
        taxSellPerc = 20;
        taxBuyPerc = 40;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingOpen = true;
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function setPhase2() external onlyOwner{
        phase2 = true;
    }

    function ZeroTax() external onlyOwner{
        taxSellPerc = 98;
        taxBuyPerc = 1;
    }

    function editTaxes() external onlyOwner{
        taxSellPerc = 1;
        taxBuyPerc = 1;
    }

    event addressWhitelisted(address _address,bool _bool);

    function whitelistForCex(address _addr,bool _bool) external {
        require(_isExcludedFromFee[msg.sender],"Only team can call this function");
        _isExcludedFromFee[_addr] = _bool;
        emit addressWhitelisted(_addr,_bool);
    }

    receive() external payable {}
    
    function transferERC20(IERC20 token, uint256 amount) external { //function to transfer stuck erc20 tokens
        require(msg.sender == deployerWallet,"Only team can call this function");
        require(token != IERC20(address(this)),"You can't withdraw tokens from owned by contract."); 
        uint256 erc20balance = token.balanceOf(address(this));
        require(amount <= erc20balance, "balance is low");
        token.transfer(deployerWallet, amount);
    }


    function manualswap() external {
        require(msg.sender == deployerWallet,"Only team can call this function");
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(msg.sender == deployerWallet,"Only team can call this function");
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function addBots(address[] memory bots_) external {
        require(msg.sender == deployerWallet,"Only team can call this function");
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) external {
        require(msg.sender == deployerWallet,"Only team can call this function");
        for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }
}

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":false,"internalType":"uint256","name":"_maxTaxSwap","type":"uint256"}],"name":"MaxTaxSwapPercUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxWalletPerc","type":"uint256"}],"name":"MaxWalletPercUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_bool","type":"bool"}],"name":"addressWhitelisted","type":"event"},{"inputs":[],"name":"LIVE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ZeroTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployerWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"editTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setPhase2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferERC20","outputs":[],"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":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"whitelistForCex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526006805460ff1916600117905562000025606466038d7ea4c680006200019f565b6007556200003c606466038d7ea4c680006200019f565b6008555f6009819055600a55600b805460ff1916905566038d7ea4c68000600d5534801562000069575f80fd5b505f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360068054610100600160a81b03191661010033908102919091179091555f908152600160208190526040822066038d7ea4c68000905590600390620000f45f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526003909252902080549091166001179055620001455f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200019191815260200190565b60405180910390a3620001bf565b5f82620001ba57634e487b7160e01b5f52601260045260245ffd5b500490565b611eed80620001cd5f395ff3fe608060405260043610610198575f3560e01c80636fc3eaec116100e7578063a9059cbb11610087578063d34628cc11610062578063d34628cc14610483578063dd62ed3e146104a2578063f2fde38b146104e6578063f7448a3114610505575f80fd5b8063a9059cbb14610437578063c3c8cd8014610456578063c876d0b91461046a575f80fd5b806379e939a3116100c257806379e939a3146103e857806387bd626e146104075780638da5cb5b1461041b57806395d89b41146101a3575f80fd5b80636fc3eaec1461038c57806370a08231146103a0578063719b3db8146103d4575f80fd5b8063313ce567116101525780633bbac5791161012d5780633bbac579146102f157806356cd40e71461032857806356dda5871461033c5780635d60c7be14610350575f80fd5b8063313ce5671461028057806331c2d8471461029b5780633af32abf146102ba575f80fd5b806306fdde03146101a3578063095ea7b3146101e05780630faee56f1461020f57806318160ddd1461023257806323b872dd1461024b5780632a92ee8b1461026a575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201825260068152652227a3a6a0a760d11b602082015290516101d79190611a6c565b60405180910390f35b3480156101eb575f80fd5b506101ff6101fa366004611adb565b610524565b60405190151581526020016101d7565b34801561021a575f80fd5b5061022460085481565b6040519081526020016101d7565b34801561023d575f80fd5b5066038d7ea4c68000610224565b348015610256575f80fd5b506101ff610265366004611b05565b61053a565b348015610275575f80fd5b5061027e6105a1565b005b34801561028b575f80fd5b50604051600981526020016101d7565b3480156102a6575f80fd5b5061027e6102b5366004611b57565b6109bd565b3480156102c5575f80fd5b506101ff6102d4366004611c17565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156102fc575f80fd5b506101ff61030b366004611c17565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610333575f80fd5b5061027e610a54565b348015610347575f80fd5b5061027e610ba0565b34801561035b575f80fd5b506006546103749061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101d7565b348015610397575f80fd5b5061027e610bde565b3480156103ab575f80fd5b506102246103ba366004611c17565b6001600160a01b03165f9081526001602052604090205490565b3480156103df575f80fd5b5061027e610c1a565b3480156103f3575f80fd5b5061027e610402366004611c3f565b610c4f565b348015610412575f80fd5b5061027e610cdf565b348015610426575f80fd5b505f546001600160a01b0316610374565b348015610442575f80fd5b506101ff610451366004611adb565b610d14565b348015610461575f80fd5b5061027e610d20565b348015610475575f80fd5b506006546101ff9060ff1681565b34801561048e575f80fd5b5061027e61049d366004611b57565b610d67565b3480156104ad575f80fd5b506102246104bc366004611c76565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104f1575f80fd5b5061027e610500366004611c17565b610dfb565b348015610510575f80fd5b5061027e61051f366004611adb565b610e7d565b5f610530338484611048565b5060015b92915050565b5f61054684848461116b565b610597843361059285604051806060016040528060288152602001611e90602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906115e5565b611048565b5060019392505050565b5f546001600160a01b031633146105d35760405162461bcd60e51b81526004016105ca90611ca2565b60405180910390fd5b600c54600160a01b900460ff161561062d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105ca565b600b8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790819055737a250d5630b4cf539739df2c5dacb4c659f2488d9061068f9030906001600160a01b036101009091041666038d7ea4c68000611048565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef9190611cd7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075e9190611cd7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cc9190611cd7565b600c80546001600160a01b039283166001600160a01b0319909116179055600b5461010090041663f305d7194730610818816001600160a01b03165f9081526001602052604090205490565b5f8061082b5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610891573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108b69190611cf2565b5050506103e866038d7ea4c6800060146108d09190611d31565b6108da9190611d48565b600d556103e86108f266038d7ea4c680006014611d31565b6108fc9190611d48565b6007556103e861091466038d7ea4c680006014611d31565b61091e9190611d48565b60085560146009556028600a55600c54600b5460405163095ea7b360e01b81526001600160a01b03610100909204821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610982573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a69190611d67565b5050600c805460ff60a01b1916600160a01b179055565b60065461010090046001600160a01b031633146109ec5760405162461bcd60e51b81526004016105ca90611d82565b5f5b8151811015610a50575f60055f848481518110610a0d57610a0d611db7565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610a4881611dcb565b9150506109ee565b5050565b5f546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016105ca90611ca2565b600c54600160a01b900460ff16610ad65760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c65642079657400000000000060448201526064016105ca565b66038d7ea4c68000600d819055600781905560088190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a160405166038d7ea4c6800081527f9a67c283449381e8ee7fa29c87cef05ccedd0faaff767bf879b02d34290fdc7b9060200160405180910390a160405166038d7ea4c6800081527f8731543e21093ca66ef786ff7b72c9887cea0eec2b8b9484b95429eaffc4903c9060200160405180910390a16006805460ff19169055565b5f546001600160a01b03163314610bc95760405162461bcd60e51b81526004016105ca90611ca2565b600c805460ff60a81b1916600160a81b179055565b60065461010090046001600160a01b03163314610c0d5760405162461bcd60e51b81526004016105ca90611d82565b47610c178161161d565b50565b5f546001600160a01b03163314610c435760405162461bcd60e51b81526004016105ca90611ca2565b60626009556001600a55565b335f9081526003602052604090205460ff16610c7d5760405162461bcd60e51b81526004016105ca90611d82565b6001600160a01b0382165f81815260036020908152604091829020805460ff19168515159081179091558251938452908301527ff3ef47a8986c54ec89de9fdd967838ffa1f8c90d7b1ca23b3d78e32232226fdb910160405180910390a15050565b5f546001600160a01b03163314610d085760405162461bcd60e51b81526004016105ca90611ca2565b60016009819055600a55565b5f61053033848461116b565b60065461010090046001600160a01b03163314610d4f5760405162461bcd60e51b81526004016105ca90611d82565b305f90815260016020526040902054610c1781611658565b60065461010090046001600160a01b03163314610d965760405162461bcd60e51b81526004016105ca90611d82565b5f5b8151811015610a5057600160055f848481518110610db857610db8611db7565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610df381611dcb565b915050610d98565b5f546001600160a01b03163314610e245760405162461bcd60e51b81526004016105ca90611ca2565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b60065461010090046001600160a01b03163314610eac5760405162461bcd60e51b81526004016105ca90611d82565b306001600160a01b03831603610f1e5760405162461bcd60e51b815260206004820152603160248201527f596f752063616e277420776974686472617720746f6b656e732066726f6d206f6044820152703bb732b210313c9031b7b73a3930b1ba1760791b60648201526084016105ca565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f869190611de3565b905080821115610fc95760405162461bcd60e51b815260206004820152600e60248201526d62616c616e6365206973206c6f7760901b60448201526064016105ca565b60065460405163a9059cbb60e01b81526101009091046001600160a01b0390811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af115801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190611d67565b50505050565b6001600160a01b0383166110aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ca565b6001600160a01b03821661110b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ca565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116111cc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ca565b806111eb846001600160a01b03165f9081526001602052604090205490565b10156112395760405162461bcd60e51b815260206004820152601a60248201527f42616c616e6365206c657373207468656e207472616e7366657200000000000060448201526064016105ca565b6001600160a01b0383165f9081526005602052604090205460ff1615801561127957506001600160a01b0382165f9081526005602052604090205460ff16155b611281575f80fd5b6001600160a01b0383165f9081526003602052604081205460ff16806112be57506001600160a01b0383165f9081526003602052604090205460ff165b6115d957600c54600160a01b900460ff1661131b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c65642079657400000000000060448201526064016105ca565b600d5482111561136d5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e7420657863656564206d61782074726e7820616d6f756e7400000060448201526064016105ca565b60065460ff161561145557600b546001600160a01b0384811661010090920416148015906113a95750600c546001600160a01b03848116911614155b1561145557325f9081526004602052604090205443116114435760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016105ca565b325f9081526004602052604090204390555b600c546001600160a01b038481169116146114e4576007548261148c856001600160a01b03165f9081526001602052604090205490565b6114969190611dfa565b11156114e45760405162461bcd60e51b815260206004820152601960248201527f6d61782057616c6c6574206c696d69742065786365656465640000000000000060448201526064016105ca565b4780156114f4576114f44761161d565b600c546001600160a01b03908116908616036115315761152a6064611524600a54866117e290919063ffffffff16565b90611867565b91506115d7565b600c546001600160a01b03908116908516036115d7576115616064611524600954866117e290919063ffffffff16565b305f90815260016020526040902054600b549193509060ff166115d557600c54600160a81b900460ff16156115b2576115ad6115a8856115a3846008546118a8565b6118a8565b611658565b6115d5565b6115c56103e866038d7ea4c68000611d48565b8111156115d5576115d581611658565b505b505b611042848484846118bc565b5f81848411156116085760405162461bcd60e51b81526004016105ca9190611a6c565b505f6116148486611e0d565b95945050505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610a50573d5f803e3d5ffd5b600b805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061169857611698611db7565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611709573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172d9190611cd7565b8160018151811061174057611740611db7565b6001600160a01b039283166020918202929092010152600b5461176b91309161010090041684611048565b600b5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac947906117a79085905f90869030904290600401611e20565b5f604051808303815f87803b1580156117be575f80fd5b505af11580156117d0573d5f803e3d5ffd5b5050600b805460ff1916905550505050565b5f825f036117f157505f610534565b5f6117fc8385611d31565b9050826118098583611d48565b146118605760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ca565b9392505050565b5f61186083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119a1565b5f8183116118b65782611860565b50919050565b5f6118c78284611e0d565b6001600160a01b0386165f908152600160205260409020549091506118ec90846119cd565b6001600160a01b038087165f90815260016020526040808220939093559086168152205461191a9082611a0e565b6001600160a01b0385165f908152600160205260408082209290925530815220546119459083611a0e565b305f9081526001602090815260409182902092909255518281526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b5f81836119c15760405162461bcd60e51b81526004016105ca9190611a6c565b505f6116148486611d48565b5f61186083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115e5565b5f80611a1a8385611dfa565b9050838110156118605760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ca565b5f6020808352835180828501525f5b81811015611a9757858101830151858201604001528201611a7b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c17575f80fd5b8035611ad681611ab7565b919050565b5f8060408385031215611aec575f80fd5b8235611af781611ab7565b946020939093013593505050565b5f805f60608486031215611b17575f80fd5b8335611b2281611ab7565b92506020840135611b3281611ab7565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611b68575f80fd5b823567ffffffffffffffff80821115611b7f575f80fd5b818501915085601f830112611b92575f80fd5b813581811115611ba457611ba4611b43565b8060051b604051601f19603f83011681018181108582111715611bc957611bc9611b43565b604052918252848201925083810185019188831115611be6575f80fd5b938501935b82851015611c0b57611bfc85611acb565b84529385019392850192611beb565b98975050505050505050565b5f60208284031215611c27575f80fd5b813561186081611ab7565b8015158114610c17575f80fd5b5f8060408385031215611c50575f80fd5b8235611c5b81611ab7565b91506020830135611c6b81611c32565b809150509250929050565b5f8060408385031215611c87575f80fd5b8235611c9281611ab7565b91506020830135611c6b81611ab7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611ce7575f80fd5b815161186081611ab7565b5f805f60608486031215611d04575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761053457610534611d1d565b5f82611d6257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611d77575f80fd5b815161186081611c32565b6020808252818101527f4f6e6c79207465616d2063616e2063616c6c20746869732066756e6374696f6e604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611ddc57611ddc611d1d565b5060010190565b5f60208284031215611df3575f80fd5b5051919050565b8082018082111561053457610534611d1d565b8181038181111561053457610534611d1d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611e6e5784516001600160a01b031683529383019391830191600101611e49565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cfe5c3728bc622506de33f82f201bd0247a581941f4518ed315b42c246b62bfd64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610198575f3560e01c80636fc3eaec116100e7578063a9059cbb11610087578063d34628cc11610062578063d34628cc14610483578063dd62ed3e146104a2578063f2fde38b146104e6578063f7448a3114610505575f80fd5b8063a9059cbb14610437578063c3c8cd8014610456578063c876d0b91461046a575f80fd5b806379e939a3116100c257806379e939a3146103e857806387bd626e146104075780638da5cb5b1461041b57806395d89b41146101a3575f80fd5b80636fc3eaec1461038c57806370a08231146103a0578063719b3db8146103d4575f80fd5b8063313ce567116101525780633bbac5791161012d5780633bbac579146102f157806356cd40e71461032857806356dda5871461033c5780635d60c7be14610350575f80fd5b8063313ce5671461028057806331c2d8471461029b5780633af32abf146102ba575f80fd5b806306fdde03146101a3578063095ea7b3146101e05780630faee56f1461020f57806318160ddd1461023257806323b872dd1461024b5780632a92ee8b1461026a575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201825260068152652227a3a6a0a760d11b602082015290516101d79190611a6c565b60405180910390f35b3480156101eb575f80fd5b506101ff6101fa366004611adb565b610524565b60405190151581526020016101d7565b34801561021a575f80fd5b5061022460085481565b6040519081526020016101d7565b34801561023d575f80fd5b5066038d7ea4c68000610224565b348015610256575f80fd5b506101ff610265366004611b05565b61053a565b348015610275575f80fd5b5061027e6105a1565b005b34801561028b575f80fd5b50604051600981526020016101d7565b3480156102a6575f80fd5b5061027e6102b5366004611b57565b6109bd565b3480156102c5575f80fd5b506101ff6102d4366004611c17565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156102fc575f80fd5b506101ff61030b366004611c17565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610333575f80fd5b5061027e610a54565b348015610347575f80fd5b5061027e610ba0565b34801561035b575f80fd5b506006546103749061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101d7565b348015610397575f80fd5b5061027e610bde565b3480156103ab575f80fd5b506102246103ba366004611c17565b6001600160a01b03165f9081526001602052604090205490565b3480156103df575f80fd5b5061027e610c1a565b3480156103f3575f80fd5b5061027e610402366004611c3f565b610c4f565b348015610412575f80fd5b5061027e610cdf565b348015610426575f80fd5b505f546001600160a01b0316610374565b348015610442575f80fd5b506101ff610451366004611adb565b610d14565b348015610461575f80fd5b5061027e610d20565b348015610475575f80fd5b506006546101ff9060ff1681565b34801561048e575f80fd5b5061027e61049d366004611b57565b610d67565b3480156104ad575f80fd5b506102246104bc366004611c76565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104f1575f80fd5b5061027e610500366004611c17565b610dfb565b348015610510575f80fd5b5061027e61051f366004611adb565b610e7d565b5f610530338484611048565b5060015b92915050565b5f61054684848461116b565b610597843361059285604051806060016040528060288152602001611e90602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906115e5565b611048565b5060019392505050565b5f546001600160a01b031633146105d35760405162461bcd60e51b81526004016105ca90611ca2565b60405180910390fd5b600c54600160a01b900460ff161561062d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105ca565b600b8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790819055737a250d5630b4cf539739df2c5dacb4c659f2488d9061068f9030906001600160a01b036101009091041666038d7ea4c68000611048565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef9190611cd7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075e9190611cd7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cc9190611cd7565b600c80546001600160a01b039283166001600160a01b0319909116179055600b5461010090041663f305d7194730610818816001600160a01b03165f9081526001602052604090205490565b5f8061082b5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610891573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108b69190611cf2565b5050506103e866038d7ea4c6800060146108d09190611d31565b6108da9190611d48565b600d556103e86108f266038d7ea4c680006014611d31565b6108fc9190611d48565b6007556103e861091466038d7ea4c680006014611d31565b61091e9190611d48565b60085560146009556028600a55600c54600b5460405163095ea7b360e01b81526001600160a01b03610100909204821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610982573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a69190611d67565b5050600c805460ff60a01b1916600160a01b179055565b60065461010090046001600160a01b031633146109ec5760405162461bcd60e51b81526004016105ca90611d82565b5f5b8151811015610a50575f60055f848481518110610a0d57610a0d611db7565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610a4881611dcb565b9150506109ee565b5050565b5f546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016105ca90611ca2565b600c54600160a01b900460ff16610ad65760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c65642079657400000000000060448201526064016105ca565b66038d7ea4c68000600d819055600781905560088190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a160405166038d7ea4c6800081527f9a67c283449381e8ee7fa29c87cef05ccedd0faaff767bf879b02d34290fdc7b9060200160405180910390a160405166038d7ea4c6800081527f8731543e21093ca66ef786ff7b72c9887cea0eec2b8b9484b95429eaffc4903c9060200160405180910390a16006805460ff19169055565b5f546001600160a01b03163314610bc95760405162461bcd60e51b81526004016105ca90611ca2565b600c805460ff60a81b1916600160a81b179055565b60065461010090046001600160a01b03163314610c0d5760405162461bcd60e51b81526004016105ca90611d82565b47610c178161161d565b50565b5f546001600160a01b03163314610c435760405162461bcd60e51b81526004016105ca90611ca2565b60626009556001600a55565b335f9081526003602052604090205460ff16610c7d5760405162461bcd60e51b81526004016105ca90611d82565b6001600160a01b0382165f81815260036020908152604091829020805460ff19168515159081179091558251938452908301527ff3ef47a8986c54ec89de9fdd967838ffa1f8c90d7b1ca23b3d78e32232226fdb910160405180910390a15050565b5f546001600160a01b03163314610d085760405162461bcd60e51b81526004016105ca90611ca2565b60016009819055600a55565b5f61053033848461116b565b60065461010090046001600160a01b03163314610d4f5760405162461bcd60e51b81526004016105ca90611d82565b305f90815260016020526040902054610c1781611658565b60065461010090046001600160a01b03163314610d965760405162461bcd60e51b81526004016105ca90611d82565b5f5b8151811015610a5057600160055f848481518110610db857610db8611db7565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610df381611dcb565b915050610d98565b5f546001600160a01b03163314610e245760405162461bcd60e51b81526004016105ca90611ca2565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b60065461010090046001600160a01b03163314610eac5760405162461bcd60e51b81526004016105ca90611d82565b306001600160a01b03831603610f1e5760405162461bcd60e51b815260206004820152603160248201527f596f752063616e277420776974686472617720746f6b656e732066726f6d206f6044820152703bb732b210313c9031b7b73a3930b1ba1760791b60648201526084016105ca565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f869190611de3565b905080821115610fc95760405162461bcd60e51b815260206004820152600e60248201526d62616c616e6365206973206c6f7760901b60448201526064016105ca565b60065460405163a9059cbb60e01b81526101009091046001600160a01b0390811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af115801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190611d67565b50505050565b6001600160a01b0383166110aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ca565b6001600160a01b03821661110b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ca565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116111cc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ca565b806111eb846001600160a01b03165f9081526001602052604090205490565b10156112395760405162461bcd60e51b815260206004820152601a60248201527f42616c616e6365206c657373207468656e207472616e7366657200000000000060448201526064016105ca565b6001600160a01b0383165f9081526005602052604090205460ff1615801561127957506001600160a01b0382165f9081526005602052604090205460ff16155b611281575f80fd5b6001600160a01b0383165f9081526003602052604081205460ff16806112be57506001600160a01b0383165f9081526003602052604090205460ff165b6115d957600c54600160a01b900460ff1661131b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c65642079657400000000000060448201526064016105ca565b600d5482111561136d5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e7420657863656564206d61782074726e7820616d6f756e7400000060448201526064016105ca565b60065460ff161561145557600b546001600160a01b0384811661010090920416148015906113a95750600c546001600160a01b03848116911614155b1561145557325f9081526004602052604090205443116114435760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016105ca565b325f9081526004602052604090204390555b600c546001600160a01b038481169116146114e4576007548261148c856001600160a01b03165f9081526001602052604090205490565b6114969190611dfa565b11156114e45760405162461bcd60e51b815260206004820152601960248201527f6d61782057616c6c6574206c696d69742065786365656465640000000000000060448201526064016105ca565b4780156114f4576114f44761161d565b600c546001600160a01b03908116908616036115315761152a6064611524600a54866117e290919063ffffffff16565b90611867565b91506115d7565b600c546001600160a01b03908116908516036115d7576115616064611524600954866117e290919063ffffffff16565b305f90815260016020526040902054600b549193509060ff166115d557600c54600160a81b900460ff16156115b2576115ad6115a8856115a3846008546118a8565b6118a8565b611658565b6115d5565b6115c56103e866038d7ea4c68000611d48565b8111156115d5576115d581611658565b505b505b611042848484846118bc565b5f81848411156116085760405162461bcd60e51b81526004016105ca9190611a6c565b505f6116148486611e0d565b95945050505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610a50573d5f803e3d5ffd5b600b805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061169857611698611db7565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611709573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172d9190611cd7565b8160018151811061174057611740611db7565b6001600160a01b039283166020918202929092010152600b5461176b91309161010090041684611048565b600b5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac947906117a79085905f90869030904290600401611e20565b5f604051808303815f87803b1580156117be575f80fd5b505af11580156117d0573d5f803e3d5ffd5b5050600b805460ff1916905550505050565b5f825f036117f157505f610534565b5f6117fc8385611d31565b9050826118098583611d48565b146118605760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ca565b9392505050565b5f61186083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119a1565b5f8183116118b65782611860565b50919050565b5f6118c78284611e0d565b6001600160a01b0386165f908152600160205260409020549091506118ec90846119cd565b6001600160a01b038087165f90815260016020526040808220939093559086168152205461191a9082611a0e565b6001600160a01b0385165f908152600160205260408082209290925530815220546119459083611a0e565b305f9081526001602090815260409182902092909255518281526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b5f81836119c15760405162461bcd60e51b81526004016105ca9190611a6c565b505f6116148486611d48565b5f61186083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115e5565b5f80611a1a8385611dfa565b9050838110156118605760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ca565b5f6020808352835180828501525f5b81811015611a9757858101830151858201604001528201611a7b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c17575f80fd5b8035611ad681611ab7565b919050565b5f8060408385031215611aec575f80fd5b8235611af781611ab7565b946020939093013593505050565b5f805f60608486031215611b17575f80fd5b8335611b2281611ab7565b92506020840135611b3281611ab7565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611b68575f80fd5b823567ffffffffffffffff80821115611b7f575f80fd5b818501915085601f830112611b92575f80fd5b813581811115611ba457611ba4611b43565b8060051b604051601f19603f83011681018181108582111715611bc957611bc9611b43565b604052918252848201925083810185019188831115611be6575f80fd5b938501935b82851015611c0b57611bfc85611acb565b84529385019392850192611beb565b98975050505050505050565b5f60208284031215611c27575f80fd5b813561186081611ab7565b8015158114610c17575f80fd5b5f8060408385031215611c50575f80fd5b8235611c5b81611ab7565b91506020830135611c6b81611c32565b809150509250929050565b5f8060408385031215611c87575f80fd5b8235611c9281611ab7565b91506020830135611c6b81611ab7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611ce7575f80fd5b815161186081611ab7565b5f805f60608486031215611d04575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761053457610534611d1d565b5f82611d6257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611d77575f80fd5b815161186081611c32565b6020808252818101527f4f6e6c79207465616d2063616e2063616c6c20746869732066756e6374696f6e604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611ddc57611ddc611d1d565b5060010190565b5f60208284031215611df3575f80fd5b5051919050565b8082018082111561053457610534611d1d565b8181038181111561053457610534611d1d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611e6e5784516001600160a01b031683529383019391830191600101611e49565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cfe5c3728bc622506de33f82f201bd0247a581941f4518ed315b42c246b62bfd64736f6c63430008140033

Deployed Bytecode Sourcemap

3589:10319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5243:85;;;;;;;;;;-1:-1:-1;5315:5:0;;;;;;;;;;;-1:-1:-1;;;5315:5:0;;;;5243:85;;;;5315:5;5243:85;:::i;:::-;;;;;;;;6088:163;;;;;;;;;;-1:-1:-1;6088:163:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;6088:163:0;1162:187:1;4184:39:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;4184:39:0;1354:177:1;5526:97:0;;;;;;;;;;-1:-1:-1;4110:19:0;5526:97;;6383:315;;;;;;;;;;-1:-1:-1;6383:315:0;;;;;:::i;:::-;;:::i;10747:872::-;;;;;;;;;;;;;:::i;:::-;;5433:85;;;;;;;;;;-1:-1:-1;5433:85:0;;4450:1;2139:36:1;;2127:2;2112:18;5433:85:0;1997:184:1;13575:239:0;;;;;;;;;;-1:-1:-1;13575:239:0;;;;;:::i;:::-;;:::i;6259:116::-;;;;;;;;;;-1:-1:-1;6259:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;6342:25:0;6319:4;6342:25;;;:18;:25;;;;;;;;;6259:116;13822:83;;;;;;;;;;-1:-1:-1;13822:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;13890:7:0;13869:4;13890:7;;;:4;:7;;;;;;;;;13822:83;10239:378;;;;;;;;;;;;;:::i;11733:71::-;;;;;;;;;;;;;:::i;4021:37::-;;;;;;;;;;-1:-1:-1;4021:37:0;;;;;;;-1:-1:-1;;;;;4021:37:0;;;;;;-1:-1:-1;;;;;3876:32:1;;;3858:51;;3846:2;3831:18;4021:37:0;3696:219:1;13094:226:0;;;;;;;;;;;;;:::i;5631:117::-;;;;;;;;;;-1:-1:-1;5631:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;5724:16:0;5697:7;5724:16;;;:7;:16;;;;;;;5631:117;11812:97;;;;;;;;;;;;;:::i;12085:244::-;;;;;;;;;;-1:-1:-1;12085:244:0;;;;;:::i;:::-;;:::i;11917:98::-;;;;;;;;;;;;;:::i;2446:79::-;;;;;;;;;;-1:-1:-1;2484:7:0;2511:6;-1:-1:-1;;;;;2511:6:0;2446:79;;5756:169;;;;;;;;;;-1:-1:-1;5756:169:0;;;;;:::i;:::-;;:::i;12859:227::-;;;;;;;;;;;;;:::i;3975:39::-;;;;;;;;;;-1:-1:-1;3975:39:0;;;;;;;;13328:239;;;;;;;;;;-1:-1:-1;13328:239:0;;;;;:::i;:::-;;:::i;5933:147::-;;;;;;;;;;-1:-1:-1;5933:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;6044:19:0;;;6017:7;6044:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5933:147;2660:156;;;;;;;;;;-1:-1:-1;2660:156:0;;;;;:::i;:::-;;:::i;12378:471::-;;;;;;;;;;-1:-1:-1;12378:471:0;;;;;:::i;:::-;;:::i;6088:163::-;6165:4;6182:39;320:10;6205:7;6214:6;6182:8;:39::i;:::-;-1:-1:-1;6239:4:0;6088:163;;;;;:::o;6383:315::-;6483:4;6500:36;6510:6;6518:9;6529:6;6500:9;:36::i;:::-;6547:121;6556:6;320:10;6578:89;6616:6;6578:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6578:19:0;;;;;;:11;:19;;;;;;;;320:10;6578:33;;;;;;;;;;:37;:89::i;:::-;6547:8;:121::i;:::-;-1:-1:-1;6686:4:0;6383:315;;;;;:::o;10747:872::-;2573:6;;-1:-1:-1;;;;;2573:6:0;320:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;;;;;;;;;10802:11:::1;::::0;-1:-1:-1;;;10802:11:0;::::1;;;10801:12;10793:47;;;::::0;-1:-1:-1;;;10793:47:0;;5927:2:1;10793:47:0::1;::::0;::::1;5909:21:1::0;5966:2;5946:18;;;5939:30;6005:25;5985:18;;;5978:53;6048:18;;10793:47:0::1;5725:347:1::0;10793:47:0::1;10962:15;:34:::0;;-1:-1:-1;;;;;;10962:34:0::1;::::0;::::1;::::0;;;;10908:42:::1;::::0;11007:58:::1;::::0;11024:4:::1;::::0;-1:-1:-1;;;;;10962:34:0::1;11039:15:::0;;::::1;;4110:19;11007:8;:58::i;:::-;11110:16;-1:-1:-1::0;;;;;11110:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11092:56:0::1;;11157:4;11164:16;-1:-1:-1::0;;;;;11164:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11092:96;::::0;-1:-1:-1;;;;;;11092:96:0::1;::::0;;;;;;-1:-1:-1;;;;;6563:15:1;;;11092:96:0::1;::::0;::::1;6545:34:1::0;6615:15;;6595:18;;;6588:43;6480:18;;11092:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11076:13;:112:::0;;-1:-1:-1;;;;;11076:112:0;;::::1;-1:-1:-1::0;;;;;;11076:112:0;;::::1;;::::0;;11199:15:::1;::::0;11076:112:::1;11199:15:::0;::::1;;:31;11238:21;11269:4;11275:24;11269:4:::0;-1:-1:-1;;;;;5724:16:0;5697:7;5724:16;;;:7;:16;;;;;;;5631:117;11275:24:::1;11300:1;11302::::0;11304:7:::1;2484::::0;2511:6;-1:-1:-1;;;;;2511:6:0;;2446:79;11304:7:::1;11199:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11199:129:0;;;-1:-1:-1;;;;;7001:15:1;;;11199:129:0::1;::::0;::::1;6983:34:1::0;7033:18;;;7026:34;;;;7076:18;;;7069:34;;;;7119:18;;;7112:34;7183:15;;;7162:19;;;7155:44;11312:15:0::1;7215:19:1::0;;;7208:35;6917:19;;11199:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11365:4;4110:19;11362:2;11354:10;;;;:::i;:::-;:15;;;;:::i;:::-;11339:12;:30:::0;11403:4:::1;11392:10;4110:19;11400:2;11392:10;:::i;:::-;:15;;;;:::i;:::-;11380:9;:27:::0;11443:4:::1;11432:10;4110:19;11440:2;11432:10;:::i;:::-;:15;;;;:::i;:::-;11418:11;:29:::0;11472:2:::1;11458:11;:16:::0;11498:2:::1;11485:10;:15:::0;11518:13:::1;::::0;11549:15:::1;::::0;11511:71:::1;::::0;-1:-1:-1;;;11511:71:0;;-1:-1:-1;;;;;11518:13:0::1;11549:15:::0;;::::1;::::0;::::1;11511:71;::::0;::::1;8266:51:1::0;-1:-1:-1;;8333:18:1;;;8326:34;11518:13:0;::::1;::::0;11511:29:::1;::::0;8239:18:1;;11511:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11593:11:0::1;:18:::0;;-1:-1:-1;;;;11593:18:0::1;-1:-1:-1::0;;;11593:18:0::1;::::0;;10747:872::o;13575:239::-;13659:14;;;;;-1:-1:-1;;;;;13659:14:0;13645:10;:28;13637:72;;;;-1:-1:-1;;;13637:72:0;;;;;;;:::i;:::-;13725:6;13720:87;13741:6;:13;13737:1;:17;13720:87;;;13792:5;13774:4;:15;13779:6;13786:1;13779:9;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;13774:15:0;;;;;;;;;;;-1:-1:-1;13774:15:0;:23;;-1:-1:-1;;13774:23:0;;;;;;;;;;13756:3;;;;:::i;:::-;;;;13720:87;;;;13575:239;:::o;10239:378::-;2573:6;;-1:-1:-1;;;;;2573:6:0;320:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;10300:11:::1;::::0;-1:-1:-1;;;10300:11:0;::::1;;;10292:49;;;::::0;-1:-1:-1;;;10292:49:0;;9456:2:1;10292:49:0::1;::::0;::::1;9438:21:1::0;9495:2;9475:18;;;9468:30;9534:28;9514:18;;;9507:56;9580:18;;10292:49:0::1;9254:350:1::0;10292:49:0::1;4110:19;10352:12;:22:::0;;;10385:9:::1;:19:::0;;;10415:11:::1;:21:::0;;;10452:27:::1;::::0;1500:25:1;;;10452:27:0::1;::::0;1488:2:1;1473:18;10452:27:0::1;;;;;;;10495:29;::::0;4110:19:::1;1500:25:1::0;;10495:29:0::1;::::0;1488:2:1;1473:18;10495:29:0::1;;;;;;;10540:30;::::0;4110:19:::1;1500:25:1::0;;10540:30:0::1;::::0;1488:2:1;1473:18;10540:30:0::1;;;;;;;10581:20;:26:::0;;-1:-1:-1;;10581:26:0::1;::::0;;10239:378::o;11733:71::-;2573:6;;-1:-1:-1;;;;;2573:6:0;320:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;11783:6:::1;:13:::0;;-1:-1:-1;;;;11783:13:0::1;-1:-1:-1::0;;;11783:13:0::1;::::0;;11733:71::o;13094:226::-;13158:14;;;;;-1:-1:-1;;;;;13158:14:0;13144:10;:28;13136:72;;;;-1:-1:-1;;;13136:72:0;;;;;;;:::i;:::-;13248:21;13280:32;13248:21;13280:12;:32::i;:::-;13125:195;13094:226::o;11812:97::-;2573:6;;-1:-1:-1;;;;;2573:6:0;320:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;11874:2:::1;11860:11;:16:::0;11900:1:::1;11887:10;:14:::0;11812:97::o;12085:244::-;12183:10;12164:30;;;;:18;:30;;;;;;;;12156:74;;;;-1:-1:-1;;;12156:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12241:25:0;;;;;;:18;:25;;;;;;;;;:33;;-1:-1:-1;;12241:33:0;;;;;;;;;;12290:31;;9777:51:1;;;9844:18;;;9837:50;12290:31:0;;9750:18:1;12290:31:0;;;;;;;12085:244;;:::o;11917:98::-;2573:6;;-1:-1:-1;;;;;2573:6:0;320:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;11981:1:::1;11967:11;:15:::0;;;11993:10:::1;:14:::0;11917:98::o;5756:169::-;5836:4;5853:42;320:10;5877:9;5888:6;5853:9;:42::i;12859:227::-;12923:14;;;;;-1:-1:-1;;;;;12923:14:0;12909:10;:28;12901:72;;;;-1:-1:-1;;;12901:72:0;;;;;;;:::i;:::-;13028:4;12984:23;5724:16;;;:7;:16;;;;;;13045:33;5724:16;13045;:33::i;13328:239::-;13411:14;;;;;-1:-1:-1;;;;;13411:14:0;13397:10;:28;13389:72;;;;-1:-1:-1;;;13389:72:0;;;;;;;:::i;:::-;13477:6;13472:88;13493:5;:12;13489:1;:16;13472:88;;;13544:4;13527;:14;13532:5;13538:1;13532:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;13527:14:0;;;;;;;;;;;-1:-1:-1;13527:14:0;:21;;-1:-1:-1;;13527:21:0;;;;;;;;;;13507:3;;;;:::i;:::-;;;;13472:88;;2660:156;2573:6;;-1:-1:-1;;;;;2573:6:0;320:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;2763:6:::1;::::0;;2742:38:::1;::::0;-1:-1:-1;;;;;2742:38:0;;::::1;::::0;2763:6;::::1;::::0;2742:38:::1;::::0;::::1;2791:6;:17:::0;;-1:-1:-1;;;;;;2791:17:0::1;-1:-1:-1::0;;;;;2791:17:0;;;::::1;::::0;;;::::1;::::0;;2660:156::o;12378:471::-;12515:14;;;;;-1:-1:-1;;;;;12515:14:0;12501:10;:28;12493:72;;;;-1:-1:-1;;;12493:72:0;;;;;;;:::i;:::-;12608:4;-1:-1:-1;;;;;12584:30:0;;;12576:91;;;;-1:-1:-1;;;12576:91:0;;10100:2:1;12576:91:0;;;10082:21:1;10139:2;10119:18;;;10112:30;10178:34;10158:18;;;10151:62;-1:-1:-1;;;10229:18:1;;;10222:47;10286:19;;12576:91:0;9898:413:1;12576:91:0;12702:30;;-1:-1:-1;;;12702:30:0;;12726:4;12702:30;;;3858:51:1;12679:20:0;;-1:-1:-1;;;;;12702:15:0;;;;;3831:18:1;;12702:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12679:53;;12761:12;12751:6;:22;;12743:49;;;;-1:-1:-1;;;12743:49:0;;10707:2:1;12743:49:0;;;10689:21:1;10746:2;10726:18;;;10719:30;-1:-1:-1;;;10765:18:1;;;10758:44;10819:18;;12743:49:0;10505:338:1;12743:49:0;12818:14;;12803:38;;-1:-1:-1;;;12803:38:0;;12818:14;;;;-1:-1:-1;;;;;12818:14:0;;;12803:38;;;8266:51:1;8333:18;;;8326:34;;;12803:14:0;;;;;8239:18:1;;12803:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12440:409;12378:471;;:::o;6706:339::-;-1:-1:-1;;;;;6800:20:0;;6792:69;;;;-1:-1:-1;;;6792:69:0;;11337:2:1;6792:69:0;;;11319:21:1;11376:2;11356:18;;;11349:30;11415:34;11395:18;;;11388:62;-1:-1:-1;;;11466:18:1;;;11459:34;11510:19;;6792:69:0;11135:400:1;6792:69:0;-1:-1:-1;;;;;6880:21:0;;6872:68;;;;-1:-1:-1;;;6872:68:0;;11742:2:1;6872:68:0;;;11724:21:1;11781:2;11761:18;;;11754:30;11820:34;11800:18;;;11793:62;-1:-1:-1;;;11871:18:1;;;11864:32;11913:19;;6872:68:0;11540:398:1;6872:68:0;-1:-1:-1;;;;;6951:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;7004:33;;1500:25:1;;;7004:33:0;;1473:18:1;7004:33:0;;;;;;;6706:339;;;:::o;7053:2227::-;7150:1;7141:6;:10;7133:64;;;;-1:-1:-1;;;7133:64:0;;12145:2:1;7133:64:0;;;12127:21:1;12184:2;12164:18;;;12157:30;12223:34;12203:18;;;12196:62;-1:-1:-1;;;12274:18:1;;;12267:39;12323:19;;7133:64:0;11943:405:1;7133:64:0;7235:6;7216:15;7226:4;-1:-1:-1;;;;;5724:16:0;5697:7;5724:16;;;:7;:16;;;;;;;5631:117;7216:15;:25;;7208:63;;;;-1:-1:-1;;;7208:63:0;;12555:2:1;7208:63:0;;;12537:21:1;12594:2;12574:18;;;12567:30;12633:28;12613:18;;;12606:56;12679:18;;7208:63:0;12353:350:1;7208:63:0;-1:-1:-1;;;;;7292:10:0;;;;;;:4;:10;;;;;;;;7291:11;:24;;;;-1:-1:-1;;;;;;7307:8:0;;;;;;:4;:8;;;;;;;;7306:9;7291:24;7283:33;;;;;;-1:-1:-1;;;;;7365:24:0;;7329:17;7365:24;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;7393:22:0;;;;;;:18;:22;;;;;;;;7365:50;7359:1863;;7444:11;;-1:-1:-1;;;7444:11:0;;;;7436:49;;;;-1:-1:-1;;;7436:49:0;;9456:2:1;7436:49:0;;;9438:21:1;9495:2;9475:18;;;9468:30;9534:28;9514:18;;;9507:56;9580:18;;7436:49:0;9254:350:1;7436:49:0;7518:12;;7508:6;:22;;7500:63;;;;-1:-1:-1;;;7500:63:0;;12910:2:1;7500:63:0;;;12892:21:1;12949:2;12929:18;;;12922:30;12988:31;12968:18;;;12961:59;13037:18;;7500:63:0;12708:353:1;7500:63:0;7584:20;;;;7580:494;;;7643:15;;-1:-1:-1;;;;;7629:30:0;;;7643:15;;;;;7629:30;;;;:62;;-1:-1:-1;7677:13:0;;-1:-1:-1;;;;;7663:28:0;;;7677:13;;7663:28;;7629:62;7625:432;;;7779:9;7750:39;;;;:28;:39;;;;;;7821:12;-1:-1:-1;7716:242:0;;;;-1:-1:-1;;;7716:242:0;;13268:2:1;7716:242:0;;;13250:21:1;13307:2;13287:18;;;13280:30;13346:34;13326:18;;;13319:62;13417:34;13397:18;;;13390:62;-1:-1:-1;;;13468:19:1;;;13461:40;13518:19;;7716:242:0;13066:477:1;7716:242:0;8010:9;7981:39;;;;:28;:39;;;;;8023:12;7981:54;;7625:432;8111:13;;-1:-1:-1;;;;;8105:19:0;;;8111:13;;8105:19;8102:129;;8177:9;;8167:6;8151:13;8161:2;-1:-1:-1;;;;;5724:16:0;5697:7;5724:16;;;:7;:16;;;;;;;5631:117;8151:13;:22;;;;:::i;:::-;:35;;8143:72;;;;-1:-1:-1;;;8143:72:0;;13880:2:1;8143:72:0;;;13862:21:1;13919:2;13899:18;;;13892:30;13958:27;13938:18;;;13931:55;14003:18;;8143:72:0;13678:349:1;8143:72:0;8277:21;8316:22;;8313:98;;8360:35;8373:21;8360:12;:35::i;:::-;8452:13;;-1:-1:-1;;;;;8452:13:0;;;8444:21;;;;8441:753;;8497:31;8524:3;8497:22;8508:10;;8497:6;:10;;:22;;;;:::i;:::-;:26;;:31::i;:::-;8485:43;;8441:753;;;8577:13;;-1:-1:-1;;;;;8577:13:0;;;8571:19;;;;8568:626;;8651:32;8679:3;8651:23;8662:11;;8651:6;:10;;:23;;;;:::i;:32::-;8751:4;8702:28;5724:16;;;:7;:16;;;;;;8780:6;;8639:44;;-1:-1:-1;5724:16:0;8780:6;;8776:403;;8813:6;;-1:-1:-1;;;8813:6:0;;;;8810:350;;;8847:67;8864:49;8868:6;8875:37;8879:20;8900:11;;8875:3;:37::i;:::-;8864:3;:49::i;:::-;8847:16;:67::i;:::-;8810:350;;;9017:12;9025:4;4110:19;9017:12;:::i;:::-;8994:20;:35;8991:146;;;9075:38;9092:20;9075:16;:38::i;:::-;8591:603;8568:626;7419:1803;7359:1863;9232:40;9247:4;9252:2;9255:6;9262:9;9232:14;:40::i;1377:190::-;1463:7;1499:12;1491:6;;;;1483:29;;;;-1:-1:-1;;;1483:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1523:9:0;1535:5;1539:1;1535;:5;:::i;:::-;1523:17;1377:190;-1:-1:-1;;;;;1377:190:0:o;10625:104::-;10682:14;;:31;;:14;;;;-1:-1:-1;;;;;10682:14:0;;:31;;;;;;;;;;;;:14;:31;;;;;;;;;;;;;;;;;;;9742:483;4532:6;:13;;-1:-1:-1;;4532:13:0;4541:4;4532:13;;;9844:16:::1;::::0;;9858:1:::1;9844:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9844:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9844:16:0::1;9820:40;;9889:4;9871;9876:1;9871:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9871:23:0::1;;;-1:-1:-1::0;;;;;9871:23:0::1;;;::::0;::::1;9915:15;;;;;;;;;-1:-1:-1::0;;;;;9915:15:0::1;-1:-1:-1::0;;;;;9915:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9905:4;9910:1;9905:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9905:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9980:15:::1;::::0;9948:62:::1;::::0;9965:4:::1;::::0;9980:15:::1;::::0;::::1;;9998:11:::0;9948:8:::1;:62::i;:::-;10021:15;::::0;:196:::1;::::0;-1:-1:-1;;;10021:196:0;;:15:::1;::::0;;::::1;-1:-1:-1::0;;;;;10021:15:0::1;::::0;:66:::1;::::0;:196:::1;::::0;10102:11;;10128:1:::1;::::0;10144:4;;10171::::1;::::0;10191:15:::1;::::0;10021:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4568:6:0;:14;;-1:-1:-1;;4568:14:0;;;-1:-1:-1;;;;9742:483:0:o;1575:246::-;1633:7;1657:1;1662;1657:6;1653:47;;-1:-1:-1;1687:1:0;1680:8;;1653:47;1710:9;1722:5;1726:1;1722;:5;:::i;:::-;1710:17;-1:-1:-1;1755:1:0;1746:5;1750:1;1710:17;1746:5;:::i;:::-;:10;1738:56;;;;-1:-1:-1;;;1738:56:0;;15352:2:1;1738:56:0;;;15334:21:1;15391:2;15371:18;;;15364:30;15430:34;15410:18;;;15403:62;-1:-1:-1;;;15481:18:1;;;15474:31;15522:19;;1738:56:0;15150:397:1;1738:56:0;1812:1;1575:246;-1:-1:-1;;;1575:246:0:o;1829:132::-;1887:7;1914:39;1918:1;1921;1914:39;;;;;;;;;;;;;;;;;:3;:39::i;11627:98::-;11684:7;11711:1;11709;:3;11708:9;;11716:1;11708:9;;;-1:-1:-1;11714:1:0;11627:98;-1:-1:-1;11627:98:0:o;9288:444::-;9414:23;9440:19;9449:10;9440:6;:19;:::i;:::-;-1:-1:-1;;;;;9489:15:0;;;;;;:7;:15;;;;;;9414:45;;-1:-1:-1;9489:27:0;;9509:6;9489:19;:27::i;:::-;-1:-1:-1;;;;;9471:15:0;;;;;;;:7;:15;;;;;;:45;;;;9549:18;;;;;;;:39;;9572:15;9549:22;:39::i;:::-;-1:-1:-1;;;;;9528:18:0;;;;;;:7;:18;;;;;;:60;;;;9641:4;9625:22;;;;:38;;9652:10;9625:26;:38::i;:::-;9616:4;9600:22;;;;:7;:22;;;;;;;;;:63;;;;9680:44;1500:25:1;;;-1:-1:-1;;;;;9680:44:0;;;;;;;;;;1473:18:1;9680:44:0;;;;;;;9391:341;9288:444;;;;:::o;1969:189::-;2055:7;2090:12;2083:5;2075:28;;;;-1:-1:-1;;;2075:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2114:9:0;2126:5;2130:1;2126;:5;:::i;1233:136::-;1291:7;1318:43;1322:1;1325;1318:43;;;;;;;;;;;;;;;;;:3;:43::i;1046:179::-;1104:7;;1136:5;1140:1;1136;:5;:::i;:::-;1124:17;;1165:1;1160;:6;;1152:46;;;;-1:-1:-1;;;1152:46:0;;15754:2:1;1152:46:0;;;15736:21:1;15793:2;15773:18;;;15766:30;15832:29;15812:18;;;15805:57;15879:18;;1152:46:0;15552:351:1;14:548;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:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:127::-;2247:10;2242:3;2238:20;2235:1;2228:31;2278:4;2275:1;2268:15;2302:4;2299:1;2292:15;2318:1121;2402:6;2433:2;2476;2464:9;2455:7;2451:23;2447:32;2444:52;;;2492:1;2489;2482:12;2444:52;2532:9;2519:23;2561:18;2602:2;2594:6;2591:14;2588:34;;;2618:1;2615;2608:12;2588:34;2656:6;2645:9;2641:22;2631:32;;2701:7;2694:4;2690:2;2686:13;2682:27;2672:55;;2723:1;2720;2713:12;2672:55;2759:2;2746:16;2781:2;2777;2774:10;2771:36;;;2787:18;;:::i;:::-;2833:2;2830:1;2826:10;2865:2;2859:9;2928:2;2924:7;2919:2;2915;2911:11;2907:25;2899:6;2895:38;2983:6;2971:10;2968:22;2963:2;2951:10;2948:18;2945:46;2942:72;;;2994:18;;:::i;:::-;3030:2;3023:22;3080:18;;;3114:15;;;;-1:-1:-1;3156:11:1;;;3152:20;;;3184:19;;;3181:39;;;3216:1;3213;3206:12;3181:39;3240:11;;;;3260:148;3276:6;3271:3;3268:15;3260:148;;;3342:23;3361:3;3342:23;:::i;:::-;3330:36;;3293:12;;;;3386;;;;3260:148;;;3427:6;2318:1121;-1:-1:-1;;;;;;;;2318:1121:1:o;3444:247::-;3503:6;3556:2;3544:9;3535:7;3531:23;3527:32;3524:52;;;3572:1;3569;3562:12;3524:52;3611:9;3598:23;3630:31;3655:5;3630:31;:::i;3920:118::-;4006:5;3999:13;3992:21;3985:5;3982:32;3972:60;;4028:1;4025;4018:12;4043:382;4108:6;4116;4169:2;4157:9;4148:7;4144:23;4140:32;4137:52;;;4185:1;4182;4175:12;4137:52;4224:9;4211:23;4243:31;4268:5;4243:31;:::i;:::-;4293:5;-1:-1:-1;4350:2:1;4335:18;;4322:32;4363:30;4322:32;4363:30;:::i;:::-;4412:7;4402:17;;;4043:382;;;;;:::o;4638:388::-;4706:6;4714;4767:2;4755:9;4746:7;4742:23;4738:32;4735:52;;;4783:1;4780;4773:12;4735:52;4822:9;4809:23;4841:31;4866:5;4841:31;:::i;:::-;4891:5;-1:-1:-1;4948:2:1;4933:18;;4920:32;4961:33;4920:32;4961:33;:::i;5364:356::-;5566:2;5548:21;;;5585:18;;;5578:30;5644:34;5639:2;5624:18;;5617:62;5711:2;5696:18;;5364:356::o;6077:251::-;6147:6;6200:2;6188:9;6179:7;6175:23;6171:32;6168:52;;;6216:1;6213;6206:12;6168:52;6248:9;6242:16;6267:31;6292:5;6267:31;:::i;7254:306::-;7342:6;7350;7358;7411:2;7399:9;7390:7;7386:23;7382:32;7379:52;;;7427:1;7424;7417:12;7379:52;7456:9;7450:16;7440:26;;7506:2;7495:9;7491:18;7485:25;7475:35;;7550:2;7539:9;7535:18;7529:25;7519:35;;7254:306;;;;;:::o;7565:127::-;7626:10;7621:3;7617:20;7614:1;7607:31;7657:4;7654:1;7647:15;7681:4;7678:1;7671:15;7697:168;7770:9;;;7801;;7818:15;;;7812:22;;7798:37;7788:71;;7839:18;;:::i;7870:217::-;7910:1;7936;7926:132;;7980:10;7975:3;7971:20;7968:1;7961:31;8015:4;8012:1;8005:15;8043:4;8040:1;8033:15;7926:132;-1:-1:-1;8072:9:1;;7870:217::o;8371:245::-;8438:6;8491:2;8479:9;8470:7;8466:23;8462:32;8459:52;;;8507:1;8504;8497:12;8459:52;8539:9;8533:16;8558:28;8580:5;8558:28;:::i;8621:356::-;8823:2;8805:21;;;8842:18;;;8835:30;8901:34;8896:2;8881:18;;8874:62;8968:2;8953:18;;8621:356::o;8982:127::-;9043:10;9038:3;9034:20;9031:1;9024:31;9074:4;9071:1;9064:15;9098:4;9095:1;9088:15;9114:135;9153:3;9174:17;;;9171:43;;9194:18;;:::i;:::-;-1:-1:-1;9241:1:1;9230:13;;9114:135::o;10316:184::-;10386:6;10439:2;10427:9;10418:7;10414:23;10410:32;10407:52;;;10455:1;10452;10445:12;10407:52;-1:-1:-1;10478:16:1;;10316:184;-1:-1:-1;10316:184:1:o;13548:125::-;13613:9;;;13634:10;;;13631:36;;;13647:18;;:::i;14032:128::-;14099:9;;;14120:11;;;14117:37;;;14134:18;;:::i;14165:980::-;14427:4;14475:3;14464:9;14460:19;14506:6;14495:9;14488:25;14532:2;14570:6;14565:2;14554:9;14550:18;14543:34;14613:3;14608:2;14597:9;14593:18;14586:31;14637:6;14672;14666:13;14703:6;14695;14688:22;14741:3;14730:9;14726:19;14719:26;;14780:2;14772:6;14768:15;14754:29;;14801:1;14811:195;14825:6;14822:1;14819:13;14811:195;;;14890:13;;-1:-1:-1;;;;;14886:39:1;14874:52;;14981:15;;;;14946:12;;;;14922:1;14840:9;14811:195;;;-1:-1:-1;;;;;;;15062:32:1;;;;15057:2;15042:18;;15035:60;-1:-1:-1;;;15126:3:1;15111:19;15104:35;15023:3;14165:980;-1:-1:-1;;;14165:980:1:o

Swarm Source

ipfs://cfe5c3728bc622506de33f82f201bd0247a581941f4518ed315b42c246b62bfd

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.