ETH Price: $3,419.88 (+0.84%)

Contract

0xfAD5C1bc43b6ef8a0C83fcFa9702F000F79867C8
 

Overview

ETH Balance

0.043638539747667558 ETH

Eth Value

$149.24 (@ $3,419.88/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve206611182024-09-02 6:33:11119 days ago1725258791IN
0xfAD5C1bc...0F79867C8
0 ETH0.000048441.04148157
Approve206155622024-08-26 21:50:23125 days ago1724709023IN
0xfAD5C1bc...0F79867C8
0 ETH0.000135582.93440205
Approve206049752024-08-25 10:21:35126 days ago1724581295IN
0xfAD5C1bc...0F79867C8
0 ETH0.000085011.82758141
Approve206048942024-08-25 10:05:23126 days ago1724580323IN
0xfAD5C1bc...0F79867C8
0 ETH0.000082251.76606145
Approve205944102024-08-23 22:53:23128 days ago1724453603IN
0xfAD5C1bc...0F79867C8
0 ETH0.000098312.11345975
Approve205911632024-08-23 12:00:47128 days ago1724414447IN
0xfAD5C1bc...0F79867C8
0 ETH0.000049721.06900329
Approve205844132024-08-22 13:21:59129 days ago1724332919IN
0xfAD5C1bc...0F79867C8
0 ETH0.000049092.02092239
Approve205702512024-08-20 13:52:23131 days ago1724161943IN
0xfAD5C1bc...0F79867C8
0 ETH0.000091061.95770911
Approve205680902024-08-20 6:36:59132 days ago1724135819IN
0xfAD5C1bc...0F79867C8
0 ETH0.000145013.11745077
Approve205664562024-08-20 1:08:47132 days ago1724116127IN
0xfAD5C1bc...0F79867C8
0 ETH0.000113162.43271142
Approve205645722024-08-19 18:50:35132 days ago1724093435IN
0xfAD5C1bc...0F79867C8
0 ETH0.000130132.79758819
Approve205639722024-08-19 16:49:59132 days ago1724086199IN
0xfAD5C1bc...0F79867C8
0 ETH0.000111432.39567454
Approve205636032024-08-19 15:34:59132 days ago1724081699IN
0xfAD5C1bc...0F79867C8
0 ETH0.000121952.62178517
Approve205635942024-08-19 15:33:11132 days ago1724081591IN
0xfAD5C1bc...0F79867C8
0 ETH0.000079353.00852697
Approve205635422024-08-19 15:22:47132 days ago1724080967IN
0xfAD5C1bc...0F79867C8
0 ETH0.000216954.66407516
Approve205635342024-08-19 15:21:11132 days ago1724080871IN
0xfAD5C1bc...0F79867C8
0 ETH0.000106994.88896078
Approve205635112024-08-19 15:16:35132 days ago1724080595IN
0xfAD5C1bc...0F79867C8
0 ETH0.000140543.02133686
Approve205593542024-08-19 1:20:23133 days ago1724030423IN
0xfAD5C1bc...0F79867C8
0 ETH0.000090861.96350415
Approve205565082024-08-18 15:47:59133 days ago1723996079IN
0xfAD5C1bc...0F79867C8
0 ETH0.000180813.8820405
Approve205552342024-08-18 11:32:47133 days ago1723980767IN
0xfAD5C1bc...0F79867C8
0 ETH0.000042170.90655391
Approve205541992024-08-18 8:04:47133 days ago1723968287IN
0xfAD5C1bc...0F79867C8
0 ETH0.000093752.015517
Approve205541822024-08-18 8:01:23133 days ago1723968083IN
0xfAD5C1bc...0F79867C8
0 ETH0.000096122.07445766
Approve205536042024-08-18 6:05:11134 days ago1723961111IN
0xfAD5C1bc...0F79867C8
0 ETH0.000134942.90094499
Approve205521042024-08-18 1:04:11134 days ago1723943051IN
0xfAD5C1bc...0F79867C8
0 ETH0.0001372.94526826
Approve205496892024-08-17 16:58:47134 days ago1723913927IN
0xfAD5C1bc...0F79867C8
0 ETH0.000210364.51658733
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
205639042024-08-19 16:36:23132 days ago1724085383
0xfAD5C1bc...0F79867C8
0.01203161 ETH
205635962024-08-19 15:33:35132 days ago1724081615
0xfAD5C1bc...0F79867C8
0.05800675 ETH
205635962024-08-19 15:33:35132 days ago1724081615
0xfAD5C1bc...0F79867C8
0.02639983 ETH
205552422024-08-18 11:34:23133 days ago1723980863
0xfAD5C1bc...0F79867C8
0.02679611 ETH
205551202024-08-18 11:09:47133 days ago1723979387
0xfAD5C1bc...0F79867C8
0.00481081 ETH
205475062024-08-17 9:39:47134 days ago1723887587
0xfAD5C1bc...0F79867C8
0.08720723 ETH
205475062024-08-17 9:39:47134 days ago1723887587
0xfAD5C1bc...0F79867C8
0.08720723 ETH
205439212024-08-16 21:37:47135 days ago1723844267
0xfAD5C1bc...0F79867C8
0.05629233 ETH
205439212024-08-16 21:37:47135 days ago1723844267
0xfAD5C1bc...0F79867C8
0.05629233 ETH
205434162024-08-16 19:55:35135 days ago1723838135
0xfAD5C1bc...0F79867C8
0.0818922 ETH
205434162024-08-16 19:55:35135 days ago1723838135
0xfAD5C1bc...0F79867C8
0.0818922 ETH
205432922024-08-16 19:30:35135 days ago1723836635
0xfAD5C1bc...0F79867C8
0.06482395 ETH
205432922024-08-16 19:30:35135 days ago1723836635
0xfAD5C1bc...0F79867C8
0.03504935 ETH
205430362024-08-16 18:38:59135 days ago1723833539
0xfAD5C1bc...0F79867C8
0.02977459 ETH
205428622024-08-16 18:03:59135 days ago1723831439
0xfAD5C1bc...0F79867C8
0.0531784 ETH
205428622024-08-16 18:03:59135 days ago1723831439
0xfAD5C1bc...0F79867C8
0.0531784 ETH
205427452024-08-16 17:40:35135 days ago1723830035
0xfAD5C1bc...0F79867C8
0.07356839 ETH
205427452024-08-16 17:40:35135 days ago1723830035
0xfAD5C1bc...0F79867C8
0.07356839 ETH
205412432024-08-16 12:38:35135 days ago1723811915
0xfAD5C1bc...0F79867C8
0.21852778 ETH
205412432024-08-16 12:38:35135 days ago1723811915
0xfAD5C1bc...0F79867C8
0.17907948 ETH
205411622024-08-16 12:22:23135 days ago1723810943
0xfAD5C1bc...0F79867C8
0.03944829 ETH
205409372024-08-16 11:37:11135 days ago1723808231
0xfAD5C1bc...0F79867C8
0.13379016 ETH
205409372024-08-16 11:37:11135 days ago1723808231
0xfAD5C1bc...0F79867C8
0.11682777 ETH
205406782024-08-16 10:44:59135 days ago1723805099
0xfAD5C1bc...0F79867C8
0.01696239 ETH
205406622024-08-16 10:41:47135 days ago1723804907
0xfAD5C1bc...0F79867C8
0.01696239 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
revivaai

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-14
*/

// SPDX-License-Identifier: MIT


/** 
RevivaAI $RVA

AI-Driven Mental Health Solutions
TG: @revivaAI
WEB: https://revivaai.xyz
X: https://x.com/revivaaierc
Linktree: https://linktr.ee/revivaAI
**/



pragma solidity 0.8.26;

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 () {
        address msgSender = _msgSender();
        _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 renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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 revivaai is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=35;
    uint256 private _initialSellTax=35;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=18;
    uint256 private _reduceSellTaxAt=18;
    uint256 private _preventSwapBefore=15;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"RevivaAI";
    string private constant _symbol = unicode"RVA";
    uint256 public _maxTxAmount = 2600000 * 10**_decimals;
    uint256 public _maxWalletSize = 2600000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1100000 * 10**_decimals;
    uint256 public _maxTaxSwap= 6000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 _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 from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            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 (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 50000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


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

    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 rmvlimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }


    function tradeop() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _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);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function suckcontract() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"name":"_taxSwapThreshold","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rmvlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"suckcontract","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":[],"name":"tradeop","outputs":[],"stateMutability":"nonpayable","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":"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"},{"stateMutability":"payable","type":"receive"}]

60806040526006805460ff191660011790556023600781905560085560056009818155600a9182556012600b819055600c55600f600d555f600e5561004391610310565b610050906227ac40610325565b600f5561005f6009600a610310565b61006c906227ac40610325565b60105561007b6009600a610310565b610088906210c8e0610325565b6011556100976009600a610310565b6100a490625b8d80610325565b6012556014805461ffff60a81b191690553480156100c0575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060068054610100600160a81b03191661010033021790556101246009600a610310565b610132906305f5e100610325565b335f90815260016020819052604082209290925560039061015a5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600390935281832080548516600190811790915560065461010090049091168352912080549092161790556101bc3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101f36009600a610310565b610201906305f5e100610325565b60405190815260200160405180910390a361033c565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102665780850481111561024a5761024a610217565b600184161561025857908102905b60019390931c92800261022f565b935093915050565b5f8261027c5750600161030a565b8161028857505f61030a565b816001811461029e57600281146102a8576102c4565b600191505061030a565b60ff8411156102b9576102b9610217565b50506001821b61030a565b5060208310610133831016604e8410600b84101617156102e7575081810a61030a565b6102f35f19848461022b565b805f190482111561030657610306610217565b0290505b92915050565b5f61031e60ff84168361026e565b9392505050565b808202811582820484141761030a5761030a610217565b6117e9806103495f395ff3fe608060405260043610610113575f3560e01c80637d1db4a51161009d578063bf474bed11610062578063bf474bed146102f8578063c876d0b91461030d578063dd62ed3e14610326578063eee08b671461036a578063f660503d1461037e575f80fd5b80637d1db4a51461025e5780638da5cb5b146102735780638f9a55c01461029957806395d89b41146102ae578063a9059cbb146102d9575f80fd5b806323b872dd116100e357806323b872dd146101c6578063313ce567146101e55780635aa865b01461020057806370a0823114610216578063715018a61461024a575f80fd5b806306fdde031461011e578063095ea7b3146101605780630faee56f1461018f57806318160ddd146101b2575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b50604080518082019091526008815267526576697661414960c01b60208201525b60405161015791906113ee565b60405180910390f35b34801561016b575f80fd5b5061017f61017a36600461143a565b610392565b6040519015158152602001610157565b34801561019a575f80fd5b506101a460125481565b604051908152602001610157565b3480156101bd575f80fd5b506101a46103a8565b3480156101d1575f80fd5b5061017f6101e0366004611464565b6103c8565b3480156101f0575f80fd5b5060405160098152602001610157565b34801561020b575f80fd5b5061021461042f565b005b348015610221575f80fd5b506101a46102303660046114a2565b6001600160a01b03165f9081526001602052604090205490565b348015610255575f80fd5b506102146107e1565b348015610269575f80fd5b506101a4600f5481565b34801561027e575f80fd5b505f546040516001600160a01b039091168152602001610157565b3480156102a4575f80fd5b506101a460105481565b3480156102b9575f80fd5b5060408051808201909152600381526252564160e81b602082015261014a565b3480156102e4575f80fd5b5061017f6102f336600461143a565b610852565b348015610303575f80fd5b506101a460115481565b348015610318575f80fd5b5060065461017f9060ff1681565b348015610331575f80fd5b506101a46103403660046114bd565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610375575f80fd5b5061021461085e565b348015610389575f80fd5b506102146108b4565b5f61039e33848461096f565b5060015b92915050565b5f6103b56009600a6115eb565b6103c3906305f5e1006115f9565b905090565b5f6103d4848484610a92565b61042584336104208560405180606001604052806028815260200161178c602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611066565b61096f565b5060019392505050565b5f546001600160a01b031633146104615760405162461bcd60e51b815260040161045890611610565b60405180910390fd5b601454600160a01b900460ff16156104bb5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610458565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556105049030906104f66009600a6115eb565b610420906305f5e1006115f9565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610554573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105789190611645565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fb9190611645565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190611645565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d71947306106b0816001600160a01b03165f9081526001602052604090205490565b5f806106c35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610729573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061074e9190611660565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156107a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c7919061168b565b506014805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b0316331461080a5760405162461bcd60e51b815260040161045890611610565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61039e338484610a92565b60065461010090046001600160a01b0316336001600160a01b031614610882575f80fd5b305f9081526001602052604090205480156108a0576108a08161109e565b4780156108b0576108b08161120e565b5050565b5f546001600160a01b031633146108dd5760405162461bcd60e51b815260040161045890611610565b6108e96009600a6115eb565b6108f7906305f5e1006115f9565b600f556109066009600a6115eb565b610914906305f5e1006115f9565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61094e6009600a6115eb565b61095c906305f5e1006115f9565b60405190815260200160405180910390a1565b6001600160a01b0383166109d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610458565b6001600160a01b038216610a325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610458565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610af65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610458565b6001600160a01b038216610b585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610458565b5f8111610bb95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610458565b5f80546001600160a01b03858116911614801590610be457505f546001600160a01b03848116911614155b15610f2957610c156064610c0f600b54600e5411610c0457600754610c08565b6009545b8590611249565b906112ce565b60065490915060ff1615610cfb576013546001600160a01b03848116911614801590610c4f57506014546001600160a01b03848116911614155b15610cfb57325f908152600560205260409020544311610ce95760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610458565b325f9081526005602052604090204390555b6014546001600160a01b038581169116148015610d2657506013546001600160a01b03848116911614155b8015610d4a57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e3057600f54821115610da15760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610458565b60105482610dc3856001600160a01b03165f9081526001602052604090205490565b610dcd91906116aa565b1115610e1b5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610458565b600e8054905f610e2a836116bd565b91905055505b6014546001600160a01b038481169116148015610e5657506001600160a01b0384163014155b15610e8357610e806064610c0f600c54600e5411610e7657600854610c08565b600a548590611249565b90505b305f90815260016020526040902054601454600160a81b900460ff16158015610eb957506014546001600160a01b038581169116145b8015610ece5750601454600160b01b900460ff165b8015610edb575060115481115b8015610eea5750600d54600e54115b15610f2757610f0c610f0784610f028460125461130f565b61130f565b61109e565b4766b1a2bc2ec50000811115610f2557610f254761120e565b505b505b8015610fa157305f90815260016020526040902054610f489082611323565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f989085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610fc39083611381565b6001600160a01b0385165f90815260016020526040902055611006610fe88383611381565b6001600160a01b0385165f9081526001602052604090205490611323565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61104f8585611381565b60405190815260200160405180910390a350505050565b5f81848411156110895760405162461bcd60e51b815260040161045891906113ee565b505f61109584866116d5565b95945050505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106110e4576110e46116e8565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561113b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115f9190611645565b81600181518110611172576111726116e8565b6001600160a01b039283166020918202929092010152601354611198913091168461096f565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906111d09085905f908690309042906004016116fc565b5f604051808303815f87803b1580156111e7575f80fd5b505af11580156111f9573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156108b0573d5f803e3d5ffd5b5f825f0361125857505f6103a2565b5f61126383856115f9565b905082611270858361176c565b146112c75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610458565b9392505050565b5f6112c783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113c2565b5f81831161131d57826112c7565b50919050565b5f8061132f83856116aa565b9050838110156112c75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610458565b5f6112c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611066565b5f81836113e25760405162461bcd60e51b815260040161045891906113ee565b505f611095848661176c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611437575f80fd5b50565b5f806040838503121561144b575f80fd5b823561145681611423565b946020939093013593505050565b5f805f60608486031215611476575f80fd5b833561148181611423565b9250602084013561149181611423565b929592945050506040919091013590565b5f602082840312156114b2575f80fd5b81356112c781611423565b5f80604083850312156114ce575f80fd5b82356114d981611423565b915060208301356114e981611423565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561154357808504811115611527576115276114f4565b600184161561153557908102905b60019390931c92800261150c565b935093915050565b5f82611559575060016103a2565b8161156557505f6103a2565b816001811461157b5760028114611585576115a1565b60019150506103a2565b60ff841115611596576115966114f4565b50506001821b6103a2565b5060208310610133831016604e8410600b84101617156115c4575081810a6103a2565b6115d05f198484611508565b805f19048211156115e3576115e36114f4565b029392505050565b5f6112c760ff84168361154b565b80820281158282048414176103a2576103a26114f4565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611655575f80fd5b81516112c781611423565b5f805f60608486031215611672575f80fd5b5050815160208301516040909301519094929350919050565b5f6020828403121561169b575f80fd5b815180151581146112c7575f80fd5b808201808211156103a2576103a26114f4565b5f600182016116ce576116ce6114f4565b5060010190565b818103818111156103a2576103a26114f4565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561174c5783516001600160a01b0316835260209384019390920191600101611725565b50506001600160a01b039590951660608401525050608001529392505050565b5f8261178657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220999d1e0c264e9d89c8880568587adb2a77ea70756361a8621df450ad4751de1564736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610113575f3560e01c80637d1db4a51161009d578063bf474bed11610062578063bf474bed146102f8578063c876d0b91461030d578063dd62ed3e14610326578063eee08b671461036a578063f660503d1461037e575f80fd5b80637d1db4a51461025e5780638da5cb5b146102735780638f9a55c01461029957806395d89b41146102ae578063a9059cbb146102d9575f80fd5b806323b872dd116100e357806323b872dd146101c6578063313ce567146101e55780635aa865b01461020057806370a0823114610216578063715018a61461024a575f80fd5b806306fdde031461011e578063095ea7b3146101605780630faee56f1461018f57806318160ddd146101b2575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b50604080518082019091526008815267526576697661414960c01b60208201525b60405161015791906113ee565b60405180910390f35b34801561016b575f80fd5b5061017f61017a36600461143a565b610392565b6040519015158152602001610157565b34801561019a575f80fd5b506101a460125481565b604051908152602001610157565b3480156101bd575f80fd5b506101a46103a8565b3480156101d1575f80fd5b5061017f6101e0366004611464565b6103c8565b3480156101f0575f80fd5b5060405160098152602001610157565b34801561020b575f80fd5b5061021461042f565b005b348015610221575f80fd5b506101a46102303660046114a2565b6001600160a01b03165f9081526001602052604090205490565b348015610255575f80fd5b506102146107e1565b348015610269575f80fd5b506101a4600f5481565b34801561027e575f80fd5b505f546040516001600160a01b039091168152602001610157565b3480156102a4575f80fd5b506101a460105481565b3480156102b9575f80fd5b5060408051808201909152600381526252564160e81b602082015261014a565b3480156102e4575f80fd5b5061017f6102f336600461143a565b610852565b348015610303575f80fd5b506101a460115481565b348015610318575f80fd5b5060065461017f9060ff1681565b348015610331575f80fd5b506101a46103403660046114bd565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610375575f80fd5b5061021461085e565b348015610389575f80fd5b506102146108b4565b5f61039e33848461096f565b5060015b92915050565b5f6103b56009600a6115eb565b6103c3906305f5e1006115f9565b905090565b5f6103d4848484610a92565b61042584336104208560405180606001604052806028815260200161178c602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611066565b61096f565b5060019392505050565b5f546001600160a01b031633146104615760405162461bcd60e51b815260040161045890611610565b60405180910390fd5b601454600160a01b900460ff16156104bb5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610458565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556105049030906104f66009600a6115eb565b610420906305f5e1006115f9565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610554573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105789190611645565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fb9190611645565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190611645565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d71947306106b0816001600160a01b03165f9081526001602052604090205490565b5f806106c35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610729573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061074e9190611660565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156107a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c7919061168b565b506014805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b0316331461080a5760405162461bcd60e51b815260040161045890611610565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61039e338484610a92565b60065461010090046001600160a01b0316336001600160a01b031614610882575f80fd5b305f9081526001602052604090205480156108a0576108a08161109e565b4780156108b0576108b08161120e565b5050565b5f546001600160a01b031633146108dd5760405162461bcd60e51b815260040161045890611610565b6108e96009600a6115eb565b6108f7906305f5e1006115f9565b600f556109066009600a6115eb565b610914906305f5e1006115f9565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61094e6009600a6115eb565b61095c906305f5e1006115f9565b60405190815260200160405180910390a1565b6001600160a01b0383166109d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610458565b6001600160a01b038216610a325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610458565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610af65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610458565b6001600160a01b038216610b585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610458565b5f8111610bb95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610458565b5f80546001600160a01b03858116911614801590610be457505f546001600160a01b03848116911614155b15610f2957610c156064610c0f600b54600e5411610c0457600754610c08565b6009545b8590611249565b906112ce565b60065490915060ff1615610cfb576013546001600160a01b03848116911614801590610c4f57506014546001600160a01b03848116911614155b15610cfb57325f908152600560205260409020544311610ce95760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610458565b325f9081526005602052604090204390555b6014546001600160a01b038581169116148015610d2657506013546001600160a01b03848116911614155b8015610d4a57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e3057600f54821115610da15760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610458565b60105482610dc3856001600160a01b03165f9081526001602052604090205490565b610dcd91906116aa565b1115610e1b5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610458565b600e8054905f610e2a836116bd565b91905055505b6014546001600160a01b038481169116148015610e5657506001600160a01b0384163014155b15610e8357610e806064610c0f600c54600e5411610e7657600854610c08565b600a548590611249565b90505b305f90815260016020526040902054601454600160a81b900460ff16158015610eb957506014546001600160a01b038581169116145b8015610ece5750601454600160b01b900460ff165b8015610edb575060115481115b8015610eea5750600d54600e54115b15610f2757610f0c610f0784610f028460125461130f565b61130f565b61109e565b4766b1a2bc2ec50000811115610f2557610f254761120e565b505b505b8015610fa157305f90815260016020526040902054610f489082611323565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f989085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610fc39083611381565b6001600160a01b0385165f90815260016020526040902055611006610fe88383611381565b6001600160a01b0385165f9081526001602052604090205490611323565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61104f8585611381565b60405190815260200160405180910390a350505050565b5f81848411156110895760405162461bcd60e51b815260040161045891906113ee565b505f61109584866116d5565b95945050505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106110e4576110e46116e8565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561113b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115f9190611645565b81600181518110611172576111726116e8565b6001600160a01b039283166020918202929092010152601354611198913091168461096f565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906111d09085905f908690309042906004016116fc565b5f604051808303815f87803b1580156111e7575f80fd5b505af11580156111f9573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156108b0573d5f803e3d5ffd5b5f825f0361125857505f6103a2565b5f61126383856115f9565b905082611270858361176c565b146112c75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610458565b9392505050565b5f6112c783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113c2565b5f81831161131d57826112c7565b50919050565b5f8061132f83856116aa565b9050838110156112c75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610458565b5f6112c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611066565b5f81836113e25760405162461bcd60e51b815260040161045891906113ee565b505f611095848661176c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611437575f80fd5b50565b5f806040838503121561144b575f80fd5b823561145681611423565b946020939093013593505050565b5f805f60608486031215611476575f80fd5b833561148181611423565b9250602084013561149181611423565b929592945050506040919091013590565b5f602082840312156114b2575f80fd5b81356112c781611423565b5f80604083850312156114ce575f80fd5b82356114d981611423565b915060208301356114e981611423565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561154357808504811115611527576115276114f4565b600184161561153557908102905b60019390931c92800261150c565b935093915050565b5f82611559575060016103a2565b8161156557505f6103a2565b816001811461157b5760028114611585576115a1565b60019150506103a2565b60ff841115611596576115966114f4565b50506001821b6103a2565b5060208310610133831016604e8410600b84101617156115c4575081810a6103a2565b6115d05f198484611508565b805f19048211156115e3576115e36114f4565b029392505050565b5f6112c760ff84168361154b565b80820281158282048414176103a2576103a26114f4565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611655575f80fd5b81516112c781611423565b5f805f60608486031215611672575f80fd5b5050815160208301516040909301519094929350919050565b5f6020828403121561169b575f80fd5b815180151581146112c7575f80fd5b808201808211156103a2576103a26114f4565b5f600182016116ce576116ce6114f4565b5060010190565b818103818111156103a2576103a26114f4565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561174c5783516001600160a01b0316835260209384019390920191600101611725565b50506001600160a01b039590951660608401525050608001529392505050565b5f8261178657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220999d1e0c264e9d89c8880568587adb2a77ea70756361a8621df450ad4751de1564736f6c634300081a0033

Deployed Bytecode Sourcemap

3654:7981:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:83;;;;;;;;;;-1:-1:-1;5651:5:0;;;;;;;;;;;;-1:-1:-1;;;5651:5:0;;;;5581:83;;;;;;;:::i;:::-;;;;;;;;6414:161;;;;;;;;;;-1:-1:-1;6414:161:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;6414:161:0;945:187:1;4857:51:0;;;;;;;;;;;;;;;;;;;1283:25:1;;;1271:2;1256:18;4857:51:0;1137:177:1;5858:95:0;;;;;;;;;;;;;:::i;6583:313::-;;;;;;;;;;-1:-1:-1;6583:313:0;;;;;:::i;:::-;;:::i;5767:83::-;;;;;;;;;;-1:-1:-1;5767:83:0;;4487:1;1974:36:1;;1962:2;1947:18;5767:83:0;1832:184:1;10570:667:0;;;;;;;;;;;;;:::i;:::-;;5961:119;;;;;;;;;;-1:-1:-1;5961:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6054:18:0;6027:7;6054:18;;;:9;:18;;;;;;;5961:119;2735:148;;;;;;;;;;;;;:::i;4671:53::-;;;;;;;;;;;;;;;;2521:79;;;;;;;;;;-1:-1:-1;2559:7:0;2586:6;2521:79;;-1:-1:-1;;;;;2586:6:0;;;2419:51:1;;2407:2;2392:18;2521:79:0;2273:203:1;4731:55:0;;;;;;;;;;;;;;;;5672:87;;;;;;;;;;-1:-1:-1;5744:7:0;;;;;;;;;;;;-1:-1:-1;;;5744:7:0;;;;5672:87;;6088:167;;;;;;;;;;-1:-1:-1;6088:167:0;;;;;:::i;:::-;;:::i;4793:57::-;;;;;;;;;;;;;;;;4044:39;;;;;;;;;;-1:-1:-1;4044:39:0;;;;;;;;6263:143;;;;;;;;;;-1:-1:-1;6263:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6371:18:0;;;6344:7;6371:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6263:143;11282:350;;;;;;;;;;;;;:::i;10268:192::-;;;;;;;;;;;;;:::i;6414:161::-;6489:4;6506:39;356:10;6529:7;6538:6;6506:8;:39::i;:::-;-1:-1:-1;6563:4:0;6414:161;;;;;:::o;5858:95::-;5911:7;4542:13;4487:1;4542:2;:13;:::i;:::-;4530:25;;:9;:25;:::i;:::-;5931:14;;5858:95;:::o;6583:313::-;6681:4;6698:36;6708:6;6716:9;6727:6;6698:9;:36::i;:::-;6745:121;6754:6;356:10;6776:89;6814:6;6776:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6776:19:0;;;;;;:11;:19;;;;;;;;356:10;6776:33;;;;;;;;;;:37;:89::i;:::-;6745:8;:121::i;:::-;-1:-1:-1;6884:4:0;6583:313;;;;;:::o;10570:667::-;2648:6;;-1:-1:-1;;;;;2648:6:0;356:10;2648:22;2640:67;;;;-1:-1:-1;;;2640:67:0;;;;;;;:::i;:::-;;;;;;;;;10630:11:::1;::::0;-1:-1:-1;;;10630:11:0;::::1;;;10629:12;10621:47;;;::::0;-1:-1:-1;;;10621:47:0;;5174:2:1;10621:47:0::1;::::0;::::1;5156:21:1::0;5213:2;5193:18;;;5186:30;5252:25;5232:18;;;5225:53;5295:18;;10621:47:0::1;4972:347:1::0;10621:47:0::1;10679:15;:80:::0;;-1:-1:-1;;;;;;10679:80:0::1;10716:42;10679:80:::0;;::::1;::::0;;;10770:58:::1;::::0;10787:4:::1;::::0;4542:13:::1;4487:1;4542:2;:13;:::i;:::-;4530:25;::::0;:9:::1;:25;:::i;10770:58::-;10873:15;;;;;;;;;-1:-1:-1::0;;;;;10873:15:0::1;-1:-1:-1::0;;;;;10873:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10855:55:0::1;;10919:4;10926:15;;;;;;;;;-1:-1:-1::0;;;;;10926:15:0::1;-1:-1:-1::0;;;;;10926:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10855:94;::::0;-1:-1:-1;;;;;;10855:94:0::1;::::0;;;;;;-1:-1:-1;;;;;5772:32:1;;;10855:94:0::1;::::0;::::1;5754:51:1::0;5841:32;;5821:18;;;5814:60;5727:18;;10855:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10839:13;:110:::0;;-1:-1:-1;;;;;10839:110:0;;::::1;-1:-1:-1::0;;;;;;10839:110:0;;::::1;;::::0;;10960:15:::1;::::0;::::1;:31;10999:21;11030:4;11036:24;11030:4:::0;-1:-1:-1;;;;;6054:18:0;6027:7;6054:18;;;:9;:18;;;;;;;5961:119;11036:24:::1;11061:1;11063::::0;11065:7:::1;2559::::0;2586:6;-1:-1:-1;;;;;2586:6:0;;2521:79;11065:7:::1;10960:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10960:129:0;;;-1:-1:-1;;;;;6206:32:1;;;10960:129:0::1;::::0;::::1;6188:51:1::0;6255:18;;;6248:34;;;;6298:18;;;6291:34;;;;6341:18;;;6334:34;6405:32;;;6384:19;;;6377:61;11073:15:0::1;6454:19:1::0;;;6447:35;6160:19;;10960:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11107:13:0::1;::::0;11138:15:::1;::::0;11100:71:::1;::::0;-1:-1:-1;;;11100:71:0;;-1:-1:-1;;;;;11138:15:0;;::::1;11100:71;::::0;::::1;7128:51:1::0;-1:-1:-1;;7195:18:1;;;7188:34;11107:13:0;::::1;::::0;-1:-1:-1;11100:29:0::1;::::0;7101:18:1;;11100:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11182:11:0::1;:18:::0;;-1:-1:-1;;;;11211:18:0;-1:-1:-1;;;11211:18:0;;;10570:667::o;2735:148::-;2648:6;;-1:-1:-1;;;;;2648:6:0;356:10;2648:22;2640:67;;;;-1:-1:-1;;;2640:67:0;;;;;;;:::i;:::-;2842:1:::1;2826:6:::0;;2805:40:::1;::::0;-1:-1:-1;;;;;2826:6:0;;::::1;::::0;2805:40:::1;::::0;2842:1;;2805:40:::1;2873:1;2856:19:::0;;-1:-1:-1;;;;;;2856:19:0::1;::::0;;2735:148::o;6088:167::-;6166:4;6183:42;356:10;6207:9;6218:6;6183:9;:42::i;11282:350::-;11348:10;;;;;-1:-1:-1;;;;;11348:10:0;356;-1:-1:-1;;;;;11334:24:0;;11326:33;;;;;;11409:4;11370:20;6054:18;;;:9;:18;;;;;;11429:14;;11426:73;;11457:30;11474:12;11457:16;:30::i;:::-;11528:21;11563:12;;11560:65;;11589:24;11602:10;11589:12;:24::i;:::-;11315:317;;11282:350::o;10268:192::-;2648:6;;-1:-1:-1;;;;;2648:6:0;356:10;2648:22;2640:67;;;;-1:-1:-1;;;2640:67:0;;;;;;;:::i;:::-;4542:13:::1;4487:1;4542:2;:13;:::i;:::-;4530:25;::::0;:9:::1;:25;:::i;:::-;10317:12;:22:::0;4542:13:::1;4487:1;4542:2;:13;:::i;:::-;4530:25;::::0;:9:::1;:25;:::i;:::-;10350:14;:22:::0;10383:20:::1;:26:::0;;-1:-1:-1;;10383:26:0::1;::::0;;10425:27:::1;4542:13;4487:1;-1:-1:-1::0;4542:13:0::1;:::i;:::-;4530:25;::::0;:9:::1;:25;:::i;:::-;10425:27;::::0;1283:25:1;;;1271:2;1256:18;10425:27:0::1;;;;;;;10268:192::o:0;6904:335::-;-1:-1:-1;;;;;6997:19:0;;6989:68;;;;-1:-1:-1;;;6989:68:0;;7717:2:1;6989:68:0;;;7699:21:1;7756:2;7736:18;;;7729:30;7795:34;7775:18;;;7768:62;-1:-1:-1;;;7846:18:1;;;7839:34;7890:19;;6989:68:0;7515:400:1;6989:68:0;-1:-1:-1;;;;;7076:21:0;;7068:68;;;;-1:-1:-1;;;7068:68:0;;8122:2:1;7068:68:0;;;8104:21:1;8161:2;8141:18;;;8134:30;8200:34;8180:18;;;8173:62;-1:-1:-1;;;8251:18:1;;;8244:32;8293:19;;7068:68:0;7920:398:1;7068:68:0;-1:-1:-1;;;;;7147:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7199:32;;1283:25:1;;;7199:32:0;;1256:18:1;7199:32:0;;;;;;;6904:335;;;:::o;7247:2414::-;-1:-1:-1;;;;;7335:18:0;;7327:68;;;;-1:-1:-1;;;7327:68:0;;8525:2:1;7327:68:0;;;8507:21:1;8564:2;8544:18;;;8537:30;8603:34;8583:18;;;8576:62;-1:-1:-1;;;8654:18:1;;;8647:35;8699:19;;7327:68:0;8323:401:1;7327:68:0;-1:-1:-1;;;;;7414:16:0;;7406:64;;;;-1:-1:-1;;;7406:64:0;;8931:2:1;7406:64:0;;;8913:21:1;8970:2;8950:18;;;8943:30;9009:34;8989:18;;;8982:62;-1:-1:-1;;;9060:18:1;;;9053:33;9103:19;;7406:64:0;8729:399:1;7406:64:0;7498:1;7489:6;:10;7481:64;;;;-1:-1:-1;;;7481:64:0;;9335:2:1;7481:64:0;;;9317:21:1;9374:2;9354:18;;;9347:30;9413:34;9393:18;;;9386:62;-1:-1:-1;;;9464:18:1;;;9457:39;9513:19;;7481:64:0;9133:405:1;7481:64:0;7556:17;2586:6;;-1:-1:-1;;;;;7590:15:0;;;2586:6;;7590:15;;;;:32;;-1:-1:-1;2559:7:0;2586:6;-1:-1:-1;;;;;7609:13:0;;;2586:6;;7609:13;;7590:32;7586:1719;;;7651:76;7723:3;7651:67;7673:15;;7663:9;;:25;7662:55;;7703:14;;7662:55;;;7690:12;;7662:55;7651:6;;:10;:67::i;:::-;:71;;:76::i;:::-;7748:20;;7639:88;;-1:-1:-1;7748:20:0;;7744:508;;;7809:15;;-1:-1:-1;;;;;7795:30:0;;;7809:15;;7795:30;;;;:62;;-1:-1:-1;7843:13:0;;-1:-1:-1;;;;;7829:28:0;;;7843:13;;7829:28;;7795:62;7791:444;;;7949:9;7920:39;;;;:28;:39;;;;;;7993:12;-1:-1:-1;7884:250:0;;;;-1:-1:-1;;;7884:250:0;;9745:2:1;7884:250:0;;;9727:21:1;9784:2;9764:18;;;9757:30;9823:34;9803:18;;;9796:62;9894:34;9874:18;;;9867:62;-1:-1:-1;;;9945:19:1;;;9938:40;9995:19;;7884:250:0;9543:477:1;7884:250:0;8188:9;8159:39;;;;:28;:39;;;;;8201:12;8159:54;;7791:444;8280:13;;-1:-1:-1;;;;;8272:21:0;;;8280:13;;8272:21;:55;;;;-1:-1:-1;8311:15:0;;-1:-1:-1;;;;;8297:30:0;;;8311:15;;8297:30;;8272:55;:83;;;;-1:-1:-1;;;;;;8333:22:0;;;;;;:18;:22;;;;;;;;8331:24;8272:83;8268:313;;;8395:12;;8385:6;:22;;8377:60;;;;-1:-1:-1;;;8377:60:0;;10227:2:1;8377:60:0;;;10209:21:1;10266:2;10246:18;;;10239:30;10305:27;10285:18;;;10278:55;10350:18;;8377:60:0;10025:349:1;8377:60:0;8490:14;;8480:6;8464:13;8474:2;-1:-1:-1;;;;;6054:18:0;6027:7;6054:18;;;:9;:18;;;;;;;5961:119;8464:13;:22;;;;:::i;:::-;:40;;8456:79;;;;-1:-1:-1;;;8456:79:0;;10711:2:1;8456:79:0;;;10693:21:1;10750:2;10730:18;;;10723:30;10789:28;10769:18;;;10762:56;10835:18;;8456:79:0;10509:350:1;8456:79:0;8554:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8268:313;8606:13;;-1:-1:-1;;;;;8600:19:0;;;8606:13;;8600:19;:43;;;;-1:-1:-1;;;;;;8623:20:0;;8638:4;8623:20;;8600:43;8597:174;;;8676:79;8751:3;8676:70;8698:16;;8688:9;;:26;8687:58;;8730:15;;8687:58;;;8716:13;;8676:6;;:10;:70::i;:79::-;8664:91;;8597:174;8836:4;8787:28;6054:18;;;:9;:18;;;;;;8862:6;;-1:-1:-1;;;8862:6:0;;;;8861:7;:32;;;;-1:-1:-1;8880:13:0;;-1:-1:-1;;;;;8872:21:0;;;8880:13;;8872:21;8861:32;:47;;;;-1:-1:-1;8897:11:0;;-1:-1:-1;;;8897:11:0;;;;8861:47;:89;;;;;8933:17;;8912:20;:38;8861:89;:121;;;;;8964:18;;8954:9;;:28;8861:121;8857:437;;;9003:67;9020:49;9024:6;9031:37;9035:20;9056:11;;9031:3;:37::i;:::-;9020:3;:49::i;:::-;9003:16;:67::i;:::-;9118:21;9182:17;9161:38;;9158:121;;;9224:35;9237:21;9224:12;:35::i;:::-;8984:310;8857:437;7624:1681;7586:1719;9320:11;;9317:161;;9388:4;9370:24;;;;:9;:24;;;;;;:39;;9399:9;9370:28;:39::i;:::-;9363:4;9345:24;;;;:9;:24;;;;;;;:64;;;;9427:39;;-1:-1:-1;;;;;9427:39:0;;;;;;;9456:9;1283:25:1;;1271:2;1256:18;;1137:177;9427:39:0;;;;;;;;9317:161;-1:-1:-1;;;;;9504:15:0;;;;;;:9;:15;;;;;;:27;;9524:6;9504:19;:27::i;:::-;-1:-1:-1;;;;;9488:15:0;;;;;;:9;:15;;;;;:43;9556:40;9574:21;:6;9585:9;9574:10;:21::i;:::-;-1:-1:-1;;;;;9556:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9542:13:0;;;;;;;:9;:13;;;;;:54;;;;9612:41;;;9631:21;:6;9642:9;9631:10;:21::i;:::-;9612:41;;1283:25:1;;;1271:2;1256:18;9612:41:0;;;;;;;7316:2345;7247:2414;;;:::o;1413:190::-;1499:7;1535:12;1527:6;;;;1519:29;;;;-1:-1:-1;;;1519:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1559:9:0;1571:5;1575:1;1571;:5;:::i;:::-;1559:17;1413:190;-1:-1:-1;;;;;1413:190:0:o;9777:483::-;5190:6;:13;;-1:-1:-1;;;;5190:13:0;-1:-1:-1;;;5190:13:0;;;9879:16:::1;::::0;;9893:1:::1;9879:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9879:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9879:16:0::1;9855:40;;9924:4;9906;9911:1;9906:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9906:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9950:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9950:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9906:7;;9950:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9940:4;9945:1;9940:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9940:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10015:15:::1;::::0;9983:62:::1;::::0;10000:4:::1;::::0;10015:15:::1;10033:11:::0;9983:8:::1;:62::i;:::-;10056:15;::::0;:196:::1;::::0;-1:-1:-1;;;10056:196:0;;-1:-1:-1;;;;;10056:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10137:11;;10056:15:::1;::::0;10179:4;;10206::::1;::::0;10226:15:::1;::::0;10056:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5226:6:0;:14;;-1:-1:-1;;;;5226:14:0;;;-1:-1:-1;;;;9777:483:0:o;10468:92::-;10525:10;;:27;;:10;;;;-1:-1:-1;;;;;10525:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;1611:246;1669:7;1693:1;1698;1693:6;1689:47;;-1:-1:-1;1723:1:0;1716:8;;1689:47;1746:9;1758:5;1762:1;1758;:5;:::i;:::-;1746:17;-1:-1:-1;1791:1:0;1782:5;1786:1;1746:17;1782:5;:::i;:::-;:10;1774:56;;;;-1:-1:-1;;;1774:56:0;;12789:2:1;1774:56:0;;;12771:21:1;12828:2;12808:18;;;12801:30;12867:34;12847:18;;;12840:62;-1:-1:-1;;;12918:18:1;;;12911:31;12959:19;;1774:56:0;12587:397:1;1774:56:0;1848:1;1611:246;-1:-1:-1;;;1611:246:0:o;1865:132::-;1923:7;1950:39;1954:1;1957;1950:39;;;;;;;;;;;;;;;;;:3;:39::i;9671:98::-;9728:7;9755:1;9753;:3;9752:9;;9760:1;9752:9;;;-1:-1:-1;9758:1:0;9671:98;-1:-1:-1;9671:98:0:o;1082:179::-;1140:7;;1172:5;1176:1;1172;:5;:::i;:::-;1160:17;;1201:1;1196;:6;;1188:46;;;;-1:-1:-1;;;1188:46:0;;13191:2:1;1188:46:0;;;13173:21:1;13230:2;13210:18;;;13203:30;13269:29;13249:18;;;13242:57;13316:18;;1188:46:0;12989:351:1;1269:136:0;1327:7;1354:43;1358:1;1361;1354:43;;;;;;;;;;;;;;;;;:3;:43::i;2005:189::-;2091:7;2126:12;2119:5;2111:28;;;;-1:-1:-1;;;2111:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2150:9:0;2162:5;2166:1;2162;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:367::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:508::-;1396:6;1404;1412;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;1520:9;1507:23;1539:31;1564:5;1539:31;:::i;:::-;1589:5;-1:-1:-1;1646:2:1;1631:18;;1618:32;1659:33;1618:32;1659:33;:::i;:::-;1319:508;;1711:7;;-1:-1:-1;;;1791:2:1;1776:18;;;;1763:32;;1319:508::o;2021:247::-;2080:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:52;;;2149:1;2146;2139:12;2101:52;2188:9;2175:23;2207:31;2232:5;2207:31;:::i;2481:388::-;2549:6;2557;2610:2;2598:9;2589:7;2585:23;2581:32;2578:52;;;2626:1;2623;2616:12;2578:52;2665:9;2652:23;2684:31;2709:5;2684:31;:::i;:::-;2734:5;-1:-1:-1;2791:2:1;2776:18;;2763:32;2804:33;2763:32;2804:33;:::i;:::-;2856:7;2846:17;;;2481:388;;;;;:::o;2874:127::-;2935:10;2930:3;2926:20;2923:1;2916:31;2966:4;2963:1;2956:15;2990:4;2987:1;2980:15;3006:375;3094:1;3112:5;3126:249;3147:1;3137:8;3134:15;3126:249;;;3197:4;3192:3;3188:14;3182:4;3179:24;3176:50;;;3206:18;;:::i;:::-;3256:1;3246:8;3242:16;3239:49;;;3270:16;;;;3239:49;3353:1;3349:16;;;;;3309:15;;3126:249;;;3006:375;;;;;;:::o;3386:902::-;3435:5;3465:8;3455:80;;-1:-1:-1;3506:1:1;3520:5;;3455:80;3554:4;3544:76;;-1:-1:-1;3591:1:1;3605:5;;3544:76;3636:4;3654:1;3649:59;;;;3722:1;3717:174;;;;3629:262;;3649:59;3679:1;3670:10;;3693:5;;;3717:174;3754:3;3744:8;3741:17;3738:43;;;3761:18;;:::i;:::-;-1:-1:-1;;3817:1:1;3803:16;;3876:5;;3629:262;;3975:2;3965:8;3962:16;3956:3;3950:4;3947:13;3943:36;3937:2;3927:8;3924:16;3919:2;3913:4;3910:12;3906:35;3903:77;3900:203;;;-1:-1:-1;4012:19:1;;;4088:5;;3900:203;4135:42;-1:-1:-1;;4160:8:1;4154:4;4135:42;:::i;:::-;4213:6;4209:1;4205:6;4201:19;4192:7;4189:32;4186:58;;;4224:18;;:::i;:::-;4262:20;;3386:902;-1:-1:-1;;;3386:902:1:o;4293:140::-;4351:5;4380:47;4421:4;4411:8;4407:19;4401:4;4380:47;:::i;4438:168::-;4511:9;;;4542;;4559:15;;;4553:22;;4539:37;4529:71;;4580:18;;:::i;4611:356::-;4813:2;4795:21;;;4832:18;;;4825:30;4891:34;4886:2;4871:18;;4864:62;4958:2;4943:18;;4611:356::o;5324:251::-;5394:6;5447:2;5435:9;5426:7;5422:23;5418:32;5415:52;;;5463:1;5460;5453:12;5415:52;5495:9;5489:16;5514:31;5539:5;5514:31;:::i;6493:456::-;6581:6;6589;6597;6650:2;6638:9;6629:7;6625:23;6621:32;6618:52;;;6666:1;6663;6656:12;6618:52;-1:-1:-1;;6711:16:1;;6817:2;6802:18;;6796:25;6913:2;6898:18;;;6892:25;6711:16;;6796:25;;-1:-1:-1;6892:25:1;6493:456;-1:-1:-1;6493:456:1:o;7233:277::-;7300:6;7353:2;7341:9;7332:7;7328:23;7324:32;7321:52;;;7369:1;7366;7359:12;7321:52;7401:9;7395:16;7454:5;7447:13;7440:21;7433:5;7430:32;7420:60;;7476:1;7473;7466:12;10379:125;10444:9;;;10465:10;;;10462:36;;;10478:18;;:::i;10864:135::-;10903:3;10924:17;;;10921:43;;10944:18;;:::i;:::-;-1:-1:-1;10991:1:1;10980:13;;10864:135::o;11004:128::-;11071:9;;;11092:11;;;11089:37;;;11106:18;;:::i;11269:127::-;11330:10;11325:3;11321:20;11318:1;11311:31;11361:4;11358:1;11351:15;11385:4;11382:1;11375:15;11401:959;11663:4;11711:3;11700:9;11696:19;11742:6;11731:9;11724:25;11785:6;11780:2;11769:9;11765:18;11758:34;11828:3;11823:2;11812:9;11808:18;11801:31;11852:6;11887;11881:13;11918:6;11910;11903:22;11956:3;11945:9;11941:19;11934:26;;11995:2;11987:6;11983:15;11969:29;;12016:1;12026:195;12040:6;12037:1;12034:13;12026:195;;;12105:13;;-1:-1:-1;;;;;12101:39:1;12089:52;;12170:2;12196:15;;;;12161:12;;;;12137:1;12055:9;12026:195;;;-1:-1:-1;;;;;;;12277:32:1;;;;12272:2;12257:18;;12250:60;-1:-1:-1;;12341:3:1;12326:19;12319:35;12238:3;11401:959;-1:-1:-1;;;11401:959:1:o;12365:217::-;12405:1;12431;12421:132;;12475:10;12470:3;12466:20;12463:1;12456:31;12510:4;12507:1;12500:15;12538:4;12535:1;12528:15;12421:132;-1:-1:-1;12567:9:1;;12365:217::o

Swarm Source

ipfs://999d1e0c264e9d89c8880568587adb2a77ea70756361a8621df450ad4751de15

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.