ETH Price: $3,117.05 (+1.89%)
Gas: 3 Gwei

Contract

0xeC5da3009466419f05DCFF1B289e931b923d9582
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer188306272023-12-21 0:19:11203 days ago1703117951IN
0xeC5da300...b923d9582
0 ETH0.0134046653.1452511
Approve137861102021-12-11 20:48:31942 days ago1639255711IN
0xeC5da300...b923d9582
0 ETH0.0030672364.9
Approve134942402021-10-26 17:07:46988 days ago1635268066IN
0xeC5da300...b923d9582
0 ETH0.00354886142.08541088
Approve134893752021-10-25 22:50:08989 days ago1635202208IN
0xeC5da300...b923d9582
0 ETH0.0043480192
Approve134827142021-10-24 22:02:27990 days ago1635112947IN
0xeC5da300...b923d9582
0 ETH0.0037279978.88106246
Approve134755132021-10-23 18:46:30991 days ago1635014790IN
0xeC5da300...b923d9582
0 ETH0.0026656456.40260057
Approve134749402021-10-23 16:46:17991 days ago1635007577IN
0xeC5da300...b923d9582
0 ETH0.0038251880.93744369
Approve134732062021-10-23 10:22:34991 days ago1634984554IN
0xeC5da300...b923d9582
0 ETH0.0021314745.1
Approve134716122021-10-23 4:04:20991 days ago1634961860IN
0xeC5da300...b923d9582
0 ETH0.0023985450.75105593
Approve134714012021-10-23 3:15:45991 days ago1634958945IN
0xeC5da300...b923d9582
0 ETH0.0030476364.48517654
Approve134713462021-10-23 3:02:17991 days ago1634958137IN
0xeC5da300...b923d9582
0 ETH0.0031053465.70619217
Approve134713352021-10-23 2:59:26991 days ago1634957966IN
0xeC5da300...b923d9582
0 ETH0.0026159455.35092439
Approve134712442021-10-23 2:38:42991 days ago1634956722IN
0xeC5da300...b923d9582
0 ETH0.0029896163.25748241
Approve134711992021-10-23 2:27:55991 days ago1634956075IN
0xeC5da300...b923d9582
0 ETH0.0043101391.19855602
Approve134711952021-10-23 2:25:44991 days ago1634955944IN
0xeC5da300...b923d9582
0 ETH0.0032244468.22634996
Approve134711952021-10-23 2:25:44991 days ago1634955944IN
0xeC5da300...b923d9582
0 ETH0.0032480768.72634996
Approve134711832021-10-23 2:22:52991 days ago1634955772IN
0xeC5da300...b923d9582
0 ETH0.0030692364.94216026
Approve134594082021-10-21 6:24:28993 days ago1634797468IN
0xeC5da300...b923d9582
0 ETH0.0025993555
Approve134569992021-10-20 21:36:51994 days ago1634765811IN
0xeC5da300...b923d9582
0 ETH0.0040141284.93534657
Approve134549572021-10-20 13:47:04994 days ago1634737624IN
0xeC5da300...b923d9582
0 ETH0.0039086182.70268675
Approve134548392021-10-20 13:21:55994 days ago1634736115IN
0xeC5da300...b923d9582
0 ETH0.0027910159.0553876
Approve134526092021-10-20 4:54:15994 days ago1634705655IN
0xeC5da300...b923d9582
0 ETH0.0016818167.33470407
Approve134513362021-10-20 0:12:55995 days ago1634688775IN
0xeC5da300...b923d9582
0 ETH0.0040410185.50419171
Approve134492032021-10-19 16:15:08995 days ago1634660108IN
0xeC5da300...b923d9582
0 ETH0.0045846797.00750814
Approve134438772021-10-18 20:13:43996 days ago1634588023IN
0xeC5da300...b923d9582
0 ETH0.00595093125.91644543
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
188306272023-12-21 0:19:11203 days ago1703117951
0xeC5da300...b923d9582
0.01159386 ETH
188306272023-12-21 0:19:11203 days ago1703117951
0xeC5da300...b923d9582
0.01159386 ETH
188306272023-12-21 0:19:11203 days ago1703117951
0xeC5da300...b923d9582
0.02318772 ETH
137815182021-12-11 3:45:36942 days ago1639194336
0xeC5da300...b923d9582
0.00596348 ETH
137815182021-12-11 3:45:36942 days ago1639194336
0xeC5da300...b923d9582
0.00596348 ETH
137815182021-12-11 3:45:36942 days ago1639194336
0xeC5da300...b923d9582
0.01192696 ETH
134898352021-10-26 0:35:17989 days ago1635208517
0xeC5da300...b923d9582
0.00822344 ETH
134898352021-10-26 0:35:17989 days ago1635208517
0xeC5da300...b923d9582
0.00822344 ETH
134898352021-10-26 0:35:17989 days ago1635208517
0xeC5da300...b923d9582
0.01644689 ETH
134897572021-10-26 0:20:04989 days ago1635207604
0xeC5da300...b923d9582
0.00742928 ETH
134897572021-10-26 0:20:04989 days ago1635207604
0xeC5da300...b923d9582
0.00742928 ETH
134897572021-10-26 0:20:04989 days ago1635207604
0xeC5da300...b923d9582
0.01485857 ETH
134897142021-10-26 0:09:19989 days ago1635206959
0xeC5da300...b923d9582
0.01084418 ETH
134897142021-10-26 0:09:19989 days ago1635206959
0xeC5da300...b923d9582
0.01084418 ETH
134897142021-10-26 0:09:19989 days ago1635206959
0xeC5da300...b923d9582
0.02168837 ETH
134827122021-10-24 22:01:08990 days ago1635112868
0xeC5da300...b923d9582
0.01047558 ETH
134827122021-10-24 22:01:08990 days ago1635112868
0xeC5da300...b923d9582
0.01047558 ETH
134827122021-10-24 22:01:08990 days ago1635112868
0xeC5da300...b923d9582
0.02095116 ETH
134772052021-10-24 1:15:41991 days ago1635038141
0xeC5da300...b923d9582
0.01392753 ETH
134772052021-10-24 1:15:41991 days ago1635038141
0xeC5da300...b923d9582
0.01392753 ETH
134772052021-10-24 1:15:41991 days ago1635038141
0xeC5da300...b923d9582
0.02785507 ETH
134768362021-10-23 23:45:45991 days ago1635032745
0xeC5da300...b923d9582
0.01227129 ETH
134768362021-10-23 23:45:45991 days ago1635032745
0xeC5da300...b923d9582
0.01227129 ETH
134768362021-10-23 23:45:45991 days ago1635032745
0xeC5da300...b923d9582
0.02454258 ETH
134755312021-10-23 18:50:14991 days ago1635015014
0xeC5da300...b923d9582
0.00207472 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PACMAN

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-06
*/

/**
*/

/*

PAC-MAN (PACMAN)

Official Links:

Telegram:
https://t.me/PACMANETH

Website: 
https://pacmaneth.com/

Twitter:
https://twitter.com/PacMan_Eth


*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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);
    }
}

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract PACMAN is Context, IERC20, Ownable {
    
    using SafeMath for uint256;

    string private constant _name = "PAC-MAN";
    string private constant _symbol = "PACMAN";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000000 * 10**10;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    //Buy Fee
    uint256 private _redisFeeOnBuy = 2;
    uint256 private _taxFeeOnBuy = 8;
    
    //Sell Fee
    uint256 private _redisFeeOnSell = 2;
    uint256 private _taxFeeOnSell = 8;
    
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    
    mapping(address => bool) public bots;
    mapping (address => bool) public preTrader;
    mapping(address => uint256) private cooldown;
    
    address payable private _developmentAddress = payable(0xF7fB98f70B6E1c385aF35589Ca73A64Aae50194B);
    address payable private _marketingAddress = payable(0xf762cE62FE0F723Ba015A9b1a8d0685b49792909);
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    uint256 public _maxTxAmount = 750000000000 * 10**10; //0.75
    uint256 public _maxWalletSize = 1000000000000 * 10**10; //1
    uint256 public _swapTokensAtAmount = 10000000000 * 10**10; //0.1

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

    constructor() {
        
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        
        preTrader[owner()] = true;
        
        bots[address(0x66f049111958809841Bbe4b81c034Da2D953AA0c)] = true;
        bots[address(0x000000005736775Feb0C8568e7DEe77222a26880)] = true;
        bots[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
        bots[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        bots[address(0xbcC7f6355bc08f6b7d3a41322CE4627118314763)] = true;
        bots[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
        bots[address(0x000000000035B5e5ad9019092C665357240f594e)] = true;
        bots[address(0x1315c6C26123383a2Eb369a53Fb72C4B9f227EeC)] = true;
        bots[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        bots[address(0x90484Bb9bc05fD3B5FF1fe412A492676cd81790C)] = true;
        bots[address(0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA)] = true;
        bots[address(0x42c1b5e32d625b6C618A02ae15189035e0a92FE7)] = true;
        bots[address(0xA94E56EFc384088717bb6edCccEc289A72Ec2381)] = true;
        bots[address(0xf13FFadd3682feD42183AF8F3f0b409A9A0fdE31)] = true;
        bots[address(0x376a6EFE8E98f3ae2af230B3D45B8Cc5e962bC27)] = true;
        bots[address(0xEE2A9147ffC94A73f6b945A6DB532f8466B78830)] = true;
        bots[address(0xdE2a6d80989C3992e11B155430c3F59792FF8Bb7)] = true;
        bots[address(0x1e62A12D4981e428D3F4F28DF261fdCB2CE743Da)] = true;
        bots[address(0x5136a9A5D077aE4247C7706b577F77153C32A01C)] = true;
        bots[address(0x0E388888309d64e97F97a4740EC9Ed3DADCA71be)] = true;
        bots[address(0x255D9BA73a51e02d26a5ab90d534DB8a80974a12)] = true;
        bots[address(0xA682A66Ea044Aa1DC3EE315f6C36414F73054b47)] = true;
        bots[address(0x80e09203480A49f3Cf30a4714246f7af622ba470)] = true;
        bots[address(0x12e48B837AB8cB9104C5B95700363547bA81c8a4)] = true;
        bots[address(0x3066Cc1523dE539D36f94597e233719727599693)] = true;
        bots[address(0x201044fa39866E6dD3552D922CDa815899F63f20)] = true;
        bots[address(0x6F3aC41265916DD06165b750D88AB93baF1a11F8)] = true;
        bots[address(0x27C71ef1B1bb5a9C9Ee0CfeCEf4072AbAc686ba6)] = true;
        bots[address(0x27C71ef1B1bb5a9C9Ee0CfeCEf4072AbAc686ba6)] = true;
        bots[address(0x5668e6e8f3C31D140CC0bE918Ab8bB5C5B593418)] = true;
        bots[address(0x4b9BDDFB48fB1529125C14f7730346fe0E8b5b40)] = true;
        bots[address(0x7e2b3808cFD46fF740fBd35C584D67292A407b95)] = true;
        bots[address(0xe89C7309595E3e720D8B316F065ecB2730e34757)] = true;
        bots[address(0x725AD056625326B490B128E02759007BA5E4eBF1)] = 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 tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
    
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
        
        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

        if (from != owner() && to != owner()) {
            
            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }
              
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
            
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        
        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
            
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    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 sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);

        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
    
        return (rSupply, tSupply);
    }
    
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    
    //Set MAx transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
    
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function allowPreTrading(address account, bool allowed) public onlyOwner {
        require(preTrader[account] != allowed, "TOKEN: Already enabled.");
        preTrader[account] = allowed;
    }
}

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":"_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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":[{"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":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000006000196200001e9190620016eb565b6000196200002d919062001672565b600655600260085560086009556002600a556008600b55600a54600c55600b54600d55600c54600e55600d54600f5573f7fb98f70b6e1c385af35589ca73a64aae50194b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f762ce62fe0f723ba015a9b1a8d0685b49792909601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff0219169083151502179055506901969368974c05b0000060175569021e19e0c9bab240000060185568056bc75e2d631000006019553480156200017157600080fd5b506000620001846200159260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002396200159260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031857600080fd5b505afa1580156200032d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003539190620015da565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b657600080fd5b505afa158015620003cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f19190620015da565b6040518363ffffffff1660e01b81526004016200041092919062001628565b602060405180830381600087803b1580156200042b57600080fd5b505af115801562000440573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004669190620015da565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004bc6200159a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160006200066f6200159a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007366f049111958809841bbe4b81c034da2d953aa0c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006f5736775feb0c8568e7dee77222a2688073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006e3b3cc22af3ae1eac0440bcee416b4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073bcc7f6355bc08f6b7d3a41322ce462711831476373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000731d6e8bac6ea3730825bde4b005ed7b2b39a2932d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006e35b5e5ad9019092c665357240f594e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000731315c6c26123383a2eb369a53fb72c4b9f227eec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007390484bb9bc05fd3b5ff1fe412a492676cd81790c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073a62c5ba4d3c95b3ddb247eabaa2c8e56bac9d6da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007342c1b5e32d625b6c618a02ae15189035e0a92fe773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073a94e56efc384088717bb6edcccec289a72ec238173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073f13ffadd3682fed42183af8f3f0b409a9a0fde3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073376a6efe8e98f3ae2af230b3d45b8cc5e962bc2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073ee2a9147ffc94a73f6b945a6db532f8466b7883073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073de2a6d80989c3992e11b155430c3f59792ff8bb773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000731e62a12d4981e428d3f4f28df261fdcb2ce743da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000735136a9a5d077ae4247c7706b577f77153c32a01c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000730e388888309d64e97f97a4740ec9ed3dadca71be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073255d9ba73a51e02d26a5ab90d534db8a80974a1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073a682a66ea044aa1dc3ee315f6c36414f73054b4773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007380e09203480a49f3cf30a4714246f7af622ba47073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007312e48b837ab8cb9104c5b95700363547ba81c8a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000733066cc1523de539d36f94597e23371972759969373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073201044fa39866e6dd3552d922cda815899f63f2073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000736f3ac41265916dd06165b750d88ab93baf1a11f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007327c71ef1b1bb5a9c9ee0cfecef4072abac686ba673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007327c71ef1b1bb5a9c9ee0cfecef4072abac686ba673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000735668e6e8f3c31d140cc0be918ab8bb5c5b59341873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000734b9bddfb48fb1529125c14f7730346fe0e8b5b4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000737e2b3808cfd46ff740fbd35c584d67292a407b9573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073e89c7309595e3e720d8b316f065ecb2730e3475773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073725ad056625326b490b128e02759007ba5e4ebf173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200151a6200159260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda100000060405162001583919062001655565b60405180910390a3506200179b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620015d48162001781565b92915050565b600060208284031215620015ed57600080fd5b6000620015fd84828501620015c3565b91505092915050565b6200161181620016ad565b82525050565b6200162281620016e1565b82525050565b60006040820190506200163f600083018562001606565b6200164e602083018462001606565b9392505050565b60006020820190506200166c600083018462001617565b92915050565b60006200167f82620016e1565b91506200168c83620016e1565b925082821015620016a257620016a162001723565b5b828203905092915050565b6000620016ba82620016c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620016f882620016e1565b91506200170583620016e1565b92508262001718576200171762001752565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6200178c81620016ad565b81146200179857600080fd5b50565b613b7f80620017ab6000396000f3fe6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063bfd7928411610064578063bfd7928414610626578063c3c8cd8014610663578063dd62ed3e1461067a578063ea1644d5146106b7576101cc565b806398a5c3151461055a578063a2a957bb14610583578063a9059cbb146105ac578063bdd795ef146105e9576101cc565b80638da5cb5b116100d15780638da5cb5b146104b05780638f70ccf7146104db5780638f9a55c01461050457806395d89b411461052f576101cc565b8063715018a61461044557806374010ece1461045c5780637d1db4a514610485576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632f9c4569146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612cd6565b6106e0565b005b34801561020657600080fd5b5061020f610830565b60405161021c919061311f565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612c9a565b61086d565b60405161025991906130e9565b60405180910390f35b34801561026e57600080fd5b5061027761088b565b6040516102849190613104565b60405180910390f35b34801561029957600080fd5b506102a26108b1565b6040516102af9190613301565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612c0f565b6108c3565b6040516102ec91906130e9565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190612c5e565b61099c565b005b34801561032a57600080fd5b50610333610b1f565b6040516103409190613301565b60405180910390f35b34801561035557600080fd5b5061035e610b25565b60405161036b9190613376565b60405180910390f35b34801561038057600080fd5b50610389610b2e565b60405161039691906130ce565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190612b81565b610b54565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190612d17565b610c44565b005b3480156103fd57600080fd5b50610406610cf5565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612b81565b610dc6565b60405161043c9190613301565b60405180910390f35b34801561045157600080fd5b5061045a610e17565b005b34801561046857600080fd5b50610483600480360381019061047e9190612d40565b610f6a565b005b34801561049157600080fd5b5061049a611009565b6040516104a79190613301565b60405180910390f35b3480156104bc57600080fd5b506104c561100f565b6040516104d291906130ce565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190612d17565b611038565b005b34801561051057600080fd5b506105196110ea565b6040516105269190613301565b60405180910390f35b34801561053b57600080fd5b506105446110f0565b604051610551919061311f565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190612d40565b61112d565b005b34801561058f57600080fd5b506105aa60048036038101906105a59190612d69565b6111cc565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190612c9a565b611283565b6040516105e091906130e9565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b9190612b81565b6112a1565b60405161061d91906130e9565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190612b81565b6112c1565b60405161065a91906130e9565b60405180910390f35b34801561066f57600080fd5b506106786112e1565b005b34801561068657600080fd5b506106a1600480360381019061069c9190612bd3565b6113ba565b6040516106ae9190613301565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190612d40565b611441565b005b6106e86114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613261565b60405180910390fd5b60005b815181101561082c576001601060008484815181106107c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108249061363b565b915050610778565b5050565b60606040518060400160405280600781526020017f5041432d4d414e00000000000000000000000000000000000000000000000000815250905090565b600061088161087a6114e0565b84846114e8565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600069d3c21bcecceda1000000905090565b60006108d08484846116b3565b610991846108dc6114e0565b61098c85604051806060016040528060288152602001613b2260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109426114e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea39092919063ffffffff16565b6114e8565b600190509392505050565b6109a46114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890613261565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb90613221565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b5c6114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be090613261565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c4c6114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090613261565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d366114e0565b73ffffffffffffffffffffffffffffffffffffffff161480610dac5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d946114e0565b73ffffffffffffffffffffffffffffffffffffffff16145b610db557600080fd5b6000479050610dc381611f07565b50565b6000610e10600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612002565b9050919050565b610e1f6114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613261565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f726114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff690613261565b60405180910390fd5b8060178190555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110406114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c490613261565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600681526020017f5041434d414e0000000000000000000000000000000000000000000000000000815250905090565b6111356114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990613261565b60405180910390fd5b8060198190555050565b6111d46114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890613261565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006112976112906114e0565b84846116b3565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113226114e0565b73ffffffffffffffffffffffffffffffffffffffff1614806113985750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113806114e0565b73ffffffffffffffffffffffffffffffffffffffff16145b6113a157600080fd5b60006113ac30610dc6565b90506113b781612070565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114496114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90613261565b60405180910390fd5b8060188190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f906132e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf906131c1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116a69190613301565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a906132a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90613141565b60405180910390fd5b600081116117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd90613281565b60405180910390fd5b6117de61100f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561184c575061181c61100f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ba257601660149054906101000a900460ff166118f257601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613161565b60405180910390fd5b5b601754811115611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906131a1565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119db5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a11906131e1565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ac75760185481611a7c84610dc6565b611a869190613437565b10611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd906132c1565b60405180910390fd5b5b6000611ad230610dc6565b9050600060195482101590506017548210611aed5760175491505b808015611b075750601660159054906101000a900460ff16155b8015611b615750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b77575060168054906101000a900460ff165b15611b9f57611b8582612070565b60004790506000811115611b9d57611b9c47611f07565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c495750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611cfc5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cfb5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d0a5760009050611e91565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611db55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611dcd57600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e785750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9057600a54600c81905550600b54600d819055505b5b611e9d8484848461236a565b50505050565b6000838311158290611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2919061311f565b60405180910390fd5b5060008385611efa9190613518565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f5760028461239790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f82573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fd360028461239790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611ffe573d6000803e3d6000fd5b5050565b6000600654821115612049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204090613181565b60405180910390fd5b60006120536123e1565b9050612068818461239790919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120fc5781602001602082028036833780820191505090505b509050308160008151811061213a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121dc57600080fd5b505afa1580156121f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122149190612baa565b8160018151811061224e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122b530601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114e8565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161231995949392919061331c565b600060405180830381600087803b15801561233357600080fd5b505af1158015612347573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806123785761237761240c565b5b61238384848461244f565b806123915761239061261a565b5b50505050565b60006123d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061262e565b905092915050565b60008060006123ee612691565b91509150612405818361239790919063ffffffff16565b9250505090565b6000600c5414801561242057506000600d54145b1561242a5761244d565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612461876126f6565b9550955095509550955095506124bf86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a081612806565b6125aa84836128c3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126079190613301565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266c919061311f565b60405180910390fd5b5060008385612684919061348d565b9050809150509392505050565b60008060006006549050600069d3c21bcecceda100000090506126c969d3c21bcecceda100000060065461239790919063ffffffff16565b8210156126e95760065469d3c21bcecceda10000009350935050506126f2565b81819350935050505b9091565b60008060008060008060008060006127138a600c54600d546128fd565b92509250925060006127236123e1565b905060008060006127368e878787612993565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ea3565b905092915050565b60008082846127b79190613437565b9050838110156127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390613201565b60405180910390fd5b8091505092915050565b60006128106123e1565b905060006128278284612a1c90919063ffffffff16565b905061287b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6128d88260065461275e90919063ffffffff16565b6006819055506128f3816007546127a890919063ffffffff16565b6007819055505050565b600080600080612929606461291b888a612a1c90919063ffffffff16565b61239790919063ffffffff16565b905060006129536064612945888b612a1c90919063ffffffff16565b61239790919063ffffffff16565b9050600061297c8261296e858c61275e90919063ffffffff16565b61275e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806129ac8589612a1c90919063ffffffff16565b905060006129c38689612a1c90919063ffffffff16565b905060006129da8789612a1c90919063ffffffff16565b90506000612a03826129f5858761275e90919063ffffffff16565b61275e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612a2f5760009050612a91565b60008284612a3d91906134be565b9050828482612a4c919061348d565b14612a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8390613241565b60405180910390fd5b809150505b92915050565b6000612aaa612aa5846133b6565b613391565b90508083825260208201905082856020860282011115612ac957600080fd5b60005b85811015612af95781612adf8882612b03565b845260208401935060208301925050600181019050612acc565b5050509392505050565b600081359050612b1281613adc565b92915050565b600081519050612b2781613adc565b92915050565b600082601f830112612b3e57600080fd5b8135612b4e848260208601612a97565b91505092915050565b600081359050612b6681613af3565b92915050565b600081359050612b7b81613b0a565b92915050565b600060208284031215612b9357600080fd5b6000612ba184828501612b03565b91505092915050565b600060208284031215612bbc57600080fd5b6000612bca84828501612b18565b91505092915050565b60008060408385031215612be657600080fd5b6000612bf485828601612b03565b9250506020612c0585828601612b03565b9150509250929050565b600080600060608486031215612c2457600080fd5b6000612c3286828701612b03565b9350506020612c4386828701612b03565b9250506040612c5486828701612b6c565b9150509250925092565b60008060408385031215612c7157600080fd5b6000612c7f85828601612b03565b9250506020612c9085828601612b57565b9150509250929050565b60008060408385031215612cad57600080fd5b6000612cbb85828601612b03565b9250506020612ccc85828601612b6c565b9150509250929050565b600060208284031215612ce857600080fd5b600082013567ffffffffffffffff811115612d0257600080fd5b612d0e84828501612b2d565b91505092915050565b600060208284031215612d2957600080fd5b6000612d3784828501612b57565b91505092915050565b600060208284031215612d5257600080fd5b6000612d6084828501612b6c565b91505092915050565b60008060008060808587031215612d7f57600080fd5b6000612d8d87828801612b6c565b9450506020612d9e87828801612b6c565b9350506040612daf87828801612b6c565b9250506060612dc087828801612b6c565b91505092959194509250565b6000612dd88383612de4565b60208301905092915050565b612ded8161354c565b82525050565b612dfc8161354c565b82525050565b6000612e0d826133f2565b612e178185613415565b9350612e22836133e2565b8060005b83811015612e53578151612e3a8882612dcc565b9750612e4583613408565b925050600181019050612e26565b5085935050505092915050565b612e698161355e565b82525050565b612e78816135a1565b82525050565b612e87816135c5565b82525050565b6000612e98826133fd565b612ea28185613426565b9350612eb28185602086016135d7565b612ebb81613711565b840191505092915050565b6000612ed3602383613426565b9150612ede82613722565b604082019050919050565b6000612ef6603f83613426565b9150612f0182613771565b604082019050919050565b6000612f19602a83613426565b9150612f24826137c0565b604082019050919050565b6000612f3c601c83613426565b9150612f478261380f565b602082019050919050565b6000612f5f602283613426565b9150612f6a82613838565b604082019050919050565b6000612f82602383613426565b9150612f8d82613887565b604082019050919050565b6000612fa5601b83613426565b9150612fb0826138d6565b602082019050919050565b6000612fc8601783613426565b9150612fd3826138ff565b602082019050919050565b6000612feb602183613426565b9150612ff682613928565b604082019050919050565b600061300e602083613426565b915061301982613977565b602082019050919050565b6000613031602983613426565b915061303c826139a0565b604082019050919050565b6000613054602583613426565b915061305f826139ef565b604082019050919050565b6000613077602383613426565b915061308282613a3e565b604082019050919050565b600061309a602483613426565b91506130a582613a8d565b604082019050919050565b6130b98161358a565b82525050565b6130c881613594565b82525050565b60006020820190506130e36000830184612df3565b92915050565b60006020820190506130fe6000830184612e60565b92915050565b60006020820190506131196000830184612e6f565b92915050565b600060208201905081810360008301526131398184612e8d565b905092915050565b6000602082019050818103600083015261315a81612ec6565b9050919050565b6000602082019050818103600083015261317a81612ee9565b9050919050565b6000602082019050818103600083015261319a81612f0c565b9050919050565b600060208201905081810360008301526131ba81612f2f565b9050919050565b600060208201905081810360008301526131da81612f52565b9050919050565b600060208201905081810360008301526131fa81612f75565b9050919050565b6000602082019050818103600083015261321a81612f98565b9050919050565b6000602082019050818103600083015261323a81612fbb565b9050919050565b6000602082019050818103600083015261325a81612fde565b9050919050565b6000602082019050818103600083015261327a81613001565b9050919050565b6000602082019050818103600083015261329a81613024565b9050919050565b600060208201905081810360008301526132ba81613047565b9050919050565b600060208201905081810360008301526132da8161306a565b9050919050565b600060208201905081810360008301526132fa8161308d565b9050919050565b600060208201905061331660008301846130b0565b92915050565b600060a08201905061333160008301886130b0565b61333e6020830187612e7e565b81810360408301526133508186612e02565b905061335f6060830185612df3565b61336c60808301846130b0565b9695505050505050565b600060208201905061338b60008301846130bf565b92915050565b600061339b6133ac565b90506133a7828261360a565b919050565b6000604051905090565b600067ffffffffffffffff8211156133d1576133d06136e2565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006134428261358a565b915061344d8361358a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561348257613481613684565b5b828201905092915050565b60006134988261358a565b91506134a38361358a565b9250826134b3576134b26136b3565b5b828204905092915050565b60006134c98261358a565b91506134d48361358a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561350d5761350c613684565b5b828202905092915050565b60006135238261358a565b915061352e8361358a565b92508282101561354157613540613684565b5b828203905092915050565b60006135578261356a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135ac826135b3565b9050919050565b60006135be8261356a565b9050919050565b60006135d08261358a565b9050919050565b60005b838110156135f55780820151818401526020810190506135da565b83811115613604576000848401525b50505050565b61361382613711565b810181811067ffffffffffffffff82111715613632576136316136e2565b5b80604052505050565b60006136468261358a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561367957613678613684565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613ae58161354c565b8114613af057600080fd5b50565b613afc8161355e565b8114613b0757600080fd5b50565b613b138161358a565b8114613b1e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203e0f697146735a0d5fc8d14a8eadb20cab21542e4123be8aeb8a46f3cf6f007d64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063bfd7928411610064578063bfd7928414610626578063c3c8cd8014610663578063dd62ed3e1461067a578063ea1644d5146106b7576101cc565b806398a5c3151461055a578063a2a957bb14610583578063a9059cbb146105ac578063bdd795ef146105e9576101cc565b80638da5cb5b116100d15780638da5cb5b146104b05780638f70ccf7146104db5780638f9a55c01461050457806395d89b411461052f576101cc565b8063715018a61461044557806374010ece1461045c5780637d1db4a514610485576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632f9c4569146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612cd6565b6106e0565b005b34801561020657600080fd5b5061020f610830565b60405161021c919061311f565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612c9a565b61086d565b60405161025991906130e9565b60405180910390f35b34801561026e57600080fd5b5061027761088b565b6040516102849190613104565b60405180910390f35b34801561029957600080fd5b506102a26108b1565b6040516102af9190613301565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612c0f565b6108c3565b6040516102ec91906130e9565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190612c5e565b61099c565b005b34801561032a57600080fd5b50610333610b1f565b6040516103409190613301565b60405180910390f35b34801561035557600080fd5b5061035e610b25565b60405161036b9190613376565b60405180910390f35b34801561038057600080fd5b50610389610b2e565b60405161039691906130ce565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190612b81565b610b54565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190612d17565b610c44565b005b3480156103fd57600080fd5b50610406610cf5565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612b81565b610dc6565b60405161043c9190613301565b60405180910390f35b34801561045157600080fd5b5061045a610e17565b005b34801561046857600080fd5b50610483600480360381019061047e9190612d40565b610f6a565b005b34801561049157600080fd5b5061049a611009565b6040516104a79190613301565b60405180910390f35b3480156104bc57600080fd5b506104c561100f565b6040516104d291906130ce565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190612d17565b611038565b005b34801561051057600080fd5b506105196110ea565b6040516105269190613301565b60405180910390f35b34801561053b57600080fd5b506105446110f0565b604051610551919061311f565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190612d40565b61112d565b005b34801561058f57600080fd5b506105aa60048036038101906105a59190612d69565b6111cc565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190612c9a565b611283565b6040516105e091906130e9565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b9190612b81565b6112a1565b60405161061d91906130e9565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190612b81565b6112c1565b60405161065a91906130e9565b60405180910390f35b34801561066f57600080fd5b506106786112e1565b005b34801561068657600080fd5b506106a1600480360381019061069c9190612bd3565b6113ba565b6040516106ae9190613301565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190612d40565b611441565b005b6106e86114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613261565b60405180910390fd5b60005b815181101561082c576001601060008484815181106107c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108249061363b565b915050610778565b5050565b60606040518060400160405280600781526020017f5041432d4d414e00000000000000000000000000000000000000000000000000815250905090565b600061088161087a6114e0565b84846114e8565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600069d3c21bcecceda1000000905090565b60006108d08484846116b3565b610991846108dc6114e0565b61098c85604051806060016040528060288152602001613b2260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109426114e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea39092919063ffffffff16565b6114e8565b600190509392505050565b6109a46114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890613261565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb90613221565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b5c6114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be090613261565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c4c6114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090613261565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d366114e0565b73ffffffffffffffffffffffffffffffffffffffff161480610dac5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d946114e0565b73ffffffffffffffffffffffffffffffffffffffff16145b610db557600080fd5b6000479050610dc381611f07565b50565b6000610e10600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612002565b9050919050565b610e1f6114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613261565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f726114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff690613261565b60405180910390fd5b8060178190555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110406114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c490613261565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600681526020017f5041434d414e0000000000000000000000000000000000000000000000000000815250905090565b6111356114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990613261565b60405180910390fd5b8060198190555050565b6111d46114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890613261565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006112976112906114e0565b84846116b3565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113226114e0565b73ffffffffffffffffffffffffffffffffffffffff1614806113985750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113806114e0565b73ffffffffffffffffffffffffffffffffffffffff16145b6113a157600080fd5b60006113ac30610dc6565b90506113b781612070565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114496114e0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90613261565b60405180910390fd5b8060188190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f906132e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf906131c1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116a69190613301565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a906132a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90613141565b60405180910390fd5b600081116117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd90613281565b60405180910390fd5b6117de61100f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561184c575061181c61100f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ba257601660149054906101000a900460ff166118f257601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613161565b60405180910390fd5b5b601754811115611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906131a1565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119db5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a11906131e1565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ac75760185481611a7c84610dc6565b611a869190613437565b10611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd906132c1565b60405180910390fd5b5b6000611ad230610dc6565b9050600060195482101590506017548210611aed5760175491505b808015611b075750601660159054906101000a900460ff16155b8015611b615750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b77575060168054906101000a900460ff165b15611b9f57611b8582612070565b60004790506000811115611b9d57611b9c47611f07565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c495750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611cfc5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cfb5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d0a5760009050611e91565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611db55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611dcd57600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e785750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9057600a54600c81905550600b54600d819055505b5b611e9d8484848461236a565b50505050565b6000838311158290611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2919061311f565b60405180910390fd5b5060008385611efa9190613518565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f5760028461239790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f82573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fd360028461239790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611ffe573d6000803e3d6000fd5b5050565b6000600654821115612049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204090613181565b60405180910390fd5b60006120536123e1565b9050612068818461239790919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120fc5781602001602082028036833780820191505090505b509050308160008151811061213a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121dc57600080fd5b505afa1580156121f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122149190612baa565b8160018151811061224e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122b530601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114e8565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161231995949392919061331c565b600060405180830381600087803b15801561233357600080fd5b505af1158015612347573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806123785761237761240c565b5b61238384848461244f565b806123915761239061261a565b5b50505050565b60006123d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061262e565b905092915050565b60008060006123ee612691565b91509150612405818361239790919063ffffffff16565b9250505090565b6000600c5414801561242057506000600d54145b1561242a5761244d565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612461876126f6565b9550955095509550955095506124bf86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a081612806565b6125aa84836128c3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126079190613301565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266c919061311f565b60405180910390fd5b5060008385612684919061348d565b9050809150509392505050565b60008060006006549050600069d3c21bcecceda100000090506126c969d3c21bcecceda100000060065461239790919063ffffffff16565b8210156126e95760065469d3c21bcecceda10000009350935050506126f2565b81819350935050505b9091565b60008060008060008060008060006127138a600c54600d546128fd565b92509250925060006127236123e1565b905060008060006127368e878787612993565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ea3565b905092915050565b60008082846127b79190613437565b9050838110156127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390613201565b60405180910390fd5b8091505092915050565b60006128106123e1565b905060006128278284612a1c90919063ffffffff16565b905061287b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6128d88260065461275e90919063ffffffff16565b6006819055506128f3816007546127a890919063ffffffff16565b6007819055505050565b600080600080612929606461291b888a612a1c90919063ffffffff16565b61239790919063ffffffff16565b905060006129536064612945888b612a1c90919063ffffffff16565b61239790919063ffffffff16565b9050600061297c8261296e858c61275e90919063ffffffff16565b61275e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806129ac8589612a1c90919063ffffffff16565b905060006129c38689612a1c90919063ffffffff16565b905060006129da8789612a1c90919063ffffffff16565b90506000612a03826129f5858761275e90919063ffffffff16565b61275e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612a2f5760009050612a91565b60008284612a3d91906134be565b9050828482612a4c919061348d565b14612a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8390613241565b60405180910390fd5b809150505b92915050565b6000612aaa612aa5846133b6565b613391565b90508083825260208201905082856020860282011115612ac957600080fd5b60005b85811015612af95781612adf8882612b03565b845260208401935060208301925050600181019050612acc565b5050509392505050565b600081359050612b1281613adc565b92915050565b600081519050612b2781613adc565b92915050565b600082601f830112612b3e57600080fd5b8135612b4e848260208601612a97565b91505092915050565b600081359050612b6681613af3565b92915050565b600081359050612b7b81613b0a565b92915050565b600060208284031215612b9357600080fd5b6000612ba184828501612b03565b91505092915050565b600060208284031215612bbc57600080fd5b6000612bca84828501612b18565b91505092915050565b60008060408385031215612be657600080fd5b6000612bf485828601612b03565b9250506020612c0585828601612b03565b9150509250929050565b600080600060608486031215612c2457600080fd5b6000612c3286828701612b03565b9350506020612c4386828701612b03565b9250506040612c5486828701612b6c565b9150509250925092565b60008060408385031215612c7157600080fd5b6000612c7f85828601612b03565b9250506020612c9085828601612b57565b9150509250929050565b60008060408385031215612cad57600080fd5b6000612cbb85828601612b03565b9250506020612ccc85828601612b6c565b9150509250929050565b600060208284031215612ce857600080fd5b600082013567ffffffffffffffff811115612d0257600080fd5b612d0e84828501612b2d565b91505092915050565b600060208284031215612d2957600080fd5b6000612d3784828501612b57565b91505092915050565b600060208284031215612d5257600080fd5b6000612d6084828501612b6c565b91505092915050565b60008060008060808587031215612d7f57600080fd5b6000612d8d87828801612b6c565b9450506020612d9e87828801612b6c565b9350506040612daf87828801612b6c565b9250506060612dc087828801612b6c565b91505092959194509250565b6000612dd88383612de4565b60208301905092915050565b612ded8161354c565b82525050565b612dfc8161354c565b82525050565b6000612e0d826133f2565b612e178185613415565b9350612e22836133e2565b8060005b83811015612e53578151612e3a8882612dcc565b9750612e4583613408565b925050600181019050612e26565b5085935050505092915050565b612e698161355e565b82525050565b612e78816135a1565b82525050565b612e87816135c5565b82525050565b6000612e98826133fd565b612ea28185613426565b9350612eb28185602086016135d7565b612ebb81613711565b840191505092915050565b6000612ed3602383613426565b9150612ede82613722565b604082019050919050565b6000612ef6603f83613426565b9150612f0182613771565b604082019050919050565b6000612f19602a83613426565b9150612f24826137c0565b604082019050919050565b6000612f3c601c83613426565b9150612f478261380f565b602082019050919050565b6000612f5f602283613426565b9150612f6a82613838565b604082019050919050565b6000612f82602383613426565b9150612f8d82613887565b604082019050919050565b6000612fa5601b83613426565b9150612fb0826138d6565b602082019050919050565b6000612fc8601783613426565b9150612fd3826138ff565b602082019050919050565b6000612feb602183613426565b9150612ff682613928565b604082019050919050565b600061300e602083613426565b915061301982613977565b602082019050919050565b6000613031602983613426565b915061303c826139a0565b604082019050919050565b6000613054602583613426565b915061305f826139ef565b604082019050919050565b6000613077602383613426565b915061308282613a3e565b604082019050919050565b600061309a602483613426565b91506130a582613a8d565b604082019050919050565b6130b98161358a565b82525050565b6130c881613594565b82525050565b60006020820190506130e36000830184612df3565b92915050565b60006020820190506130fe6000830184612e60565b92915050565b60006020820190506131196000830184612e6f565b92915050565b600060208201905081810360008301526131398184612e8d565b905092915050565b6000602082019050818103600083015261315a81612ec6565b9050919050565b6000602082019050818103600083015261317a81612ee9565b9050919050565b6000602082019050818103600083015261319a81612f0c565b9050919050565b600060208201905081810360008301526131ba81612f2f565b9050919050565b600060208201905081810360008301526131da81612f52565b9050919050565b600060208201905081810360008301526131fa81612f75565b9050919050565b6000602082019050818103600083015261321a81612f98565b9050919050565b6000602082019050818103600083015261323a81612fbb565b9050919050565b6000602082019050818103600083015261325a81612fde565b9050919050565b6000602082019050818103600083015261327a81613001565b9050919050565b6000602082019050818103600083015261329a81613024565b9050919050565b600060208201905081810360008301526132ba81613047565b9050919050565b600060208201905081810360008301526132da8161306a565b9050919050565b600060208201905081810360008301526132fa8161308d565b9050919050565b600060208201905061331660008301846130b0565b92915050565b600060a08201905061333160008301886130b0565b61333e6020830187612e7e565b81810360408301526133508186612e02565b905061335f6060830185612df3565b61336c60808301846130b0565b9695505050505050565b600060208201905061338b60008301846130bf565b92915050565b600061339b6133ac565b90506133a7828261360a565b919050565b6000604051905090565b600067ffffffffffffffff8211156133d1576133d06136e2565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006134428261358a565b915061344d8361358a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561348257613481613684565b5b828201905092915050565b60006134988261358a565b91506134a38361358a565b9250826134b3576134b26136b3565b5b828204905092915050565b60006134c98261358a565b91506134d48361358a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561350d5761350c613684565b5b828202905092915050565b60006135238261358a565b915061352e8361358a565b92508282101561354157613540613684565b5b828203905092915050565b60006135578261356a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135ac826135b3565b9050919050565b60006135be8261356a565b9050919050565b60006135d08261358a565b9050919050565b60005b838110156135f55780820151818401526020810190506135da565b83811115613604576000848401525b50505050565b61361382613711565b810181811067ffffffffffffffff82111715613632576136316136e2565b5b80604052505050565b60006136468261358a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561367957613678613684565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613ae58161354c565b8114613af057600080fd5b50565b613afc8161355e565b8114613b0757600080fd5b50565b613b138161358a565b8114613b1e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203e0f697146735a0d5fc8d14a8eadb20cab21542e4123be8aeb8a46f3cf6f007d64736f6c63430008040033

Deployed Bytecode Sourcemap

3998:16402:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15568:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9281:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10206:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5468:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9558:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10407:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20201:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5796:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9467:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5516:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15745:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19817:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15325:235;;;;;;;;;;;;;:::i;:::-;;9661:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1739:148;;;;;;;;;;;;;:::i;:::-;;19957:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5666:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1525:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14972:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5731:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9372:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19622:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19269:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9807:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5150:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5107:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15081:236;;;;;;;;;;;;;:::i;:::-;;10014:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20077:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15568:169;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15644:9:::1;15639:91;15663:5;:12;15659:1;:16;15639:91;;;15714:4;15697;:14;15702:5;15708:1;15702:8;;;;;;;;;;;;;;;;;;;;;;15697:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15677:3;;;;;:::i;:::-;;;;15639:91;;;;15568:169:::0;:::o;9281:83::-;9318:13;9351:5;;;;;;;;;;;;;;;;;9344:12;;9281:83;:::o;10206:193::-;10308:4;10330:39;10339:12;:10;:12::i;:::-;10353:7;10362:6;10330:8;:39::i;:::-;10387:4;10380:11;;10206:193;;;;:::o;5468:41::-;;;;;;;;;;;;;:::o;9558:95::-;9611:7;4548:24;9631:14;;9558:95;:::o;10407:446::-;10539:4;10556:36;10566:6;10574:9;10585:6;10556:9;:36::i;:::-;10603:220;10626:6;10647:12;:10;:12::i;:::-;10674:138;10730:6;10674:138;;;;;;;;;;;;;;;;;:11;:19;10686:6;10674:19;;;;;;;;;;;;;;;:33;10694:12;:10;:12::i;:::-;10674:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;10603:8;:220::i;:::-;10841:4;10834:11;;10407:446;;;;;:::o;20201:196::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20315:7:::1;20293:29;;:9;:18;20303:7;20293:18;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;20285:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20382:7;20361:9;:18;20371:7;20361:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20201:196:::0;;:::o;5796:57::-;;;;:::o;9467:83::-;9508:5;4222:1;9526:16;;9467:83;:::o;5516:28::-;;;;;;;;;;;;;:::o;15745:92::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15824:5:::1;15809:4;:12;15814:6;15809:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15745:92:::0;:::o;19817:101::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19898:12:::1;19884:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;19817:101:::0;:::o;15325:235::-;15391:19;;;;;;;;;;;15375:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;15430:17;;;;;;;;;;;15414:33;;:12;:10;:12::i;:::-;:33;;;15375:72;15367:81;;;;;;15459:26;15488:21;15459:50;;15520:32;15533:18;15520:12;:32::i;:::-;15325:235;:::o;9661:138::-;9727:7;9754:37;9774:7;:16;9782:7;9774:16;;;;;;;;;;;;;;;;9754:19;:37::i;:::-;9747:44;;9661:138;;;:::o;1739:148::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1846:1:::1;1809:40;;1830:6;::::0;::::1;;;;;;;;1809:40;;;;;;;;;;;;1877:1;1860:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1739:148::o:0;19957:108::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20046:11:::1;20031:12;:26;;;;19957:108:::0;:::o;5666:51::-;;;;:::o;1525:79::-;1563:7;1590:6;;;;;;;;;;;1583:13;;1525:79;:::o;14972:101::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15053:12:::1;15039:11;;:26;;;;;;;;;;;;;;;;;;14972:101:::0;:::o;5731:54::-;;;;:::o;9372:87::-;9411:13;9444:7;;;;;;;;;;;;;;;;;9437:14;;9372:87;:::o;19622:139::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19735:18:::1;19713:19;:40;;;;19622:139:::0;:::o;19269:301::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19420:13:::1;19403:14;:30;;;;19462:14;19444:15;:32;;;;19512:11;19497:12;:26;;;;19550:12;19534:13;:28;;;;19269:301:::0;;;;:::o;9807:199::-;9912:4;9934:42;9944:12;:10;:12::i;:::-;9958:9;9969:6;9934:9;:42::i;:::-;9994:4;9987:11;;9807:199;;;;:::o;5150:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5107:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;15081:236::-;15147:19;;;;;;;;;;;15131:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;15186:17;;;;;;;;;;;15170:33;;:12;:10;:12::i;:::-;:33;;;15131:72;15123:81;;;;;;15215:23;15241:24;15259:4;15241:9;:24::i;:::-;15215:50;;15276:33;15293:15;15276:16;:33::i;:::-;15081:236;:::o;10014:184::-;10131:7;10163:11;:18;10175:5;10163:18;;;;;;;;;;;;;;;:27;10182:7;10163:27;;;;;;;;;;;;;;;;10156:34;;10014:184;;;;:::o;20077:115::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20171:13:::1;20154:14;:30;;;;20077:115:::0;:::o;284:98::-;337:7;364:10;357:17;;284:98;:::o;11556:369::-;11700:1;11683:19;;:5;:19;;;;11675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11781:1;11762:21;;:7;:21;;;;11754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11863:6;11833:11;:18;11845:5;11833:18;;;;;;;;;;;;;;;:27;11852:7;11833:27;;;;;;;;;;;;;;;:36;;;;11901:7;11885:32;;11894:5;11885:32;;;11910:6;11885:32;;;;;;:::i;:::-;;;;;;;;11556:369;;;:::o;11933:2372::-;12071:1;12055:18;;:4;:18;;;;12047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12148:1;12134:16;;:2;:16;;;;12126:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12218:1;12209:6;:10;12201:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12290:7;:5;:7::i;:::-;12282:15;;:4;:15;;;;:32;;;;;12307:7;:5;:7::i;:::-;12301:13;;:2;:13;;;;12282:32;12278:1265;;;12383:11;;;;;;;;;;;12378:144;;12423:9;:15;12433:4;12423:15;;;;;;;;;;;;;;;;;;;;;;;;;12415:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12378:144;12570:12;;12560:6;:22;;12552:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12639:4;:10;12644:4;12639:10;;;;;;;;;;;;;;;;;;;;;;;;;12638:11;:24;;;;;12654:4;:8;12659:2;12654:8;;;;;;;;;;;;;;;;;;;;;;;;;12653:9;12638:24;12630:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12740:13;;;;;;;;;;;12734:19;;:2;:19;;;12731:146;;12807:14;;12798:6;12782:13;12792:2;12782:9;:13::i;:::-;:22;;;;:::i;:::-;:39;12774:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12731:146;12905:28;12936:24;12954:4;12936:9;:24::i;:::-;12905:55;;12975:12;13014:19;;12990:20;:43;;12975:58;;13077:12;;13053:20;:36;13050:124;;13146:12;;13123:35;;13050:124;13206:7;:18;;;;;13218:6;;;;;;;;;;;13217:7;13206:18;:43;;;;;13236:13;;;;;;;;;;;13228:21;;:4;:21;;;;13206:43;:58;;;;;13253:11;;;;;;;;;;13206:58;13202:330;;;13285:38;13302:20;13285:16;:38::i;:::-;13342:26;13371:21;13342:50;;13436:1;13415:18;:22;13411:106;;;13462:35;13475:21;13462:12;:35::i;:::-;13411:106;13202:330;;12278:1265;;;13563:12;13578:4;13563:19;;13627:18;:24;13646:4;13627:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13655:18;:22;13674:2;13655:22;;;;;;;;;;;;;;;;;;;;;;;;;13627:50;13626:102;;;;13691:13;;;;;;;;;;;13683:21;;:4;:21;;;;:44;;;;;13714:13;;;;;;;;;;;13708:19;;:2;:19;;;;13683:44;13626:102;13622:622;;;13755:5;13745:15;;13622:622;;;13850:13;;;;;;;;;;;13842:21;;:4;:21;;;:55;;;;;13881:15;;;;;;;;;;;13867:30;;:2;:30;;;;13842:55;13839:162;;;13930:14;;13918:9;:26;;;;13973:12;;13963:7;:22;;;;13839:162;14064:13;;;;;;;;;;;14058:19;;:2;:19;;;:55;;;;;14097:15;;;;;;;;;;;14081:32;;:4;:32;;;;14058:55;14054:165;;;14146:15;;14134:9;:27;;;;14190:13;;14180:7;:23;;;;14054:165;13622:622;14256:41;14271:4;14277:2;14281:6;14289:7;14256:14;:41::i;:::-;11933:2372;;;;:::o;2249:224::-;2369:7;2402:1;2397;:6;;2405:12;2389:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2429:9;2445:1;2441;:5;;;;:::i;:::-;2429:17;;2464:1;2457:8;;;2249:224;;;;;:::o;14804:160::-;14861:19;;;;;;;;;;;:28;;:43;14890:13;14901:1;14890:6;:10;;:13;;;;:::i;:::-;14861:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14915:17;;;;;;;;;;;:26;;:41;14942:13;14953:1;14942:6;:10;;:13;;;;:::i;:::-;14915:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14804:160;:::o;10861:323::-;10956:7;11014;;11003;:18;;10981:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;11102:19;11124:10;:8;:10::i;:::-;11102:32;;11152:24;11164:11;11152:7;:11;;:24;;;;:::i;:::-;11145:31;;;10861:323;;;:::o;14313:483::-;5962:4;5953:6;;:13;;;;;;;;;;;;;;;;;;14391:21:::1;14429:1;14415:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:40;;14460:4;14442;14447:1;14442:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;14486:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14476:4;14481:1;14476:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;14519:62;14536:4;14551:15;;;;;;;;;;;14569:11;14519:8;:62::i;:::-;14592:15;;;;;;;;;;;:66;;;14673:11;14699:1;14715:4;14742;14762:15;14592:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5977:1;5998:5:::0;5989:6;;:14;;;;;;;;;;;;;;;;;;14313:483;:::o;15845:282::-;16001:7;15996:28;;16010:14;:12;:14::i;:::-;15996:28;16035:44;16053:6;16061:9;16072:6;16035:17;:44::i;:::-;16095:7;16090:29;;16104:15;:13;:15::i;:::-;16090:29;15845:282;;;;:::o;2735:132::-;2793:7;2820:39;2824:1;2827;2820:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2813:46;;2735:132;;;;:::o;18820:166::-;18862:7;18883:15;18900;18919:19;:17;:19::i;:::-;18882:56;;;;18958:20;18970:7;18958;:11;;:20;;;;:::i;:::-;18951:27;;;;18820:166;:::o;11192:231::-;11252:1;11239:9;;:14;:30;;;;;11268:1;11257:7;;:12;11239:30;11235:43;;;11271:7;;11235:43;11314:9;;11294:17;:29;;;;11352:7;;11334:15;:25;;;;11392:1;11380:9;:13;;;;11414:1;11404:7;:11;;;;11192:231;:::o;16135:610::-;16282:15;16312:23;16350:12;16377:23;16415:12;16442:13;16469:19;16480:7;16469:10;:19::i;:::-;16267:221;;;;;;;;;;;;16517:28;16537:7;16517;:15;16525:6;16517:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16499:7;:15;16507:6;16499:15;;;;;;;;;;;;;;;:46;;;;16577:39;16600:15;16577:7;:18;16585:9;16577:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16556:7;:18;16564:9;16556:18;;;;;;;;;;;;;;;:60;;;;16627:16;16637:5;16627:9;:16::i;:::-;16654:23;16666:4;16672;16654:11;:23::i;:::-;16710:9;16693:44;;16702:6;16693:44;;;16721:15;16693:44;;;;;;:::i;:::-;;;;;;;;16135:610;;;;;;;;;:::o;11431:117::-;11487:17;;11475:9;:29;;;;11525:15;;11515:7;:25;;;;11431:117::o;2875:223::-;2995:7;3027:1;3023;:5;3030:12;3015:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3054:9;3070:1;3066;:5;;;;:::i;:::-;3054:17;;3089:1;3082:8;;;2875:223;;;;;:::o;18994:263::-;19045:7;19054;19074:15;19092:7;;19074:25;;19110:15;4548:24;19110:25;;19160:20;4548:24;19160:7;;:11;;:20;;;;:::i;:::-;19150:7;:30;19146:61;;;19190:7;;4548:24;19182:25;;;;;;;;19146:61;19232:7;19241;19224:25;;;;;;18994:263;;;:::o;17164:625::-;17264:7;17286;17308;17330;17352;17374;17410:23;17435:12;17449:13;17479:40;17491:7;17500:9;;17511:7;;17479:11;:40::i;:::-;17409:110;;;;;;17530:19;17552:10;:8;:10::i;:::-;17530:32;;17574:15;17591:23;17616:12;17645:46;17657:7;17666:4;17672:5;17679:11;17645;:46::i;:::-;17573:118;;;;;;17720:7;17729:15;17746:4;17752:15;17769:4;17775:5;17712:69;;;;;;;;;;;;;;;;;;;17164:625;;;;;;;:::o;2105:136::-;2163:7;2190:43;2194:1;2197;2190:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2183:50;;2105:136;;;;:::o;1918:179::-;1976:7;1996:9;2012:1;2008;:5;;;;:::i;:::-;1996:17;;2037:1;2032;:6;;2024:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2088:1;2081:8;;;1918:179;;;;:::o;16753:211::-;16806:19;16828:10;:8;:10::i;:::-;16806:32;;16849:13;16865:22;16875:11;16865:5;:9;;:22;;;;:::i;:::-;16849:38;;16923:33;16950:5;16923:7;:22;16939:4;16923:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;16898:7;:22;16914:4;16898:22;;;;;;;;;;;;;;;:58;;;;16753:211;;;:::o;16972:147::-;17050:17;17062:4;17050:7;;:11;;:17;;;;:::i;:::-;17040:7;:27;;;;17091:20;17106:4;17091:10;;:14;;:20;;;;:::i;:::-;17078:10;:33;;;;16972:147;;:::o;17797:471::-;17966:7;17988;18010;18045:12;18060:30;18086:3;18060:21;18072:8;18060:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;18045:45;;18101:13;18117:28;18141:3;18117:19;18129:6;18117:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;18101:44;;18156:23;18182:28;18204:5;18182:17;18194:4;18182:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18156:54;;18231:15;18248:4;18254:5;18223:37;;;;;;;;;17797:471;;;;;;;:::o;18276:536::-;18470:7;18492;18514;18549:15;18567:24;18579:11;18567:7;:11;;:24;;;;:::i;:::-;18549:42;;18602:12;18617:21;18626:11;18617:4;:8;;:21;;;;:::i;:::-;18602:36;;18649:13;18665:22;18675:11;18665:5;:9;;:22;;;;:::i;:::-;18649:38;;18698:23;18724:28;18746:5;18724:17;18736:4;18724:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18698:54;;18773:7;18782:15;18799:4;18765:39;;;;;;;;;;18276:536;;;;;;;;:::o;2481:246::-;2539:7;2568:1;2563;:6;2559:47;;;2593:1;2586:8;;;;2559:47;2616:9;2632:1;2628;:5;;;;:::i;:::-;2616:17;;2661:1;2656;2652;:5;;;;:::i;:::-;:10;2644:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2718:1;2711:8;;;2481:246;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:139::-;1490:5;1528:6;1515:20;1506:29;;1544:33;1571:5;1544:33;:::i;:::-;1496:87;;;;:::o;1589:262::-;1648:6;1697:2;1685:9;1676:7;1672:23;1668:32;1665:2;;;1713:1;1710;1703:12;1665:2;1756:1;1781:53;1826:7;1817:6;1806:9;1802:22;1781:53;:::i;:::-;1771:63;;1727:117;1655:196;;;;:::o;1857:284::-;1927:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:2;;;1992:1;1989;1982:12;1944:2;2035:1;2060:64;2116:7;2107:6;2096:9;2092:22;2060:64;:::i;:::-;2050:74;;2006:128;1934:207;;;;:::o;2147:407::-;2215:6;2223;2272:2;2260:9;2251:7;2247:23;2243:32;2240:2;;;2288:1;2285;2278:12;2240:2;2331:1;2356:53;2401:7;2392:6;2381:9;2377:22;2356:53;:::i;:::-;2346:63;;2302:117;2458:2;2484:53;2529:7;2520:6;2509:9;2505:22;2484:53;:::i;:::-;2474:63;;2429:118;2230:324;;;;;:::o;2560:552::-;2637:6;2645;2653;2702:2;2690:9;2681:7;2677:23;2673:32;2670:2;;;2718:1;2715;2708:12;2670:2;2761:1;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2732:117;2888:2;2914:53;2959:7;2950:6;2939:9;2935:22;2914:53;:::i;:::-;2904:63;;2859:118;3016:2;3042:53;3087:7;3078:6;3067:9;3063:22;3042:53;:::i;:::-;3032:63;;2987:118;2660:452;;;;;:::o;3118:401::-;3183:6;3191;3240:2;3228:9;3219:7;3215:23;3211:32;3208:2;;;3256:1;3253;3246:12;3208:2;3299:1;3324:53;3369:7;3360:6;3349:9;3345:22;3324:53;:::i;:::-;3314:63;;3270:117;3426:2;3452:50;3494:7;3485:6;3474:9;3470:22;3452:50;:::i;:::-;3442:60;;3397:115;3198:321;;;;;:::o;3525:407::-;3593:6;3601;3650:2;3638:9;3629:7;3625:23;3621:32;3618:2;;;3666:1;3663;3656:12;3618:2;3709:1;3734:53;3779:7;3770:6;3759:9;3755:22;3734:53;:::i;:::-;3724:63;;3680:117;3836:2;3862:53;3907:7;3898:6;3887:9;3883:22;3862:53;:::i;:::-;3852:63;;3807:118;3608:324;;;;;:::o;3938:405::-;4022:6;4071:2;4059:9;4050:7;4046:23;4042:32;4039:2;;;4087:1;4084;4077:12;4039:2;4158:1;4147:9;4143:17;4130:31;4188:18;4180:6;4177:30;4174:2;;;4220:1;4217;4210:12;4174:2;4248:78;4318:7;4309:6;4298:9;4294:22;4248:78;:::i;:::-;4238:88;;4101:235;4029:314;;;;:::o;4349:256::-;4405:6;4454:2;4442:9;4433:7;4429:23;4425:32;4422:2;;;4470:1;4467;4460:12;4422:2;4513:1;4538:50;4580:7;4571:6;4560:9;4556:22;4538:50;:::i;:::-;4528:60;;4484:114;4412:193;;;;:::o;4611:262::-;4670:6;4719:2;4707:9;4698:7;4694:23;4690:32;4687:2;;;4735:1;4732;4725:12;4687:2;4778:1;4803:53;4848:7;4839:6;4828:9;4824:22;4803:53;:::i;:::-;4793:63;;4749:117;4677:196;;;;:::o;4879:698::-;4965:6;4973;4981;4989;5038:3;5026:9;5017:7;5013:23;5009:33;5006:2;;;5055:1;5052;5045:12;5006:2;5098:1;5123:53;5168:7;5159:6;5148:9;5144:22;5123:53;:::i;:::-;5113:63;;5069:117;5225:2;5251:53;5296:7;5287:6;5276:9;5272:22;5251:53;:::i;:::-;5241:63;;5196:118;5353:2;5379:53;5424:7;5415:6;5404:9;5400:22;5379:53;:::i;:::-;5369:63;;5324:118;5481:2;5507:53;5552:7;5543:6;5532:9;5528:22;5507:53;:::i;:::-;5497:63;;5452:118;4996:581;;;;;;;:::o;5583:179::-;5652:10;5673:46;5715:3;5707:6;5673:46;:::i;:::-;5751:4;5746:3;5742:14;5728:28;;5663:99;;;;:::o;5768:108::-;5845:24;5863:5;5845:24;:::i;:::-;5840:3;5833:37;5823:53;;:::o;5882:118::-;5969:24;5987:5;5969:24;:::i;:::-;5964:3;5957:37;5947:53;;:::o;6036:732::-;6155:3;6184:54;6232:5;6184:54;:::i;:::-;6254:86;6333:6;6328:3;6254:86;:::i;:::-;6247:93;;6364:56;6414:5;6364:56;:::i;:::-;6443:7;6474:1;6459:284;6484:6;6481:1;6478:13;6459:284;;;6560:6;6554:13;6587:63;6646:3;6631:13;6587:63;:::i;:::-;6580:70;;6673:60;6726:6;6673:60;:::i;:::-;6663:70;;6519:224;6506:1;6503;6499:9;6494:14;;6459:284;;;6463:14;6759:3;6752:10;;6160:608;;;;;;;:::o;6774:109::-;6855:21;6870:5;6855:21;:::i;:::-;6850:3;6843:34;6833:50;;:::o;6889:183::-;7002:63;7059:5;7002:63;:::i;:::-;6997:3;6990:76;6980:92;;:::o;7078:147::-;7173:45;7212:5;7173:45;:::i;:::-;7168:3;7161:58;7151:74;;:::o;7231:364::-;7319:3;7347:39;7380:5;7347:39;:::i;:::-;7402:71;7466:6;7461:3;7402:71;:::i;:::-;7395:78;;7482:52;7527:6;7522:3;7515:4;7508:5;7504:16;7482:52;:::i;:::-;7559:29;7581:6;7559:29;:::i;:::-;7554:3;7550:39;7543:46;;7323:272;;;;;:::o;7601:366::-;7743:3;7764:67;7828:2;7823:3;7764:67;:::i;:::-;7757:74;;7840:93;7929:3;7840:93;:::i;:::-;7958:2;7953:3;7949:12;7942:19;;7747:220;;;:::o;7973:366::-;8115:3;8136:67;8200:2;8195:3;8136:67;:::i;:::-;8129:74;;8212:93;8301:3;8212:93;:::i;:::-;8330:2;8325:3;8321:12;8314:19;;8119:220;;;:::o;8345:366::-;8487:3;8508:67;8572:2;8567:3;8508:67;:::i;:::-;8501:74;;8584:93;8673:3;8584:93;:::i;:::-;8702:2;8697:3;8693:12;8686:19;;8491:220;;;:::o;8717:366::-;8859:3;8880:67;8944:2;8939:3;8880:67;:::i;:::-;8873:74;;8956:93;9045:3;8956:93;:::i;:::-;9074:2;9069:3;9065:12;9058:19;;8863:220;;;:::o;9089:366::-;9231:3;9252:67;9316:2;9311:3;9252:67;:::i;:::-;9245:74;;9328:93;9417:3;9328:93;:::i;:::-;9446:2;9441:3;9437:12;9430:19;;9235:220;;;:::o;9461:366::-;9603:3;9624:67;9688:2;9683:3;9624:67;:::i;:::-;9617:74;;9700:93;9789:3;9700:93;:::i;:::-;9818:2;9813:3;9809:12;9802:19;;9607:220;;;:::o;9833:366::-;9975:3;9996:67;10060:2;10055:3;9996:67;:::i;:::-;9989:74;;10072:93;10161:3;10072:93;:::i;:::-;10190:2;10185:3;10181:12;10174:19;;9979:220;;;:::o;10205:366::-;10347:3;10368:67;10432:2;10427:3;10368:67;:::i;:::-;10361:74;;10444:93;10533:3;10444:93;:::i;:::-;10562:2;10557:3;10553:12;10546:19;;10351:220;;;:::o;10577:366::-;10719:3;10740:67;10804:2;10799:3;10740:67;:::i;:::-;10733:74;;10816:93;10905:3;10816:93;:::i;:::-;10934:2;10929:3;10925:12;10918:19;;10723:220;;;:::o;10949:366::-;11091:3;11112:67;11176:2;11171:3;11112:67;:::i;:::-;11105:74;;11188:93;11277:3;11188:93;:::i;:::-;11306:2;11301:3;11297:12;11290:19;;11095:220;;;:::o;11321:366::-;11463:3;11484:67;11548:2;11543:3;11484:67;:::i;:::-;11477:74;;11560:93;11649:3;11560:93;:::i;:::-;11678:2;11673:3;11669:12;11662:19;;11467:220;;;:::o;11693:366::-;11835:3;11856:67;11920:2;11915:3;11856:67;:::i;:::-;11849:74;;11932:93;12021:3;11932:93;:::i;:::-;12050:2;12045:3;12041:12;12034:19;;11839:220;;;:::o;12065:366::-;12207:3;12228:67;12292:2;12287:3;12228:67;:::i;:::-;12221:74;;12304:93;12393:3;12304:93;:::i;:::-;12422:2;12417:3;12413:12;12406:19;;12211:220;;;:::o;12437:366::-;12579:3;12600:67;12664:2;12659:3;12600:67;:::i;:::-;12593:74;;12676:93;12765:3;12676:93;:::i;:::-;12794:2;12789:3;12785:12;12778:19;;12583:220;;;:::o;12809:118::-;12896:24;12914:5;12896:24;:::i;:::-;12891:3;12884:37;12874:53;;:::o;12933:112::-;13016:22;13032:5;13016:22;:::i;:::-;13011:3;13004:35;12994:51;;:::o;13051:222::-;13144:4;13182:2;13171:9;13167:18;13159:26;;13195:71;13263:1;13252:9;13248:17;13239:6;13195:71;:::i;:::-;13149:124;;;;:::o;13279:210::-;13366:4;13404:2;13393:9;13389:18;13381:26;;13417:65;13479:1;13468:9;13464:17;13455:6;13417:65;:::i;:::-;13371:118;;;;:::o;13495:274::-;13614:4;13652:2;13641:9;13637:18;13629:26;;13665:97;13759:1;13748:9;13744:17;13735:6;13665:97;:::i;:::-;13619:150;;;;:::o;13775:313::-;13888:4;13926:2;13915:9;13911:18;13903:26;;13975:9;13969:4;13965:20;13961:1;13950:9;13946:17;13939:47;14003:78;14076:4;14067:6;14003:78;:::i;:::-;13995:86;;13893:195;;;;:::o;14094:419::-;14260:4;14298:2;14287:9;14283:18;14275:26;;14347:9;14341:4;14337:20;14333:1;14322:9;14318:17;14311:47;14375:131;14501:4;14375:131;:::i;:::-;14367:139;;14265:248;;;:::o;14519:419::-;14685:4;14723:2;14712:9;14708:18;14700:26;;14772:9;14766:4;14762:20;14758:1;14747:9;14743:17;14736:47;14800:131;14926:4;14800:131;:::i;:::-;14792:139;;14690:248;;;:::o;14944:419::-;15110:4;15148:2;15137:9;15133:18;15125:26;;15197:9;15191:4;15187:20;15183:1;15172:9;15168:17;15161:47;15225:131;15351:4;15225:131;:::i;:::-;15217:139;;15115:248;;;:::o;15369:419::-;15535:4;15573:2;15562:9;15558:18;15550:26;;15622:9;15616:4;15612:20;15608:1;15597:9;15593:17;15586:47;15650:131;15776:4;15650:131;:::i;:::-;15642:139;;15540:248;;;:::o;15794:419::-;15960:4;15998:2;15987:9;15983:18;15975:26;;16047:9;16041:4;16037:20;16033:1;16022:9;16018:17;16011:47;16075:131;16201:4;16075:131;:::i;:::-;16067:139;;15965:248;;;:::o;16219:419::-;16385:4;16423:2;16412:9;16408:18;16400:26;;16472:9;16466:4;16462:20;16458:1;16447:9;16443:17;16436:47;16500:131;16626:4;16500:131;:::i;:::-;16492:139;;16390:248;;;:::o;16644:419::-;16810:4;16848:2;16837:9;16833:18;16825:26;;16897:9;16891:4;16887:20;16883:1;16872:9;16868:17;16861:47;16925:131;17051:4;16925:131;:::i;:::-;16917:139;;16815:248;;;:::o;17069:419::-;17235:4;17273:2;17262:9;17258:18;17250:26;;17322:9;17316:4;17312:20;17308:1;17297:9;17293:17;17286:47;17350:131;17476:4;17350:131;:::i;:::-;17342:139;;17240:248;;;:::o;17494:419::-;17660:4;17698:2;17687:9;17683:18;17675:26;;17747:9;17741:4;17737:20;17733:1;17722:9;17718:17;17711:47;17775:131;17901:4;17775:131;:::i;:::-;17767:139;;17665:248;;;:::o;17919:419::-;18085:4;18123:2;18112:9;18108:18;18100:26;;18172:9;18166:4;18162:20;18158:1;18147:9;18143:17;18136:47;18200:131;18326:4;18200:131;:::i;:::-;18192:139;;18090:248;;;:::o;18344:419::-;18510:4;18548:2;18537:9;18533:18;18525:26;;18597:9;18591:4;18587:20;18583:1;18572:9;18568:17;18561:47;18625:131;18751:4;18625:131;:::i;:::-;18617:139;;18515:248;;;:::o;18769:419::-;18935:4;18973:2;18962:9;18958:18;18950:26;;19022:9;19016:4;19012:20;19008:1;18997:9;18993:17;18986:47;19050:131;19176:4;19050:131;:::i;:::-;19042:139;;18940:248;;;:::o;19194:419::-;19360:4;19398:2;19387:9;19383:18;19375:26;;19447:9;19441:4;19437:20;19433:1;19422:9;19418:17;19411:47;19475:131;19601:4;19475:131;:::i;:::-;19467:139;;19365:248;;;:::o;19619:419::-;19785:4;19823:2;19812:9;19808:18;19800:26;;19872:9;19866:4;19862:20;19858:1;19847:9;19843:17;19836:47;19900:131;20026:4;19900:131;:::i;:::-;19892:139;;19790:248;;;:::o;20044:222::-;20137:4;20175:2;20164:9;20160:18;20152:26;;20188:71;20256:1;20245:9;20241:17;20232:6;20188:71;:::i;:::-;20142:124;;;;:::o;20272:831::-;20535:4;20573:3;20562:9;20558:19;20550:27;;20587:71;20655:1;20644:9;20640:17;20631:6;20587:71;:::i;:::-;20668:80;20744:2;20733:9;20729:18;20720:6;20668:80;:::i;:::-;20795:9;20789:4;20785:20;20780:2;20769:9;20765:18;20758:48;20823:108;20926:4;20917:6;20823:108;:::i;:::-;20815:116;;20941:72;21009:2;20998:9;20994:18;20985:6;20941:72;:::i;:::-;21023:73;21091:3;21080:9;21076:19;21067:6;21023:73;:::i;:::-;20540:563;;;;;;;;:::o;21109:214::-;21198:4;21236:2;21225:9;21221:18;21213:26;;21249:67;21313:1;21302:9;21298:17;21289:6;21249:67;:::i;:::-;21203:120;;;;:::o;21329:129::-;21363:6;21390:20;;:::i;:::-;21380:30;;21419:33;21447:4;21439:6;21419:33;:::i;:::-;21370:88;;;:::o;21464:75::-;21497:6;21530:2;21524:9;21514:19;;21504:35;:::o;21545:311::-;21622:4;21712:18;21704:6;21701:30;21698:2;;;21734:18;;:::i;:::-;21698:2;21784:4;21776:6;21772:17;21764:25;;21844:4;21838;21834:15;21826:23;;21627:229;;;:::o;21862:132::-;21929:4;21952:3;21944:11;;21982:4;21977:3;21973:14;21965:22;;21934:60;;;:::o;22000:114::-;22067:6;22101:5;22095:12;22085:22;;22074:40;;;:::o;22120:99::-;22172:6;22206:5;22200:12;22190:22;;22179:40;;;:::o;22225:113::-;22295:4;22327;22322:3;22318:14;22310:22;;22300:38;;;:::o;22344:184::-;22443:11;22477:6;22472:3;22465:19;22517:4;22512:3;22508:14;22493:29;;22455:73;;;;:::o;22534:169::-;22618:11;22652:6;22647:3;22640:19;22692:4;22687:3;22683:14;22668:29;;22630:73;;;;:::o;22709:305::-;22749:3;22768:20;22786:1;22768:20;:::i;:::-;22763:25;;22802:20;22820:1;22802:20;:::i;:::-;22797:25;;22956:1;22888:66;22884:74;22881:1;22878:81;22875:2;;;22962:18;;:::i;:::-;22875:2;23006:1;23003;22999:9;22992:16;;22753:261;;;;:::o;23020:185::-;23060:1;23077:20;23095:1;23077:20;:::i;:::-;23072:25;;23111:20;23129:1;23111:20;:::i;:::-;23106:25;;23150:1;23140:2;;23155:18;;:::i;:::-;23140:2;23197:1;23194;23190:9;23185:14;;23062:143;;;;:::o;23211:348::-;23251:7;23274:20;23292:1;23274:20;:::i;:::-;23269:25;;23308:20;23326:1;23308:20;:::i;:::-;23303:25;;23496:1;23428:66;23424:74;23421:1;23418:81;23413:1;23406:9;23399:17;23395:105;23392:2;;;23503:18;;:::i;:::-;23392:2;23551:1;23548;23544:9;23533:20;;23259:300;;;;:::o;23565:191::-;23605:4;23625:20;23643:1;23625:20;:::i;:::-;23620:25;;23659:20;23677:1;23659:20;:::i;:::-;23654:25;;23698:1;23695;23692:8;23689:2;;;23703:18;;:::i;:::-;23689:2;23748:1;23745;23741:9;23733:17;;23610:146;;;;:::o;23762:96::-;23799:7;23828:24;23846:5;23828:24;:::i;:::-;23817:35;;23807:51;;;:::o;23864:90::-;23898:7;23941:5;23934:13;23927:21;23916:32;;23906:48;;;:::o;23960:126::-;23997:7;24037:42;24030:5;24026:54;24015:65;;24005:81;;;:::o;24092:77::-;24129:7;24158:5;24147:16;;24137:32;;;:::o;24175:86::-;24210:7;24250:4;24243:5;24239:16;24228:27;;24218:43;;;:::o;24267:178::-;24343:9;24376:63;24433:5;24376:63;:::i;:::-;24363:76;;24353:92;;;:::o;24451:139::-;24527:9;24560:24;24578:5;24560:24;:::i;:::-;24547:37;;24537:53;;;:::o;24596:121::-;24654:9;24687:24;24705:5;24687:24;:::i;:::-;24674:37;;24664:53;;;:::o;24723:307::-;24791:1;24801:113;24815:6;24812:1;24809:13;24801:113;;;24900:1;24895:3;24891:11;24885:18;24881:1;24876:3;24872:11;24865:39;24837:2;24834:1;24830:10;24825:15;;24801:113;;;24932:6;24929:1;24926:13;24923:2;;;25012:1;25003:6;24998:3;24994:16;24987:27;24923:2;24772:258;;;;:::o;25036:281::-;25119:27;25141:4;25119:27;:::i;:::-;25111:6;25107:40;25249:6;25237:10;25234:22;25213:18;25201:10;25198:34;25195:62;25192:2;;;25260:18;;:::i;:::-;25192:2;25300:10;25296:2;25289:22;25079:238;;;:::o;25323:233::-;25362:3;25385:24;25403:5;25385:24;:::i;:::-;25376:33;;25431:66;25424:5;25421:77;25418:2;;;25501:18;;:::i;:::-;25418:2;25548:1;25541:5;25537:13;25530:20;;25366:190;;;:::o;25562:180::-;25610:77;25607:1;25600:88;25707:4;25704:1;25697:15;25731:4;25728:1;25721:15;25748:180;25796:77;25793:1;25786:88;25893:4;25890:1;25883:15;25917:4;25914:1;25907:15;25934:180;25982:77;25979:1;25972:88;26079:4;26076:1;26069:15;26103:4;26100:1;26093:15;26120:102;26161:6;26212:2;26208:7;26203:2;26196:5;26192:14;26188:28;26178:38;;26168:54;;;:::o;26228:222::-;26368:34;26364:1;26356:6;26352:14;26345:58;26437:5;26432:2;26424:6;26420:15;26413:30;26334:116;:::o;26456:250::-;26596:34;26592:1;26584:6;26580:14;26573:58;26665:33;26660:2;26652:6;26648:15;26641:58;26562:144;:::o;26712:229::-;26852:34;26848:1;26840:6;26836:14;26829:58;26921:12;26916:2;26908:6;26904:15;26897:37;26818:123;:::o;26947:178::-;27087:30;27083:1;27075:6;27071:14;27064:54;27053:72;:::o;27131:221::-;27271:34;27267:1;27259:6;27255:14;27248:58;27340:4;27335:2;27327:6;27323:15;27316:29;27237:115;:::o;27358:222::-;27498:34;27494:1;27486:6;27482:14;27475:58;27567:5;27562:2;27554:6;27550:15;27543:30;27464:116;:::o;27586:177::-;27726:29;27722:1;27714:6;27710:14;27703:53;27692:71;:::o;27769:173::-;27909:25;27905:1;27897:6;27893:14;27886:49;27875:67;:::o;27948:220::-;28088:34;28084:1;28076:6;28072:14;28065:58;28157:3;28152:2;28144:6;28140:15;28133:28;28054:114;:::o;28174:182::-;28314:34;28310:1;28302:6;28298:14;28291:58;28280:76;:::o;28362:228::-;28502:34;28498:1;28490:6;28486:14;28479:58;28571:11;28566:2;28558:6;28554:15;28547:36;28468:122;:::o;28596:224::-;28736:34;28732:1;28724:6;28720:14;28713:58;28805:7;28800:2;28792:6;28788:15;28781:32;28702:118;:::o;28826:222::-;28966:34;28962:1;28954:6;28950:14;28943:58;29035:5;29030:2;29022:6;29018:15;29011:30;28932:116;:::o;29054:223::-;29194:34;29190:1;29182:6;29178:14;29171:58;29263:6;29258:2;29250:6;29246:15;29239:31;29160:117;:::o;29283:122::-;29356:24;29374:5;29356:24;:::i;:::-;29349:5;29346:35;29336:2;;29395:1;29392;29385:12;29336:2;29326:79;:::o;29411:116::-;29481:21;29496:5;29481:21;:::i;:::-;29474:5;29471:32;29461:2;;29517:1;29514;29507:12;29461:2;29451:76;:::o;29533:122::-;29606:24;29624:5;29606:24;:::i;:::-;29599:5;29596:35;29586:2;;29645:1;29642;29635:12;29586:2;29576:79;:::o

Swarm Source

ipfs://3e0f697146735a0d5fc8d14a8eadb20cab21542e4123be8aeb8a46f3cf6f007d

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.