ETH Price: $2,583.95 (-1.23%)

Contract

0x87Af1Ea6DA99C2a87fAC12D7910DE0249DA96b29
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve177645532023-07-24 17:48:35393 days ago1690220915IN
0x87Af1Ea6...49DA96b29
0 ETH0.0019456941.18317106
Approve177586102023-07-23 21:51:35393 days ago1690149095IN
0x87Af1Ea6...49DA96b29
0 ETH0.0004992220
Approve177586102023-07-23 21:51:35393 days ago1690149095IN
0x87Af1Ea6...49DA96b29
0 ETH0.0005301921.19008892
Approve177511682023-07-22 20:52:23395 days ago1690059143IN
0x87Af1Ea6...49DA96b29
0 ETH0.0006688914.23389715
Approve177496312023-07-22 15:41:59395 days ago1690040519IN
0x87Af1Ea6...49DA96b29
0 ETH0.0009353819.79861541
Approve177475622023-07-22 8:45:35395 days ago1690015535IN
0x87Af1Ea6...49DA96b29
0 ETH0.0007668816.31921796
Approve177473192023-07-22 7:56:23395 days ago1690012583IN
0x87Af1Ea6...49DA96b29
0 ETH0.0007146515.12651899
Approve177464092023-07-22 4:53:11395 days ago1690001591IN
0x87Af1Ea6...49DA96b29
0 ETH0.0007048114.99820974
Approve177463592023-07-22 4:43:11395 days ago1690000991IN
0x87Af1Ea6...49DA96b29
0 ETH0.0006987214.86873206
Approve177463472023-07-22 4:40:47395 days ago1690000847IN
0x87Af1Ea6...49DA96b29
0 ETH0.0007279215.49011723
Approve177463382023-07-22 4:38:59395 days ago1690000739IN
0x87Af1Ea6...49DA96b29
0 ETH0.0007812116.62402112
Approve177463272023-07-22 4:36:47395 days ago1690000607IN
0x87Af1Ea6...49DA96b29
0 ETH0.0007342815.62941279
Approve177463132023-07-22 4:33:59395 days ago1690000439IN
0x87Af1Ea6...49DA96b29
0 ETH0.0007347315.63903559
Approve177462812023-07-22 4:27:35395 days ago1690000055IN
0x87Af1Ea6...49DA96b29
0 ETH0.0007340515.62057257
Approve177462762023-07-22 4:26:35395 days ago1689999995IN
0x87Af1Ea6...49DA96b29
0 ETH0.000767716.33652848
Approve177461282023-07-22 3:56:59395 days ago1689998219IN
0x87Af1Ea6...49DA96b29
0 ETH0.0011947825.25708739
Approve177460642023-07-22 3:44:11395 days ago1689997451IN
0x87Af1Ea6...49DA96b29
0 ETH0.0008755718.50909142
Approve177460222023-07-22 3:35:47395 days ago1689996947IN
0x87Af1Ea6...49DA96b29
0 ETH0.0010177721.51512557
Approve177459242023-07-22 3:15:47395 days ago1689995747IN
0x87Af1Ea6...49DA96b29
0 ETH0.0010132121.44597227
Approve177458962023-07-22 3:10:11395 days ago1689995411IN
0x87Af1Ea6...49DA96b29
0 ETH0.0008621718.2489993
Approve177458922023-07-22 3:09:23395 days ago1689995363IN
0x87Af1Ea6...49DA96b29
0 ETH0.0010866122.97033609
Approve177458582023-07-22 3:02:35395 days ago1689994955IN
0x87Af1Ea6...49DA96b29
0 ETH0.0012520426.50102181
Approve177458542023-07-22 3:01:47395 days ago1689994907IN
0x87Af1Ea6...49DA96b29
0 ETH0.0010638822.65079448
Approve177458492023-07-22 3:00:47395 days ago1689994847IN
0x87Af1Ea6...49DA96b29
0 ETH0.0010541422.31240257
Approve177458422023-07-22 2:59:23395 days ago1689994763IN
0x87Af1Ea6...49DA96b29
0 ETH0.0009867420.88576569
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
177478772023-07-22 9:48:47395 days ago1690019327
0x87Af1Ea6...49DA96b29
0.01204586 ETH
177478772023-07-22 9:48:47395 days ago1690019327
0x87Af1Ea6...49DA96b29
0.01204586 ETH
177462992023-07-22 4:31:11395 days ago1690000271
0x87Af1Ea6...49DA96b29
0.02094342 ETH
177462992023-07-22 4:31:11395 days ago1690000271
0x87Af1Ea6...49DA96b29
0.02094342 ETH
177461402023-07-22 3:59:23395 days ago1689998363
0x87Af1Ea6...49DA96b29
0.03517957 ETH
177461402023-07-22 3:59:23395 days ago1689998363
0x87Af1Ea6...49DA96b29
0.03517957 ETH
177459162023-07-22 3:14:11395 days ago1689995651
0x87Af1Ea6...49DA96b29
0.02846644 ETH
177459162023-07-22 3:14:11395 days ago1689995651
0x87Af1Ea6...49DA96b29
0.02846644 ETH
177458662023-07-22 3:04:11395 days ago1689995051
0x87Af1Ea6...49DA96b29
0.04253644 ETH
177458662023-07-22 3:04:11395 days ago1689995051
0x87Af1Ea6...49DA96b29
0.04253644 ETH
177458552023-07-22 3:01:59395 days ago1689994919
0x87Af1Ea6...49DA96b29
0.1284241 ETH
177458552023-07-22 3:01:59395 days ago1689994919
0x87Af1Ea6...49DA96b29
0.1284241 ETH
177458522023-07-22 3:01:23395 days ago1689994883
0x87Af1Ea6...49DA96b29
0.1284241 ETH
177458522023-07-22 3:01:23395 days ago1689994883
0x87Af1Ea6...49DA96b29
0.1284241 ETH
177458402023-07-22 2:58:47395 days ago1689994727
0x87Af1Ea6...49DA96b29
0.15692 ETH
177458402023-07-22 2:58:47395 days ago1689994727
0x87Af1Ea6...49DA96b29
0.15692 ETH
177458022023-07-22 2:51:11395 days ago1689994271
0x87Af1Ea6...49DA96b29
0.10031996 ETH
177458022023-07-22 2:51:11395 days ago1689994271
0x87Af1Ea6...49DA96b29
0.10031996 ETH
177457992023-07-22 2:50:35395 days ago1689994235
0x87Af1Ea6...49DA96b29
0.09537122 ETH
177457992023-07-22 2:50:35395 days ago1689994235
0x87Af1Ea6...49DA96b29
0.09537122 ETH
177457912023-07-22 2:48:59395 days ago1689994139
0x87Af1Ea6...49DA96b29
0.10352898 ETH
177457912023-07-22 2:48:59395 days ago1689994139
0x87Af1Ea6...49DA96b29
0.10352898 ETH
177457762023-07-22 2:45:59395 days ago1689993959
0x87Af1Ea6...49DA96b29
0.07893417 ETH
177457762023-07-22 2:45:59395 days ago1689993959
0x87Af1Ea6...49DA96b29
0.07893417 ETH
177457432023-07-22 2:39:23395 days ago1689993563
0x87Af1Ea6...49DA96b29
0.03497255 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Hamtaro

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-22
*/

/*
Website: https://hamtaro.fans
Twitter: https://twitter.com/HamtaroETH
Telegram: https://t.me/hamtaroportalerc
*/


// SPDX-License-Identifier:MIT

pragma solidity ^0.8.10;

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

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IDexSwapRouter {
    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);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract Hamtaro is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "Hamtaro";
    string private _symbol = "Hamtaro";
    uint8 private _decimals = 18; 

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint256 public _buyTaxFee = 3;
    uint256 public _sellTaxFee = 3;

    address public FeeWallet = address(0xf9Cd1c0EB524a864136deb721d380435C5065249);
    
    uint256 feedenominator = 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 private _totalSupply = 333_333_333 * 10**_decimals;

    uint256 public swapThreshold = _totalSupply.mul(5).div(1000);     //0.5%

    uint256 public _maxTxAmount =  _totalSupply.mul(10).div(1000);     // 1%
    uint256 public _walletMax = _totalSupply.mul(30).div(1000);        // 3%
    
    bool public swapEnabled = false;
    bool public swapbylimit = true;
    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    bool public activeTrade;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[zeroAddress] = true;
        
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[zeroAddress] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _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 _balances[account];     
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    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);
        _approve(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");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(!activeTrade) {
            require(isExcludedFromFee[sender] || isExcludedFromFee[recipient],"Trading is not enable yet!");
        }
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (overMinimumTokenBalance && !inSwap && isMarketPair[recipient] && swapEnabled) {
                swapBack(contractTokenBalance);
            }
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(_buyTaxFee).div(feedenominator);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(_sellTaxFee).div(feedenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function openTrade() external onlyOwner {

        require(!activeTrade,"Trade Already Active!");

        uint256 contractETH = address(this).balance;
        uint256 contractToken = balanceOf(address(this));

        require(contractETH > 0 && contractToken > 0,"Insufficient Funds!");

        activeTrade = true;
        
        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = IDexSwapFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );

        dexRouter = _dexRouter;

        isWalletLimitExempt[address(dexPair)] = true;
        isWalletLimitExempt[address(dexRouter)] = true;
        isTxLimitExempt[address(dexRouter)] = true;

        isMarketPair[address(dexPair)] = true;

        _allowances[address(this)][address(dexRouter)] = ~uint256(0);
        _allowances[address(this)][address(dexPair)] = ~uint256(0);
        
        _approve(address(this), address(dexRouter), contractToken);

        dexRouter.addLiquidityETH{value: contractETH}(
            address(this),
            contractToken,
            contractToken, // slippage is unavoidable
            contractETH, // slippage is unavoidable
            msg.sender,
            block.timestamp
        );

        swapEnabled = true;
        
    }

    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        if(amountReceived > 0) payable(FeeWallet).transfer(amountReceived);

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,address recipient,uint _amount) external onlyOwner {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function setFee(uint _BuySide, uint _SellSide) external onlyOwner {    
        _buyTaxFee = _BuySide;
        _sellTaxFee = _SellSide;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

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

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

    function setFeeWallet(address _newWallet) external onlyOwner {
        FeeWallet = _newWallet;
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        if(_status) {
            isWalletLimitExempt[_pair] = _status;
        }
    }

    function setSwapBackSettings(bool _enabled, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
    }

    function setSwapthreshold(uint _threshold) external onlyOwner {
        swapThreshold = _threshold;
    }

    function setManualRouter(address _router) external onlyOwner {
        dexRouter = IDexSwapRouter(_router);
    }

    function setManualPair(address _pair) external onlyOwner {
        dexPair = _pair;
    }


}

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":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activeTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_BuySide","type":"uint256"},{"internalType":"uint256","name":"_SellSide","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600781526020017f48616d7461726f0000000000000000000000000000000000000000000000000081525060019080519060200190620000519291906200093e565b506040518060400160405280600781526020017f48616d7461726f00000000000000000000000000000000000000000000000000815250600290805190602001906200009f9291906200093e565b506012600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506003600455600360055573f9cd1c0eb524a864136deb721d380435c5065249600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600755600360009054906101000a900460ff16600a620001a7919062000b88565b6313de4355620001b8919062000bd9565b600e55620001f36103e8620001df6005600e546200073460201b620028c91790919060201c565b620007b860201b620029441790919060201c565b600f556200022e6103e86200021a600a600e546200073460201b620028c91790919060201c565b620007b860201b620029441790919060201c565b601055620002696103e862000255601e600e546200073460201b620028c91790919060201c565b620007b860201b620029441790919060201c565b6011556000601260006101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff0219169083151502179055506001601260036101000a81548160ff021916908315150217905550348015620002e557600080fd5b5062000306620002fa6200080a60201b60201c565b6200081260201b60201c565b6001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e54600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e5460405162000726919062000c4b565b60405180910390a362000e94565b600080831415620007495760009050620007b2565b6000828462000759919062000bd9565b90508284826200076a919062000c97565b14620007ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a49062000d56565b60405180910390fd5b809150505b92915050565b60006200080283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008d660201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808311829062000920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000917919062000e0b565b60405180910390fd5b506000838562000931919062000c97565b9050809150509392505050565b8280546200094c9062000e5e565b90600052602060002090601f016020900481019282620009705760008555620009bc565b82601f106200098b57805160ff1916838001178555620009bc565b82800160010185558215620009bc579182015b82811115620009bb5782518255916020019190600101906200099e565b5b509050620009cb9190620009cf565b5090565b5b80821115620009ea576000816000905550600101620009d0565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a7c5780860481111562000a545762000a53620009ee565b5b600185161562000a645780820291505b808102905062000a748562000a1d565b945062000a34565b94509492505050565b60008262000a97576001905062000b6a565b8162000aa7576000905062000b6a565b816001811462000ac0576002811462000acb5762000b01565b600191505062000b6a565b60ff84111562000ae05762000adf620009ee565b5b8360020a91508482111562000afa5762000af9620009ee565b5b5062000b6a565b5060208310610133831016604e8410600b841016171562000b3b5782820a90508381111562000b355762000b34620009ee565b5b62000b6a565b62000b4a848484600162000a2a565b9250905081840481111562000b645762000b63620009ee565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b958262000b71565b915062000ba28362000b7b565b925062000bd17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a85565b905092915050565b600062000be68262000b71565b915062000bf38362000b71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c2f5762000c2e620009ee565b5b828202905092915050565b62000c458162000b71565b82525050565b600060208201905062000c62600083018462000c3a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ca48262000b71565b915062000cb18362000b71565b92508262000cc45762000cc362000c68565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000d3e60218362000ccf565b915062000d4b8262000ce0565b604082019050919050565b6000602082019050818103600083015262000d718162000d2f565b9050919050565b600081519050919050565b60005b8381101562000da357808201518184015260208101905062000d86565b8381111562000db3576000848401525b50505050565b6000601f19601f8301169050919050565b600062000dd78262000d78565b62000de3818562000ccf565b935062000df581856020860162000d83565b62000e008162000db9565b840191505092915050565b6000602082019050818103600083015262000e27818462000dca565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e7757607f821691505b6020821081141562000e8e5762000e8d62000e2f565b5b50919050565b60805160a051614d3c62000ec860003960008181610caf0152610e07015260008181610ddb0152610e330152614d3c6000f3fe6080604052600436106102e85760003560e01c8063728d41c911610190578063cea9d26f116100dc578063ee828db311610095578063f2fde38b1161006f578063f2fde38b14610b5b578063f71b9bbf14610b84578063f872858a14610bad578063fb201b1d14610bd8576102ef565b8063ee828db314610adc578063efcc52de14610b05578063f242ab4114610b30576102ef565b8063cea9d26f146109e2578063d4e43fb314610a0b578063dd62ed3e14610a34578063df8408fe14610a71578063e6b2603b14610a9a578063e9fd339414610ab1576102ef565b806395d89b4111610149578063adc0d09211610123578063adc0d0921461092a578063ae85ade614610953578063c16dd4a41461097c578063c867d60b146109a5576102ef565b806395d89b4114610885578063a457c2d7146108b0578063a9059cbb146108ed576102ef565b8063728d41c9146107755780637d1db4a51461079e578063807c2d9c146107c95780638b42507f146107f45780638da5cb5b1461083157806390d49b9d1461085c576102ef565b8063395093511161024f5780635c85974f11610208578063651a8987116101e2578063651a8987146106cd5780636ddd1713146106f657806370a0823114610721578063715018a61461075e576102ef565b80635c85974f1461064e5780635ca6de3c146106775780635e42358c146106a2576102ef565b8063395093511461051c5780633ecad271146105595780634974d88f1461059657806352f7c988146105bf5780635342acb4146105e857806359fac51714610625576102ef565b8063200a692d116102a1578063200a692d1461040857806323b872dd1461043357806327c8f835146104705780632b112e491461049b5780632ebd161c146104c6578063313ce567146104f1576102ef565b80630445b667146102f457806306fdde031461031f5780630758d9241461034a5780630930907b14610375578063095ea7b3146103a057806318160ddd146103dd576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bef565b6040516103169190613b60565b60405180910390f35b34801561032b57600080fd5b50610334610bf5565b6040516103419190613c14565b60405180910390f35b34801561035657600080fd5b5061035f610c87565b60405161036c9190613cb5565b60405180910390f35b34801561038157600080fd5b5061038a610cad565b6040516103979190613cf1565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613d69565b610cd1565b6040516103d49190613dc4565b60405180910390f35b3480156103e957600080fd5b506103f2610cef565b6040516103ff9190613b60565b60405180910390f35b34801561041457600080fd5b5061041d610cf9565b60405161042a9190613b60565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613ddf565b610cff565b6040516104679190613dc4565b60405180910390f35b34801561047c57600080fd5b50610485610dd9565b6040516104929190613cf1565b60405180910390f35b3480156104a757600080fd5b506104b0610dfd565b6040516104bd9190613b60565b60405180910390f35b3480156104d257600080fd5b506104db610e7b565b6040516104e89190613cf1565b60405180910390f35b3480156104fd57600080fd5b50610506610ea1565b6040516105139190613e4e565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613d69565b610eb8565b6040516105509190613dc4565b60405180910390f35b34801561056557600080fd5b50610580600480360381019061057b9190613e69565b610f6b565b60405161058d9190613dc4565b60405180910390f35b3480156105a257600080fd5b506105bd60048036038101906105b89190613ec2565b610f8b565b005b3480156105cb57600080fd5b506105e660048036038101906105e19190613eef565b611024565b005b3480156105f457600080fd5b5061060f600480360381019061060a9190613e69565b6110b2565b60405161061c9190613dc4565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190613e69565b6110d2565b005b34801561065a57600080fd5b5061067560048036038101906106709190613f2f565b611192565b005b34801561068357600080fd5b5061068c611218565b6040516106999190613dc4565b60405180910390f35b3480156106ae57600080fd5b506106b761122b565b6040516106c49190613dc4565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190613f5c565b61123e565b005b34801561070257600080fd5b5061070b611315565b6040516107189190613dc4565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190613e69565b611328565b6040516107559190613b60565b60405180910390f35b34801561076a57600080fd5b50610773611371565b005b34801561078157600080fd5b5061079c60048036038101906107979190613f2f565b6113f9565b005b3480156107aa57600080fd5b506107b361147f565b6040516107c09190613b60565b60405180910390f35b3480156107d557600080fd5b506107de611485565b6040516107eb9190613b60565b60405180910390f35b34801561080057600080fd5b5061081b60048036038101906108169190613e69565b61148b565b6040516108289190613dc4565b60405180910390f35b34801561083d57600080fd5b506108466114ab565b6040516108539190613cf1565b60405180910390f35b34801561086857600080fd5b50610883600480360381019061087e9190613e69565b6114d4565b005b34801561089157600080fd5b5061089a611594565b6040516108a79190613c14565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190613d69565b611626565b6040516108e49190613dc4565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190613d69565b6116f3565b6040516109219190613dc4565b60405180910390f35b34801561093657600080fd5b50610951600480360381019061094c9190613f2f565b611712565b005b34801561095f57600080fd5b5061097a60048036038101906109759190613f5c565b611798565b005b34801561098857600080fd5b506109a3600480360381019061099e9190613f5c565b61186f565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613e69565b6119a4565b6040516109d99190613dc4565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a049190613ddf565b6119c4565b005b348015610a1757600080fd5b50610a326004803603810190610a2d9190613f9c565b611b82565b005b348015610a4057600080fd5b50610a5b6004803603810190610a569190613fdc565b611c36565b604051610a689190613b60565b60405180910390f35b348015610a7d57600080fd5b50610a986004803603810190610a939190613f5c565b611cbd565b005b348015610aa657600080fd5b50610aaf611d94565b005b348015610abd57600080fd5b50610ac6611ebf565b604051610ad39190613dc4565b60405180910390f35b348015610ae857600080fd5b50610b036004803603810190610afe9190613ec2565b611ed2565b005b348015610b1157600080fd5b50610b1a611f6b565b604051610b279190613b60565b60405180910390f35b348015610b3c57600080fd5b50610b45611f71565b604051610b529190613cf1565b60405180910390f35b348015610b6757600080fd5b50610b826004803603810190610b7d9190613e69565b611f97565b005b348015610b9057600080fd5b50610bab6004803603810190610ba69190613e69565b61208f565b005b348015610bb957600080fd5b50610bc261214f565b604051610bcf9190613dc4565b60405180910390f35b348015610be457600080fd5b50610bed612162565b005b600f5481565b606060018054610c049061404b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c309061404b565b8015610c7d5780601f10610c5257610100808354040283529160200191610c7d565b820191906000526020600020905b815481529060010190602001808311610c6057829003601f168201915b5050505050905090565b601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610ce5610cde61298e565b8484612996565b6001905092915050565b6000600e54905090565b60055481565b6000610d0c848484612b61565b50610dce84610d1961298e565b610dc985604051806060016040528060288152602001614cba60289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7f61298e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130479092919063ffffffff16565b612996565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e76610e2b7f0000000000000000000000000000000000000000000000000000000000000000611328565b610e68610e577f0000000000000000000000000000000000000000000000000000000000000000611328565b600e546130ab90919063ffffffff16565b6130ab90919063ffffffff16565b905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b6000610f61610ec561298e565b84610f5c8560096000610ed661298e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f590919063ffffffff16565b612996565b6001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b610f9361298e565b73ffffffffffffffffffffffffffffffffffffffff16610fb16114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe906140c9565b60405180910390fd5b80601260036101000a81548160ff02191690831515021790555050565b61102c61298e565b73ffffffffffffffffffffffffffffffffffffffff1661104a6114ab565b73ffffffffffffffffffffffffffffffffffffffff16146110a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611097906140c9565b60405180910390fd5b81600481905550806005819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6110da61298e565b73ffffffffffffffffffffffffffffffffffffffff166110f86114ab565b73ffffffffffffffffffffffffffffffffffffffff161461114e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611145906140c9565b60405180910390fd5b80601260056101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61119a61298e565b73ffffffffffffffffffffffffffffffffffffffff166111b86114ab565b73ffffffffffffffffffffffffffffffffffffffff161461120e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611205906140c9565b60405180910390fd5b8060108190555050565b601260049054906101000a900460ff1681565b601260029054906101000a900460ff1681565b61124661298e565b73ffffffffffffffffffffffffffffffffffffffff166112646114ab565b73ffffffffffffffffffffffffffffffffffffffff16146112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906140c9565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61137961298e565b73ffffffffffffffffffffffffffffffffffffffff166113976114ab565b73ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e4906140c9565b60405180910390fd5b6113f76000613153565b565b61140161298e565b73ffffffffffffffffffffffffffffffffffffffff1661141f6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c906140c9565b60405180910390fd5b8060118190555050565b60105481565b60115481565b600d6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114dc61298e565b73ffffffffffffffffffffffffffffffffffffffff166114fa6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611547906140c9565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600280546115a39061404b565b80601f01602080910402602001604051908101604052809291908181526020018280546115cf9061404b565b801561161c5780601f106115f15761010080835404028352916020019161161c565b820191906000526020600020905b8154815290600101906020018083116115ff57829003601f168201915b5050505050905090565b60006116e961163361298e565b846116e485604051806060016040528060258152602001614ce2602591396009600061165d61298e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130479092919063ffffffff16565b612996565b6001905092915050565b600061170761170061298e565b8484612b61565b506001905092915050565b61171a61298e565b73ffffffffffffffffffffffffffffffffffffffff166117386114ab565b73ffffffffffffffffffffffffffffffffffffffff161461178e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611785906140c9565b60405180910390fd5b80600f8190555050565b6117a061298e565b73ffffffffffffffffffffffffffffffffffffffff166117be6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906140c9565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61187761298e565b73ffffffffffffffffffffffffffffffffffffffff166118956114ab565b73ffffffffffffffffffffffffffffffffffffffff16146118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e2906140c9565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156119a05780600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6119cc61298e565b73ffffffffffffffffffffffffffffffffffffffff166119ea6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a37906140c9565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168383604051602401611a6c9291906140e9565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611af69190614159565b6000604051808303816000865af19150503d8060008114611b33576040519150601f19603f3d011682016040523d82523d6000602084013e611b38565b606091505b5050905080611b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b73906141bc565b60405180910390fd5b50505050565b611b8a61298e565b73ffffffffffffffffffffffffffffffffffffffff16611ba86114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf5906140c9565b60405180910390fd5b81601260006101000a81548160ff02191690831515021790555080601260016101000a81548160ff0219169083151502179055505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cc561298e565b73ffffffffffffffffffffffffffffffffffffffff16611ce36114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d30906140c9565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d9c61298e565b73ffffffffffffffffffffffffffffffffffffffff16611dba6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e07906140c9565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611e3690614202565b60006040518083038185875af1925050503d8060008114611e73576040519150601f19603f3d011682016040523d82523d6000602084013e611e78565b606091505b5050905080611ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb390614263565b60405180910390fd5b50565b601260019054906101000a900460ff1681565b611eda61298e565b73ffffffffffffffffffffffffffffffffffffffff16611ef86114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f45906140c9565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b60045481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f9f61298e565b73ffffffffffffffffffffffffffffffffffffffff16611fbd6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a906140c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a906142f5565b60405180910390fd5b61208c81613153565b50565b61209761298e565b73ffffffffffffffffffffffffffffffffffffffff166120b56114ab565b73ffffffffffffffffffffffffffffffffffffffff161461210b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612102906140c9565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260039054906101000a900460ff1681565b61216a61298e565b73ffffffffffffffffffffffffffffffffffffffff166121886114ab565b73ffffffffffffffffffffffffffffffffffffffff16146121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d5906140c9565b60405180910390fd5b601260049054906101000a900460ff161561222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222590614361565b60405180910390fd5b6000479050600061223e30611328565b90506000821180156122505750600081115b61228f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612286906143cd565b60405180910390fd5b6001601260046101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123329190614402565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bd9190614402565b6040518363ffffffff1660e01b81526004016123da92919061442f565b6020604051808303816000875af11580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d9190614402565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260056101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fd30601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612996565b601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843085868833426040518863ffffffff1660e01b815260040161286396959493929190614458565b60606040518083038185885af1158015612881573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128a691906144ce565b5050506001601260006101000a81548160ff021916908315150217905550505050565b6000808314156128dc576000905061293e565b600082846128ea9190614550565b90508284826128f991906145d9565b14612939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129309061467c565b60405180910390fd5b809150505b92915050565b600061298683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613217565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fd9061470e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d906147a0565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b549190613b60565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc990614832565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c39906148c4565b60405180910390fd5b60008211612c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7c90614956565b60405180910390fd5b601260049054906101000a900460ff16612d7a57600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d3a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d70906149c2565b60405180910390fd5b5b601360149054906101000a900460ff1615612da157612d9a84848461327a565b9050613040565b6000612dac30611328565b90506000600f548210159050808015612dd25750601360149054906101000a900460ff16155b8015612e275750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612e3f5750601260009054906101000a900460ff165b15612e4e57612e4d8261344d565b5b612ed7846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130479092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612f26878761353b565b612f3a57612f358787876136a6565b612f3c565b845b9050612f9081600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f590919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130309190613b60565b60405180910390a3600193505050505b9392505050565b600083831115829061308f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130869190613c14565b60405180910390fd5b506000838561309e91906149e2565b9050809150509392505050565b60006130ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613047565b905092915050565b60008082846131049190614a16565b905083811015613149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314090614ab8565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808311829061325e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132559190613c14565b60405180910390fd5b506000838561326d91906145d9565b9050809150509392505050565b6000613305826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130479092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061339a82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161343a9190613b60565b60405180910390a3600190509392505050565b6001601360146101000a81548160ff021916908315150217905550601260019054906101000a900460ff161561348357600f5490505b6000479050613491826138cb565b60006134a682476130ab90919063ffffffff16565b9050600081111561351b57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613519573d6000803e3d6000fd5b505b50506000601360146101000a81548160ff02191690831515021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135de5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135ec57600190506136a0565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061368d5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561369b57600090506136a0565b600090505b92915050565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561372b57613724600754613716600454866128c990919063ffffffff16565b61294490919063ffffffff16565b90506137aa565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137a9576137a6600754613798600554866128c990919063ffffffff16565b61294490919063ffffffff16565b90505b5b60008111156138ae5761380581600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138a59190613b60565b60405180910390a35b6138c181846130ab90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156138e8576138e7614ad8565b5b6040519080825280602002602001820160405280156139165781602001602082028036833780820191505090505b509050308160008151811061392e5761392d614b07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f99190614402565b81600181518110613a0d57613a0c614b07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a7430601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612996565b601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ad8959493929190614c2f565b600060405180830381600087803b158015613af257600080fd5b505af1158015613b06573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613b3b929190614c89565b60405180910390a15050565b6000819050919050565b613b5a81613b47565b82525050565b6000602082019050613b756000830184613b51565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bb5578082015181840152602081019050613b9a565b83811115613bc4576000848401525b50505050565b6000601f19601f8301169050919050565b6000613be682613b7b565b613bf08185613b86565b9350613c00818560208601613b97565b613c0981613bca565b840191505092915050565b60006020820190508181036000830152613c2e8184613bdb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c7b613c76613c7184613c36565b613c56565b613c36565b9050919050565b6000613c8d82613c60565b9050919050565b6000613c9f82613c82565b9050919050565b613caf81613c94565b82525050565b6000602082019050613cca6000830184613ca6565b92915050565b6000613cdb82613c36565b9050919050565b613ceb81613cd0565b82525050565b6000602082019050613d066000830184613ce2565b92915050565b600080fd5b613d1a81613cd0565b8114613d2557600080fd5b50565b600081359050613d3781613d11565b92915050565b613d4681613b47565b8114613d5157600080fd5b50565b600081359050613d6381613d3d565b92915050565b60008060408385031215613d8057613d7f613d0c565b5b6000613d8e85828601613d28565b9250506020613d9f85828601613d54565b9150509250929050565b60008115159050919050565b613dbe81613da9565b82525050565b6000602082019050613dd96000830184613db5565b92915050565b600080600060608486031215613df857613df7613d0c565b5b6000613e0686828701613d28565b9350506020613e1786828701613d28565b9250506040613e2886828701613d54565b9150509250925092565b600060ff82169050919050565b613e4881613e32565b82525050565b6000602082019050613e636000830184613e3f565b92915050565b600060208284031215613e7f57613e7e613d0c565b5b6000613e8d84828501613d28565b91505092915050565b613e9f81613da9565b8114613eaa57600080fd5b50565b600081359050613ebc81613e96565b92915050565b600060208284031215613ed857613ed7613d0c565b5b6000613ee684828501613ead565b91505092915050565b60008060408385031215613f0657613f05613d0c565b5b6000613f1485828601613d54565b9250506020613f2585828601613d54565b9150509250929050565b600060208284031215613f4557613f44613d0c565b5b6000613f5384828501613d54565b91505092915050565b60008060408385031215613f7357613f72613d0c565b5b6000613f8185828601613d28565b9250506020613f9285828601613ead565b9150509250929050565b60008060408385031215613fb357613fb2613d0c565b5b6000613fc185828601613ead565b9250506020613fd285828601613ead565b9150509250929050565b60008060408385031215613ff357613ff2613d0c565b5b600061400185828601613d28565b925050602061401285828601613d28565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061406357607f821691505b602082108114156140775761407661401c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140b3602083613b86565b91506140be8261407d565b602082019050919050565b600060208201905081810360008301526140e2816140a6565b9050919050565b60006040820190506140fe6000830185613ce2565b61410b6020830184613b51565b9392505050565b600081519050919050565b600081905092915050565b600061413382614112565b61413d818561411d565b935061414d818560208601613b97565b80840191505092915050565b60006141658284614128565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b60006141a6601483613b86565b91506141b182614170565b602082019050919050565b600060208201905081810360008301526141d581614199565b9050919050565b50565b60006141ec60008361411d565b91506141f7826141dc565b600082019050919050565b600061420d826141df565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b600061424d601483613b86565b915061425882614217565b602082019050919050565b6000602082019050818103600083015261427c81614240565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142df602683613b86565b91506142ea82614283565b604082019050919050565b6000602082019050818103600083015261430e816142d2565b9050919050565b7f547261646520416c726561647920416374697665210000000000000000000000600082015250565b600061434b601583613b86565b915061435682614315565b602082019050919050565b6000602082019050818103600083015261437a8161433e565b9050919050565b7f496e73756666696369656e742046756e64732100000000000000000000000000600082015250565b60006143b7601383613b86565b91506143c282614381565b602082019050919050565b600060208201905081810360008301526143e6816143aa565b9050919050565b6000815190506143fc81613d11565b92915050565b60006020828403121561441857614417613d0c565b5b6000614426848285016143ed565b91505092915050565b60006040820190506144446000830185613ce2565b6144516020830184613ce2565b9392505050565b600060c08201905061446d6000830189613ce2565b61447a6020830188613b51565b6144876040830187613b51565b6144946060830186613b51565b6144a16080830185613ce2565b6144ae60a0830184613b51565b979650505050505050565b6000815190506144c881613d3d565b92915050565b6000806000606084860312156144e7576144e6613d0c565b5b60006144f5868287016144b9565b9350506020614506868287016144b9565b9250506040614517868287016144b9565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061455b82613b47565b915061456683613b47565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459f5761459e614521565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145e482613b47565b91506145ef83613b47565b9250826145ff576145fe6145aa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614666602183613b86565b91506146718261460a565b604082019050919050565b6000602082019050818103600083015261469581614659565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146f8602483613b86565b91506147038261469c565b604082019050919050565b60006020820190508181036000830152614727816146eb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061478a602283613b86565b91506147958261472e565b604082019050919050565b600060208201905081810360008301526147b98161477d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061481c602583613b86565b9150614827826147c0565b604082019050919050565b6000602082019050818103600083015261484b8161480f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006148ae602383613b86565b91506148b982614852565b604082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614940602983613b86565b915061494b826148e4565b604082019050919050565b6000602082019050818103600083015261496f81614933565b9050919050565b7f54726164696e67206973206e6f7420656e61626c652079657421000000000000600082015250565b60006149ac601a83613b86565b91506149b782614976565b602082019050919050565b600060208201905081810360008301526149db8161499f565b9050919050565b60006149ed82613b47565b91506149f883613b47565b925082821015614a0b57614a0a614521565b5b828203905092915050565b6000614a2182613b47565b9150614a2c83613b47565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a6157614a60614521565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614aa2601b83613b86565b9150614aad82614a6c565b602082019050919050565b60006020820190508181036000830152614ad181614a95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614b5b614b56614b5184614b36565b613c56565b613b47565b9050919050565b614b6b81614b40565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ba681613cd0565b82525050565b6000614bb88383614b9d565b60208301905092915050565b6000602082019050919050565b6000614bdc82614b71565b614be68185614b7c565b9350614bf183614b8d565b8060005b83811015614c22578151614c098882614bac565b9750614c1483614bc4565b925050600181019050614bf5565b5085935050505092915050565b600060a082019050614c446000830188613b51565b614c516020830187614b62565b8181036040830152614c638186614bd1565b9050614c726060830185613ce2565b614c7f6080830184613b51565b9695505050505050565b6000604082019050614c9e6000830185613b51565b8181036020830152614cb08184614bd1565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e8eee29927d7df6f9a0dd0a380776ee415ed5b0a33377a698af0c313c039062264736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063728d41c911610190578063cea9d26f116100dc578063ee828db311610095578063f2fde38b1161006f578063f2fde38b14610b5b578063f71b9bbf14610b84578063f872858a14610bad578063fb201b1d14610bd8576102ef565b8063ee828db314610adc578063efcc52de14610b05578063f242ab4114610b30576102ef565b8063cea9d26f146109e2578063d4e43fb314610a0b578063dd62ed3e14610a34578063df8408fe14610a71578063e6b2603b14610a9a578063e9fd339414610ab1576102ef565b806395d89b4111610149578063adc0d09211610123578063adc0d0921461092a578063ae85ade614610953578063c16dd4a41461097c578063c867d60b146109a5576102ef565b806395d89b4114610885578063a457c2d7146108b0578063a9059cbb146108ed576102ef565b8063728d41c9146107755780637d1db4a51461079e578063807c2d9c146107c95780638b42507f146107f45780638da5cb5b1461083157806390d49b9d1461085c576102ef565b8063395093511161024f5780635c85974f11610208578063651a8987116101e2578063651a8987146106cd5780636ddd1713146106f657806370a0823114610721578063715018a61461075e576102ef565b80635c85974f1461064e5780635ca6de3c146106775780635e42358c146106a2576102ef565b8063395093511461051c5780633ecad271146105595780634974d88f1461059657806352f7c988146105bf5780635342acb4146105e857806359fac51714610625576102ef565b8063200a692d116102a1578063200a692d1461040857806323b872dd1461043357806327c8f835146104705780632b112e491461049b5780632ebd161c146104c6578063313ce567146104f1576102ef565b80630445b667146102f457806306fdde031461031f5780630758d9241461034a5780630930907b14610375578063095ea7b3146103a057806318160ddd146103dd576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bef565b6040516103169190613b60565b60405180910390f35b34801561032b57600080fd5b50610334610bf5565b6040516103419190613c14565b60405180910390f35b34801561035657600080fd5b5061035f610c87565b60405161036c9190613cb5565b60405180910390f35b34801561038157600080fd5b5061038a610cad565b6040516103979190613cf1565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613d69565b610cd1565b6040516103d49190613dc4565b60405180910390f35b3480156103e957600080fd5b506103f2610cef565b6040516103ff9190613b60565b60405180910390f35b34801561041457600080fd5b5061041d610cf9565b60405161042a9190613b60565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613ddf565b610cff565b6040516104679190613dc4565b60405180910390f35b34801561047c57600080fd5b50610485610dd9565b6040516104929190613cf1565b60405180910390f35b3480156104a757600080fd5b506104b0610dfd565b6040516104bd9190613b60565b60405180910390f35b3480156104d257600080fd5b506104db610e7b565b6040516104e89190613cf1565b60405180910390f35b3480156104fd57600080fd5b50610506610ea1565b6040516105139190613e4e565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613d69565b610eb8565b6040516105509190613dc4565b60405180910390f35b34801561056557600080fd5b50610580600480360381019061057b9190613e69565b610f6b565b60405161058d9190613dc4565b60405180910390f35b3480156105a257600080fd5b506105bd60048036038101906105b89190613ec2565b610f8b565b005b3480156105cb57600080fd5b506105e660048036038101906105e19190613eef565b611024565b005b3480156105f457600080fd5b5061060f600480360381019061060a9190613e69565b6110b2565b60405161061c9190613dc4565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190613e69565b6110d2565b005b34801561065a57600080fd5b5061067560048036038101906106709190613f2f565b611192565b005b34801561068357600080fd5b5061068c611218565b6040516106999190613dc4565b60405180910390f35b3480156106ae57600080fd5b506106b761122b565b6040516106c49190613dc4565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190613f5c565b61123e565b005b34801561070257600080fd5b5061070b611315565b6040516107189190613dc4565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190613e69565b611328565b6040516107559190613b60565b60405180910390f35b34801561076a57600080fd5b50610773611371565b005b34801561078157600080fd5b5061079c60048036038101906107979190613f2f565b6113f9565b005b3480156107aa57600080fd5b506107b361147f565b6040516107c09190613b60565b60405180910390f35b3480156107d557600080fd5b506107de611485565b6040516107eb9190613b60565b60405180910390f35b34801561080057600080fd5b5061081b60048036038101906108169190613e69565b61148b565b6040516108289190613dc4565b60405180910390f35b34801561083d57600080fd5b506108466114ab565b6040516108539190613cf1565b60405180910390f35b34801561086857600080fd5b50610883600480360381019061087e9190613e69565b6114d4565b005b34801561089157600080fd5b5061089a611594565b6040516108a79190613c14565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190613d69565b611626565b6040516108e49190613dc4565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190613d69565b6116f3565b6040516109219190613dc4565b60405180910390f35b34801561093657600080fd5b50610951600480360381019061094c9190613f2f565b611712565b005b34801561095f57600080fd5b5061097a60048036038101906109759190613f5c565b611798565b005b34801561098857600080fd5b506109a3600480360381019061099e9190613f5c565b61186f565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613e69565b6119a4565b6040516109d99190613dc4565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a049190613ddf565b6119c4565b005b348015610a1757600080fd5b50610a326004803603810190610a2d9190613f9c565b611b82565b005b348015610a4057600080fd5b50610a5b6004803603810190610a569190613fdc565b611c36565b604051610a689190613b60565b60405180910390f35b348015610a7d57600080fd5b50610a986004803603810190610a939190613f5c565b611cbd565b005b348015610aa657600080fd5b50610aaf611d94565b005b348015610abd57600080fd5b50610ac6611ebf565b604051610ad39190613dc4565b60405180910390f35b348015610ae857600080fd5b50610b036004803603810190610afe9190613ec2565b611ed2565b005b348015610b1157600080fd5b50610b1a611f6b565b604051610b279190613b60565b60405180910390f35b348015610b3c57600080fd5b50610b45611f71565b604051610b529190613cf1565b60405180910390f35b348015610b6757600080fd5b50610b826004803603810190610b7d9190613e69565b611f97565b005b348015610b9057600080fd5b50610bab6004803603810190610ba69190613e69565b61208f565b005b348015610bb957600080fd5b50610bc261214f565b604051610bcf9190613dc4565b60405180910390f35b348015610be457600080fd5b50610bed612162565b005b600f5481565b606060018054610c049061404b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c309061404b565b8015610c7d5780601f10610c5257610100808354040283529160200191610c7d565b820191906000526020600020905b815481529060010190602001808311610c6057829003601f168201915b5050505050905090565b601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610ce5610cde61298e565b8484612996565b6001905092915050565b6000600e54905090565b60055481565b6000610d0c848484612b61565b50610dce84610d1961298e565b610dc985604051806060016040528060288152602001614cba60289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7f61298e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130479092919063ffffffff16565b612996565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610e76610e2b7f0000000000000000000000000000000000000000000000000000000000000000611328565b610e68610e577f000000000000000000000000000000000000000000000000000000000000dead611328565b600e546130ab90919063ffffffff16565b6130ab90919063ffffffff16565b905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b6000610f61610ec561298e565b84610f5c8560096000610ed661298e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f590919063ffffffff16565b612996565b6001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b610f9361298e565b73ffffffffffffffffffffffffffffffffffffffff16610fb16114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe906140c9565b60405180910390fd5b80601260036101000a81548160ff02191690831515021790555050565b61102c61298e565b73ffffffffffffffffffffffffffffffffffffffff1661104a6114ab565b73ffffffffffffffffffffffffffffffffffffffff16146110a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611097906140c9565b60405180910390fd5b81600481905550806005819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6110da61298e565b73ffffffffffffffffffffffffffffffffffffffff166110f86114ab565b73ffffffffffffffffffffffffffffffffffffffff161461114e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611145906140c9565b60405180910390fd5b80601260056101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61119a61298e565b73ffffffffffffffffffffffffffffffffffffffff166111b86114ab565b73ffffffffffffffffffffffffffffffffffffffff161461120e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611205906140c9565b60405180910390fd5b8060108190555050565b601260049054906101000a900460ff1681565b601260029054906101000a900460ff1681565b61124661298e565b73ffffffffffffffffffffffffffffffffffffffff166112646114ab565b73ffffffffffffffffffffffffffffffffffffffff16146112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906140c9565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61137961298e565b73ffffffffffffffffffffffffffffffffffffffff166113976114ab565b73ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e4906140c9565b60405180910390fd5b6113f76000613153565b565b61140161298e565b73ffffffffffffffffffffffffffffffffffffffff1661141f6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c906140c9565b60405180910390fd5b8060118190555050565b60105481565b60115481565b600d6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114dc61298e565b73ffffffffffffffffffffffffffffffffffffffff166114fa6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611547906140c9565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600280546115a39061404b565b80601f01602080910402602001604051908101604052809291908181526020018280546115cf9061404b565b801561161c5780601f106115f15761010080835404028352916020019161161c565b820191906000526020600020905b8154815290600101906020018083116115ff57829003601f168201915b5050505050905090565b60006116e961163361298e565b846116e485604051806060016040528060258152602001614ce2602591396009600061165d61298e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130479092919063ffffffff16565b612996565b6001905092915050565b600061170761170061298e565b8484612b61565b506001905092915050565b61171a61298e565b73ffffffffffffffffffffffffffffffffffffffff166117386114ab565b73ffffffffffffffffffffffffffffffffffffffff161461178e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611785906140c9565b60405180910390fd5b80600f8190555050565b6117a061298e565b73ffffffffffffffffffffffffffffffffffffffff166117be6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906140c9565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61187761298e565b73ffffffffffffffffffffffffffffffffffffffff166118956114ab565b73ffffffffffffffffffffffffffffffffffffffff16146118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e2906140c9565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156119a05780600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6119cc61298e565b73ffffffffffffffffffffffffffffffffffffffff166119ea6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a37906140c9565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168383604051602401611a6c9291906140e9565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611af69190614159565b6000604051808303816000865af19150503d8060008114611b33576040519150601f19603f3d011682016040523d82523d6000602084013e611b38565b606091505b5050905080611b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b73906141bc565b60405180910390fd5b50505050565b611b8a61298e565b73ffffffffffffffffffffffffffffffffffffffff16611ba86114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf5906140c9565b60405180910390fd5b81601260006101000a81548160ff02191690831515021790555080601260016101000a81548160ff0219169083151502179055505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cc561298e565b73ffffffffffffffffffffffffffffffffffffffff16611ce36114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d30906140c9565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d9c61298e565b73ffffffffffffffffffffffffffffffffffffffff16611dba6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e07906140c9565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611e3690614202565b60006040518083038185875af1925050503d8060008114611e73576040519150601f19603f3d011682016040523d82523d6000602084013e611e78565b606091505b5050905080611ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb390614263565b60405180910390fd5b50565b601260019054906101000a900460ff1681565b611eda61298e565b73ffffffffffffffffffffffffffffffffffffffff16611ef86114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f45906140c9565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b60045481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f9f61298e565b73ffffffffffffffffffffffffffffffffffffffff16611fbd6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a906140c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a906142f5565b60405180910390fd5b61208c81613153565b50565b61209761298e565b73ffffffffffffffffffffffffffffffffffffffff166120b56114ab565b73ffffffffffffffffffffffffffffffffffffffff161461210b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612102906140c9565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260039054906101000a900460ff1681565b61216a61298e565b73ffffffffffffffffffffffffffffffffffffffff166121886114ab565b73ffffffffffffffffffffffffffffffffffffffff16146121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d5906140c9565b60405180910390fd5b601260049054906101000a900460ff161561222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222590614361565b60405180910390fd5b6000479050600061223e30611328565b90506000821180156122505750600081115b61228f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612286906143cd565b60405180910390fd5b6001601260046101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123329190614402565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bd9190614402565b6040518363ffffffff1660e01b81526004016123da92919061442f565b6020604051808303816000875af11580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d9190614402565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260056101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fd30601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612996565b601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843085868833426040518863ffffffff1660e01b815260040161286396959493929190614458565b60606040518083038185885af1158015612881573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128a691906144ce565b5050506001601260006101000a81548160ff021916908315150217905550505050565b6000808314156128dc576000905061293e565b600082846128ea9190614550565b90508284826128f991906145d9565b14612939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129309061467c565b60405180910390fd5b809150505b92915050565b600061298683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613217565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fd9061470e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d906147a0565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b549190613b60565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc990614832565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c39906148c4565b60405180910390fd5b60008211612c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7c90614956565b60405180910390fd5b601260049054906101000a900460ff16612d7a57600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d3a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d70906149c2565b60405180910390fd5b5b601360149054906101000a900460ff1615612da157612d9a84848461327a565b9050613040565b6000612dac30611328565b90506000600f548210159050808015612dd25750601360149054906101000a900460ff16155b8015612e275750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612e3f5750601260009054906101000a900460ff165b15612e4e57612e4d8261344d565b5b612ed7846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130479092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612f26878761353b565b612f3a57612f358787876136a6565b612f3c565b845b9050612f9081600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f590919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130309190613b60565b60405180910390a3600193505050505b9392505050565b600083831115829061308f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130869190613c14565b60405180910390fd5b506000838561309e91906149e2565b9050809150509392505050565b60006130ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613047565b905092915050565b60008082846131049190614a16565b905083811015613149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314090614ab8565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808311829061325e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132559190613c14565b60405180910390fd5b506000838561326d91906145d9565b9050809150509392505050565b6000613305826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130479092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061339a82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161343a9190613b60565b60405180910390a3600190509392505050565b6001601360146101000a81548160ff021916908315150217905550601260019054906101000a900460ff161561348357600f5490505b6000479050613491826138cb565b60006134a682476130ab90919063ffffffff16565b9050600081111561351b57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613519573d6000803e3d6000fd5b505b50506000601360146101000a81548160ff02191690831515021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135de5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135ec57600190506136a0565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061368d5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561369b57600090506136a0565b600090505b92915050565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561372b57613724600754613716600454866128c990919063ffffffff16565b61294490919063ffffffff16565b90506137aa565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137a9576137a6600754613798600554866128c990919063ffffffff16565b61294490919063ffffffff16565b90505b5b60008111156138ae5761380581600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138a59190613b60565b60405180910390a35b6138c181846130ab90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156138e8576138e7614ad8565b5b6040519080825280602002602001820160405280156139165781602001602082028036833780820191505090505b509050308160008151811061392e5761392d614b07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f99190614402565b81600181518110613a0d57613a0c614b07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a7430601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612996565b601260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ad8959493929190614c2f565b600060405180830381600087803b158015613af257600080fd5b505af1158015613b06573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613b3b929190614c89565b60405180910390a15050565b6000819050919050565b613b5a81613b47565b82525050565b6000602082019050613b756000830184613b51565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bb5578082015181840152602081019050613b9a565b83811115613bc4576000848401525b50505050565b6000601f19601f8301169050919050565b6000613be682613b7b565b613bf08185613b86565b9350613c00818560208601613b97565b613c0981613bca565b840191505092915050565b60006020820190508181036000830152613c2e8184613bdb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c7b613c76613c7184613c36565b613c56565b613c36565b9050919050565b6000613c8d82613c60565b9050919050565b6000613c9f82613c82565b9050919050565b613caf81613c94565b82525050565b6000602082019050613cca6000830184613ca6565b92915050565b6000613cdb82613c36565b9050919050565b613ceb81613cd0565b82525050565b6000602082019050613d066000830184613ce2565b92915050565b600080fd5b613d1a81613cd0565b8114613d2557600080fd5b50565b600081359050613d3781613d11565b92915050565b613d4681613b47565b8114613d5157600080fd5b50565b600081359050613d6381613d3d565b92915050565b60008060408385031215613d8057613d7f613d0c565b5b6000613d8e85828601613d28565b9250506020613d9f85828601613d54565b9150509250929050565b60008115159050919050565b613dbe81613da9565b82525050565b6000602082019050613dd96000830184613db5565b92915050565b600080600060608486031215613df857613df7613d0c565b5b6000613e0686828701613d28565b9350506020613e1786828701613d28565b9250506040613e2886828701613d54565b9150509250925092565b600060ff82169050919050565b613e4881613e32565b82525050565b6000602082019050613e636000830184613e3f565b92915050565b600060208284031215613e7f57613e7e613d0c565b5b6000613e8d84828501613d28565b91505092915050565b613e9f81613da9565b8114613eaa57600080fd5b50565b600081359050613ebc81613e96565b92915050565b600060208284031215613ed857613ed7613d0c565b5b6000613ee684828501613ead565b91505092915050565b60008060408385031215613f0657613f05613d0c565b5b6000613f1485828601613d54565b9250506020613f2585828601613d54565b9150509250929050565b600060208284031215613f4557613f44613d0c565b5b6000613f5384828501613d54565b91505092915050565b60008060408385031215613f7357613f72613d0c565b5b6000613f8185828601613d28565b9250506020613f9285828601613ead565b9150509250929050565b60008060408385031215613fb357613fb2613d0c565b5b6000613fc185828601613ead565b9250506020613fd285828601613ead565b9150509250929050565b60008060408385031215613ff357613ff2613d0c565b5b600061400185828601613d28565b925050602061401285828601613d28565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061406357607f821691505b602082108114156140775761407661401c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140b3602083613b86565b91506140be8261407d565b602082019050919050565b600060208201905081810360008301526140e2816140a6565b9050919050565b60006040820190506140fe6000830185613ce2565b61410b6020830184613b51565b9392505050565b600081519050919050565b600081905092915050565b600061413382614112565b61413d818561411d565b935061414d818560208601613b97565b80840191505092915050565b60006141658284614128565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b60006141a6601483613b86565b91506141b182614170565b602082019050919050565b600060208201905081810360008301526141d581614199565b9050919050565b50565b60006141ec60008361411d565b91506141f7826141dc565b600082019050919050565b600061420d826141df565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b600061424d601483613b86565b915061425882614217565b602082019050919050565b6000602082019050818103600083015261427c81614240565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142df602683613b86565b91506142ea82614283565b604082019050919050565b6000602082019050818103600083015261430e816142d2565b9050919050565b7f547261646520416c726561647920416374697665210000000000000000000000600082015250565b600061434b601583613b86565b915061435682614315565b602082019050919050565b6000602082019050818103600083015261437a8161433e565b9050919050565b7f496e73756666696369656e742046756e64732100000000000000000000000000600082015250565b60006143b7601383613b86565b91506143c282614381565b602082019050919050565b600060208201905081810360008301526143e6816143aa565b9050919050565b6000815190506143fc81613d11565b92915050565b60006020828403121561441857614417613d0c565b5b6000614426848285016143ed565b91505092915050565b60006040820190506144446000830185613ce2565b6144516020830184613ce2565b9392505050565b600060c08201905061446d6000830189613ce2565b61447a6020830188613b51565b6144876040830187613b51565b6144946060830186613b51565b6144a16080830185613ce2565b6144ae60a0830184613b51565b979650505050505050565b6000815190506144c881613d3d565b92915050565b6000806000606084860312156144e7576144e6613d0c565b5b60006144f5868287016144b9565b9350506020614506868287016144b9565b9250506040614517868287016144b9565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061455b82613b47565b915061456683613b47565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459f5761459e614521565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145e482613b47565b91506145ef83613b47565b9250826145ff576145fe6145aa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614666602183613b86565b91506146718261460a565b604082019050919050565b6000602082019050818103600083015261469581614659565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146f8602483613b86565b91506147038261469c565b604082019050919050565b60006020820190508181036000830152614727816146eb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061478a602283613b86565b91506147958261472e565b604082019050919050565b600060208201905081810360008301526147b98161477d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061481c602583613b86565b9150614827826147c0565b604082019050919050565b6000602082019050818103600083015261484b8161480f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006148ae602383613b86565b91506148b982614852565b604082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614940602983613b86565b915061494b826148e4565b604082019050919050565b6000602082019050818103600083015261496f81614933565b9050919050565b7f54726164696e67206973206e6f7420656e61626c652079657421000000000000600082015250565b60006149ac601a83613b86565b91506149b782614976565b602082019050919050565b600060208201905081810360008301526149db8161499f565b9050919050565b60006149ed82613b47565b91506149f883613b47565b925082821015614a0b57614a0a614521565b5b828203905092915050565b6000614a2182613b47565b9150614a2c83613b47565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a6157614a60614521565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614aa2601b83613b86565b9150614aad82614a6c565b602082019050919050565b60006020820190508181036000830152614ad181614a95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614b5b614b56614b5184614b36565b613c56565b613b47565b9050919050565b614b6b81614b40565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ba681613cd0565b82525050565b6000614bb88383614b9d565b60208301905092915050565b6000602082019050919050565b6000614bdc82614b71565b614be68185614b7c565b9350614bf183614b8d565b8060005b83811015614c22578151614c098882614bac565b9750614c1483614bc4565b925050600181019050614bf5565b5085935050505092915050565b600060a082019050614c446000830188613b51565b614c516020830187614b62565b8181036040830152614c638186614bd1565b9050614c726060830185613ce2565b614c7f6080830184613b51565b9695505050505050565b6000604082019050614c9e6000830185613b51565b8181036020830152614cb08184614bd1565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e8eee29927d7df6f9a0dd0a380776ee415ed5b0a33377a698af0c313c039062264736f6c634300080a0033

Deployed Bytecode Sourcemap

7202:12310:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8205:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9555:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8637:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7497:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10893:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9832:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7623:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11667:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7409:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10226:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7662:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9741:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10390:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7970:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17941:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17683:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7913:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19291:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18562:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8605:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8522:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18184:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8447:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9940:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:94;;;;;;;;;;;;;:::i;:::-;;18448:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8285:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8363:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8081:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1653:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18671:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9646:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10616:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11492:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19176:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18320:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18781:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8022:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17403:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18993:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10071:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18054:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17217:178;;;;;;;;;;;;;:::i;:::-;;8485:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17835:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7587:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8675:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2064:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19414:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8561:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14751:1407;;;;;;;;;;;;;:::i;:::-;;8205:60;;;;:::o;9555:83::-;9592:13;9625:5;9618:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9555:83;:::o;8637:31::-;;;;;;;;;;;;;:::o;7497:81::-;;;:::o;10893:161::-;10968:4;10985:39;10994:12;:10;:12::i;:::-;11008:7;11017:6;10985:8;:39::i;:::-;11042:4;11035:11;;10893:161;;;;:::o;9832:100::-;9885:7;9912:12;;9905:19;;9832:100;:::o;7623:30::-;;;;:::o;11667:313::-;11765:4;11782:36;11792:6;11800:9;11811:6;11782:9;:36::i;:::-;;11829:121;11838:6;11846:12;:10;:12::i;:::-;11860:89;11898:6;11860:89;;;;;;;;;;;;;;;;;:11;:19;11872:6;11860:19;;;;;;;;;;;;;;;:33;11880:12;:10;:12::i;:::-;11860:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11829:8;:121::i;:::-;11968:4;11961:11;;11667:313;;;;;:::o;7409:81::-;;;:::o;10226:156::-;10279:7;10306:68;10351:22;10361:11;10351:9;:22::i;:::-;10306:40;10323:22;10333:11;10323:9;:22::i;:::-;10306:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;10299:75;;10226:156;:::o;7662:78::-;;;;;;;;;;;;;:::o;9741:83::-;9782:5;9807:9;;;;;;;;;;;9800:16;;9741:83;:::o;10390:218::-;10478:4;10495:83;10504:12;:10;:12::i;:::-;10518:7;10527:50;10566:10;10527:11;:25;10539:12;:10;:12::i;:::-;10527:25;;;;;;;;;;;;;;;:34;10553:7;10527:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10495:8;:83::i;:::-;10596:4;10589:11;;10390:218;;;;:::o;7970:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;17941:105::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18031:7:::1;18012:16;;:26;;;;;;;;;;;;;;;;;;17941:105:::0;:::o;17683:144::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17777:8:::1;17764:10;:21;;;;17810:9;17796:11;:23;;;;17683:144:::0;;:::o;7913:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19291:115::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19390:7:::1;19363:9;;:35;;;;;;;;;;;;;;;;;;19291:115:::0;:::o;18562:101::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18647:8:::1;18632:12;:23;;;;18562:101:::0;:::o;8605:23::-;;;;;;;;;;;;;:::o;8522:32::-;;;;;;;;;;;;;:::o;18184:128::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18297:7:::1;18269:19;:25;18289:4;18269:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18184:128:::0;;:::o;8447:31::-;;;;;;;;;;;;;:::o;9940:123::-;10006:7;10032:9;:18;10042:7;10032:18;;;;;;;;;;;;;;;;10025:25;;9940:123;;;:::o;1962:94::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2027:21:::1;2045:1;2027:9;:21::i;:::-;1962:94::o:0;18448:106::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18538:8:::1;18525:10;:21;;;;18448:106:::0;:::o;8285:61::-;;;;:::o;8363:58::-;;;;:::o;8081:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;1653:87::-;1699:7;1726:6;;;;;;;;;;;1719:13;;1653:87;:::o;18671:102::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18755:10:::1;18743:9;;:22;;;;;;;;;;;;;;;;;;18671:102:::0;:::o;9646:87::-;9685:13;9718:7;9711:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9646:87;:::o;10616:269::-;10709:4;10726:129;10735:12;:10;:12::i;:::-;10749:7;10758:96;10797:15;10758:96;;;;;;;;;;;;;;;;;:11;:25;10770:12;:10;:12::i;:::-;10758:25;;;;;;;;;;;;;;;:34;10784:7;10758:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10726:8;:129::i;:::-;10873:4;10866:11;;10616:269;;;;:::o;11492:167::-;11570:4;11587:42;11597:12;:10;:12::i;:::-;11611:9;11622:6;11587:9;:42::i;:::-;;11647:4;11640:11;;11492:167;;;;:::o;19176:107::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19265:10:::1;19249:13;:26;;;;19176:107:::0;:::o;18320:120::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18425:7:::1;18401:15;:21;18417:4;18401:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;18320:120:::0;;:::o;18781:204::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18885:7:::1;18863:12;:19;18876:5;18863:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18906:7;18903:75;;;18959:7;18930:19;:26;18950:5;18930:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18903:75;18781:204:::0;;:::o;8022:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;17403:272::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17503:12:::1;17529:6;17521:20;;17596:9;17607:7;17542:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17521:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17502:114;;;17635:7;17627:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;17491:184;17403:272:::0;;;:::o;18993:175::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19119:8:::1;19105:11;;:22;;;;;;;;;;;;;;;;;;19152:8;19138:11;;:22;;;;;;;;;;;;;;;;;;18993:175:::0;;:::o;10071:143::-;10152:7;10179:11;:18;10191:5;10179:18;;;;;;;;;;;;;;;:27;10198:7;10179:27;;;;;;;;;;;;;;;;10172:34;;10071:143;;;;:::o;18054:122::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18161:7:::1;18135:17;:23;18153:4;18135:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18054:122:::0;;:::o;17217:178::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17272:7:::1;17292:10;17284:24;;17316:21;17284:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17271:71;;;17361:2;17353:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;17259:136;17217:178::o:0;8485:30::-;;;;;;;;;;;;;:::o;17835:98::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17918:7:::1;17902:13;;:23;;;;;;;;;;;;;;;;;;17835:98:::0;:::o;7587:29::-;;;;:::o;8675:22::-;;;;;;;;;;;;;:::o;2064:229::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2187:1:::1;2167:22;;:8;:22;;;;2145:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2266:19;2276:8;2266:9;:19::i;:::-;2064:229:::0;:::o;19414:91::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19492:5:::1;19482:7;;:15;;;;;;;;;;;;;;;;;;19414:91:::0;:::o;8561:35::-;;;;;;;;;;;;;:::o;14751:1407::-;1885:12;:10;:12::i;:::-;1874:23;;:7;:5;:7::i;:::-;:23;;;1866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14813:11:::1;;;;;;;;;;;14812:12;14804:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;14862:19;14884:21;14862:43;;14916:21;14940:24;14958:4;14940:9;:24::i;:::-;14916:48;;14999:1;14985:11;:15;:36;;;;;15020:1;15004:13;:17;14985:36;14977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15071:4;15057:11;;:18;;;;;;;;;;;;;;;;;;15096:25;15153:42;15096:110;;15245:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15229:48;;;15300:4;15320:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15229:119;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15219:7;;:129;;;;;;;;;;;;;;;;;;15373:10;15361:9;;:22;;;;;;;;;;;;;;;;;;15436:4;15396:19;:37;15424:7;;;;;;;;;;;15396:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;15493:4;15451:19;:39;15479:9;;;;;;;;;;;15451:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15546:4;15508:15;:35;15532:9;;;;;;;;;;;15508:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;15596:4;15563:12;:30;15584:7;;;;;;;;;;;15563:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15671:1;15662:11;15613;:26;15633:4;15613:26;;;;;;;;;;;;;;;:46;15648:9;;;;;;;;;;;15613:46;;;;;;;;;;;;;;;:60;;;;15740:1;15731:11;15684;:26;15704:4;15684:26;;;;;;;;;;;;;;;:44;15719:7;;;;;;;;;;;15684:44;;;;;;;;;;;;;;;:58;;;;15763;15780:4;15795:9;;;;;;;;;;;15807:13;15763:8;:58::i;:::-;15834:9;;;;;;;;;;;:25;;;15867:11;15902:4;15922:13;15950;16005:11;16058:10;16083:15;15834:275;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16136:4;16122:11;;:18;;;;;;;;;;;;;;;;;;14791:1367;;;14751:1407::o:0;3040:250::-;3098:7;3127:1;3122;:6;3118:47;;;3152:1;3145:8;;;;3118:47;3177:9;3193:1;3189;:5;;;;:::i;:::-;3177:17;;3222:1;3217;3213;:5;;;;:::i;:::-;:10;3205:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3281:1;3274:8;;;3040:250;;;;;:::o;3298:132::-;3356:7;3383:39;3387:1;3390;3383:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3376:46;;3298:132;;;;:::o;220:98::-;273:7;300:10;293:17;;220:98;:::o;11062:337::-;11172:1;11155:19;;:5;:19;;;;11147:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11253:1;11234:21;;:7;:21;;;;11226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11337:6;11307:11;:18;11319:5;11307:18;;;;;;;;;;;;;;;:27;11326:7;11307:27;;;;;;;;;;;;;;;:36;;;;11375:7;11359:32;;11368:5;11359:32;;;11384:6;11359:32;;;;;;:::i;:::-;;;;;;;;11062:337;;;:::o;11988:1330::-;12075:4;12120:1;12102:20;;:6;:20;;;;12094:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12204:1;12183:23;;:9;:23;;;;12175:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12274:1;12265:6;:10;12257:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12338:11;;;;;;;;;;;12334:139;;12374:17;:25;12392:6;12374:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;12403:17;:28;12421:9;12403:28;;;;;;;;;;;;;;;;;;;;;;;;;12374:57;12366:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;12334:139;12493:6;;;;;;;;;;;12489:820;;;12523:41;12538:6;12546:9;12557:6;12523:14;:41::i;:::-;12516:48;;;;12489:820;12608:28;12639:24;12657:4;12639:9;:24::i;:::-;12608:55;;12678:28;12733:13;;12709:20;:37;;12678:68;;12767:23;:34;;;;;12795:6;;;;;;;;;;;12794:7;12767:34;:61;;;;;12805:12;:23;12818:9;12805:23;;;;;;;;;;;;;;;;;;;;;;;;;12767:61;:76;;;;;12832:11;;;;;;;;;;;12767:76;12763:147;;;12864:30;12873:20;12864:8;:30::i;:::-;12763:147;12958:53;12980:6;12958:53;;;;;;;;;;;;;;;;;:9;:17;12968:6;12958:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;12938:9;:17;12948:6;12938:17;;;;;;;;;;;;;;;:73;;;;13028:19;13050:34;13067:6;13074:9;13050:16;:34::i;:::-;:80;;13096:34;13104:6;13112:9;13123:6;13096:7;:34::i;:::-;13050:80;;;13087:6;13050:80;13028:102;;13170:37;13195:11;13170:9;:20;13180:9;13170:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;13147:9;:20;13157:9;13147:20;;;;;;;;;;;;;;;:60;;;;13246:9;13229:40;;13238:6;13229:40;;;13257:11;13229:40;;;;;;:::i;:::-;;;;;;;;13291:4;13284:11;;;;;11988:1330;;;;;;:::o;2840:192::-;2926:7;2959:1;2954;:6;;2962:12;2946:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2986:9;3002:1;2998;:5;;;;:::i;:::-;2986:17;;3023:1;3016:8;;;2840:192;;;;;:::o;2696:136::-;2754:7;2781:43;2785:1;2788;2781:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2774:50;;2696:136;;;;:::o;2507:181::-;2565:7;2585:9;2601:1;2597;:5;;;;:::i;:::-;2585:17;;2626:1;2621;:6;;2613:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2679:1;2672:8;;;2507:181;;;;:::o;2301:173::-;2357:16;2376:6;;;;;;;;;;;2357:25;;2402:8;2393:6;;:17;;;;;;;;;;;;;;;;;;2457:8;2426:40;;2447:8;2426:40;;;;;;;;;;;;2346:128;2301:173;:::o;3438:278::-;3524:7;3556:1;3552;:5;3559:12;3544:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3583:9;3599:1;3595;:5;;;;:::i;:::-;3583:17;;3707:1;3700:8;;;3438:278;;;;;:::o;13326:330::-;13419:4;13456:53;13478:6;13456:53;;;;;;;;;;;;;;;;;:9;:17;13466:6;13456:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;13436:9;:17;13446:6;13436:17;;;;;;;;;;;;;;;:73;;;;13543:32;13568:6;13543:9;:20;13553:9;13543:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13520:9;:20;13530:9;13520:20;;;;;;;;;;;;;;;:55;;;;13608:9;13591:35;;13600:6;13591:35;;;13619:6;13591:35;;;;;;:::i;:::-;;;;;;;;13644:4;13637:11;;13326:330;;;;;:::o;16166:387::-;8766:4;8757:6;;:13;;;;;;;;;;;;;;;;;;16240:11:::1;;;;;;;;;;;16237:47;;;16271:13;;16253:31;;16237:47;16297:22;16322:21;16297:46;;16354:33;16371:15;16354:16;:33::i;:::-;16398:22;16423:41;16449:14;16423:21;:25;;:41;;;;:::i;:::-;16398:66;;16497:1;16480:14;:18;16477:66;;;16508:9;;;;;;;;;;;16500:27;;:43;16528:14;16500:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16477:66;16224:329;;8802:5:::0;8793:6;;:14;;;;;;;;;;;;;;;;;;16166:387;:::o;13668:369::-;13752:4;13772:17;:25;13790:6;13772:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;13801:17;:28;13819:9;13801:28;;;;;;;;;;;;;;;;;;;;;;;;;13772:57;13769:261;;;13853:4;13846:11;;;;13769:261;13888:12;:20;13901:6;13888:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;13912:12;:23;13925:9;13912:23;;;;;;;;;;;;;;;;;;;;;;;;;13888:47;13884:146;;;13959:5;13952:12;;;;13884:146;14013:5;14006:12;;13668:369;;;;;:::o;14045:698::-;14131:7;14161:14;14218:12;:20;14231:6;14218:20;;;;;;;;;;;;;;;;;;;;;;;;;14215:254;;;14272:42;14299:14;;14272:22;14283:10;;14272:6;:10;;:22;;;;:::i;:::-;:26;;:42;;;;:::i;:::-;14260:54;;14215:254;;;14353:12;:23;14366:9;14353:23;;;;;;;;;;;;;;;;;;;;;;;;;14350:119;;;14410:43;14438:14;;14410:23;14421:11;;14410:6;:10;;:23;;;;:::i;:::-;:27;;:43;;;;:::i;:::-;14398:55;;14350:119;14215:254;14500:1;14488:9;:13;14485:185;;;14549:39;14578:9;14549;:24;14567:4;14549:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;14522:9;:24;14540:4;14522:24;;;;;;;;;;;;;;;:66;;;;14637:4;14612:42;;14621:6;14612:42;;;14644:9;14612:42;;;;;;:::i;:::-;;;;;;;;14485:185;14693:21;14704:9;14693:6;:10;;:21;;;;:::i;:::-;14686:28;;;14045:698;;;;;:::o;16561:648::-;16687:21;16725:1;16711:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16687:40;;16756:4;16738;16743:1;16738:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16782:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16772:4;16777:1;16772:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;16811:56;16828:4;16843:9;;;;;;;;;;;16855:11;16811:8;:56::i;:::-;16906:9;;;;;;;;;;;:60;;;16981:11;17007:1;17051:4;17078;17114:15;16906:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17166:35;17183:11;17196:4;17166:35;;;;;;;:::i;:::-;;;;;;;;16616:593;16561:648;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:126::-;1869:7;1909:42;1902:5;1898:54;1887:65;;1832:126;;;:::o;1964:60::-;1992:3;2013:5;2006:12;;1964:60;;;:::o;2030:142::-;2080:9;2113:53;2131:34;2140:24;2158:5;2140:24;:::i;:::-;2131:34;:::i;:::-;2113:53;:::i;:::-;2100:66;;2030:142;;;:::o;2178:126::-;2228:9;2261:37;2292:5;2261:37;:::i;:::-;2248:50;;2178:126;;;:::o;2310:148::-;2382:9;2415:37;2446:5;2415:37;:::i;:::-;2402:50;;2310:148;;;:::o;2464:175::-;2573:59;2626:5;2573:59;:::i;:::-;2568:3;2561:72;2464:175;;:::o;2645:266::-;2760:4;2798:2;2787:9;2783:18;2775:26;;2811:93;2901:1;2890:9;2886:17;2877:6;2811:93;:::i;:::-;2645:266;;;;:::o;2917:96::-;2954:7;2983:24;3001:5;2983:24;:::i;:::-;2972:35;;2917:96;;;:::o;3019:118::-;3106:24;3124:5;3106:24;:::i;:::-;3101:3;3094:37;3019:118;;:::o;3143:222::-;3236:4;3274:2;3263:9;3259:18;3251:26;;3287:71;3355:1;3344:9;3340:17;3331:6;3287:71;:::i;:::-;3143:222;;;;:::o;3452:117::-;3561:1;3558;3551:12;3698:122;3771:24;3789:5;3771:24;:::i;:::-;3764:5;3761:35;3751:63;;3810:1;3807;3800:12;3751:63;3698:122;:::o;3826:139::-;3872:5;3910:6;3897:20;3888:29;;3926:33;3953:5;3926:33;:::i;:::-;3826:139;;;;:::o;3971:122::-;4044:24;4062:5;4044:24;:::i;:::-;4037:5;4034:35;4024:63;;4083:1;4080;4073:12;4024:63;3971:122;:::o;4099:139::-;4145:5;4183:6;4170:20;4161:29;;4199:33;4226:5;4199:33;:::i;:::-;4099:139;;;;:::o;4244:474::-;4312:6;4320;4369:2;4357:9;4348:7;4344:23;4340:32;4337:119;;;4375:79;;:::i;:::-;4337:119;4495:1;4520:53;4565:7;4556:6;4545:9;4541:22;4520:53;:::i;:::-;4510:63;;4466:117;4622:2;4648:53;4693:7;4684:6;4673:9;4669:22;4648:53;:::i;:::-;4638:63;;4593:118;4244:474;;;;;:::o;4724:90::-;4758:7;4801:5;4794:13;4787:21;4776:32;;4724:90;;;:::o;4820:109::-;4901:21;4916:5;4901:21;:::i;:::-;4896:3;4889:34;4820:109;;:::o;4935:210::-;5022:4;5060:2;5049:9;5045:18;5037:26;;5073:65;5135:1;5124:9;5120:17;5111:6;5073:65;:::i;:::-;4935:210;;;;:::o;5151:619::-;5228:6;5236;5244;5293:2;5281:9;5272:7;5268:23;5264:32;5261:119;;;5299:79;;:::i;:::-;5261:119;5419:1;5444:53;5489:7;5480:6;5469:9;5465:22;5444:53;:::i;:::-;5434:63;;5390:117;5546:2;5572:53;5617:7;5608:6;5597:9;5593:22;5572:53;:::i;:::-;5562:63;;5517:118;5674:2;5700:53;5745:7;5736:6;5725:9;5721:22;5700:53;:::i;:::-;5690:63;;5645:118;5151:619;;;;;:::o;5776:86::-;5811:7;5851:4;5844:5;5840:16;5829:27;;5776:86;;;:::o;5868:112::-;5951:22;5967:5;5951:22;:::i;:::-;5946:3;5939:35;5868:112;;:::o;5986:214::-;6075:4;6113:2;6102:9;6098:18;6090:26;;6126:67;6190:1;6179:9;6175:17;6166:6;6126:67;:::i;:::-;5986:214;;;;:::o;6206:329::-;6265:6;6314:2;6302:9;6293:7;6289:23;6285:32;6282:119;;;6320:79;;:::i;:::-;6282:119;6440:1;6465:53;6510:7;6501:6;6490:9;6486:22;6465:53;:::i;:::-;6455:63;;6411:117;6206:329;;;;:::o;6541:116::-;6611:21;6626:5;6611:21;:::i;:::-;6604:5;6601:32;6591:60;;6647:1;6644;6637:12;6591:60;6541:116;:::o;6663:133::-;6706:5;6744:6;6731:20;6722:29;;6760:30;6784:5;6760:30;:::i;:::-;6663:133;;;;:::o;6802:323::-;6858:6;6907:2;6895:9;6886:7;6882:23;6878:32;6875:119;;;6913:79;;:::i;:::-;6875:119;7033:1;7058:50;7100:7;7091:6;7080:9;7076:22;7058:50;:::i;:::-;7048:60;;7004:114;6802:323;;;;:::o;7131:474::-;7199:6;7207;7256:2;7244:9;7235:7;7231:23;7227:32;7224:119;;;7262:79;;:::i;:::-;7224:119;7382:1;7407:53;7452:7;7443:6;7432:9;7428:22;7407:53;:::i;:::-;7397:63;;7353:117;7509:2;7535:53;7580:7;7571:6;7560:9;7556:22;7535:53;:::i;:::-;7525:63;;7480:118;7131:474;;;;;:::o;7611:329::-;7670:6;7719:2;7707:9;7698:7;7694:23;7690:32;7687:119;;;7725:79;;:::i;:::-;7687:119;7845:1;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7816:117;7611:329;;;;:::o;7946:468::-;8011:6;8019;8068:2;8056:9;8047:7;8043:23;8039:32;8036:119;;;8074:79;;:::i;:::-;8036:119;8194:1;8219:53;8264:7;8255:6;8244:9;8240:22;8219:53;:::i;:::-;8209:63;;8165:117;8321:2;8347:50;8389:7;8380:6;8369:9;8365:22;8347:50;:::i;:::-;8337:60;;8292:115;7946:468;;;;;:::o;8420:462::-;8482:6;8490;8539:2;8527:9;8518:7;8514:23;8510:32;8507:119;;;8545:79;;:::i;:::-;8507:119;8665:1;8690:50;8732:7;8723:6;8712:9;8708:22;8690:50;:::i;:::-;8680:60;;8636:114;8789:2;8815:50;8857:7;8848:6;8837:9;8833:22;8815:50;:::i;:::-;8805:60;;8760:115;8420:462;;;;;:::o;8888:474::-;8956:6;8964;9013:2;9001:9;8992:7;8988:23;8984:32;8981:119;;;9019:79;;:::i;:::-;8981:119;9139:1;9164:53;9209:7;9200:6;9189:9;9185:22;9164:53;:::i;:::-;9154:63;;9110:117;9266:2;9292:53;9337:7;9328:6;9317:9;9313:22;9292:53;:::i;:::-;9282:63;;9237:118;8888:474;;;;;:::o;9368:180::-;9416:77;9413:1;9406:88;9513:4;9510:1;9503:15;9537:4;9534:1;9527:15;9554:320;9598:6;9635:1;9629:4;9625:12;9615:22;;9682:1;9676:4;9672:12;9703:18;9693:81;;9759:4;9751:6;9747:17;9737:27;;9693:81;9821:2;9813:6;9810:14;9790:18;9787:38;9784:84;;;9840:18;;:::i;:::-;9784:84;9605:269;9554:320;;;:::o;9880:182::-;10020:34;10016:1;10008:6;10004:14;9997:58;9880:182;:::o;10068:366::-;10210:3;10231:67;10295:2;10290:3;10231:67;:::i;:::-;10224:74;;10307:93;10396:3;10307:93;:::i;:::-;10425:2;10420:3;10416:12;10409:19;;10068:366;;;:::o;10440:419::-;10606:4;10644:2;10633:9;10629:18;10621:26;;10693:9;10687:4;10683:20;10679:1;10668:9;10664:17;10657:47;10721:131;10847:4;10721:131;:::i;:::-;10713:139;;10440:419;;;:::o;10865:332::-;10986:4;11024:2;11013:9;11009:18;11001:26;;11037:71;11105:1;11094:9;11090:17;11081:6;11037:71;:::i;:::-;11118:72;11186:2;11175:9;11171:18;11162:6;11118:72;:::i;:::-;10865:332;;;;;:::o;11203:98::-;11254:6;11288:5;11282:12;11272:22;;11203:98;;;:::o;11307:147::-;11408:11;11445:3;11430:18;;11307:147;;;;:::o;11460:373::-;11564:3;11592:38;11624:5;11592:38;:::i;:::-;11646:88;11727:6;11722:3;11646:88;:::i;:::-;11639:95;;11743:52;11788:6;11783:3;11776:4;11769:5;11765:16;11743:52;:::i;:::-;11820:6;11815:3;11811:16;11804:23;;11568:265;11460:373;;;;:::o;11839:271::-;11969:3;11991:93;12080:3;12071:6;11991:93;:::i;:::-;11984:100;;12101:3;12094:10;;11839:271;;;;:::o;12116:170::-;12256:22;12252:1;12244:6;12240:14;12233:46;12116:170;:::o;12292:366::-;12434:3;12455:67;12519:2;12514:3;12455:67;:::i;:::-;12448:74;;12531:93;12620:3;12531:93;:::i;:::-;12649:2;12644:3;12640:12;12633:19;;12292:366;;;:::o;12664:419::-;12830:4;12868:2;12857:9;12853:18;12845:26;;12917:9;12911:4;12907:20;12903:1;12892:9;12888:17;12881:47;12945:131;13071:4;12945:131;:::i;:::-;12937:139;;12664:419;;;:::o;13089:114::-;;:::o;13209:398::-;13368:3;13389:83;13470:1;13465:3;13389:83;:::i;:::-;13382:90;;13481:93;13570:3;13481:93;:::i;:::-;13599:1;13594:3;13590:11;13583:18;;13209:398;;;:::o;13613:379::-;13797:3;13819:147;13962:3;13819:147;:::i;:::-;13812:154;;13983:3;13976:10;;13613:379;;;:::o;13998:170::-;14138:22;14134:1;14126:6;14122:14;14115:46;13998:170;:::o;14174:366::-;14316:3;14337:67;14401:2;14396:3;14337:67;:::i;:::-;14330:74;;14413:93;14502:3;14413:93;:::i;:::-;14531:2;14526:3;14522:12;14515:19;;14174:366;;;:::o;14546:419::-;14712:4;14750:2;14739:9;14735:18;14727:26;;14799:9;14793:4;14789:20;14785:1;14774:9;14770:17;14763:47;14827:131;14953:4;14827:131;:::i;:::-;14819:139;;14546:419;;;:::o;14971:225::-;15111:34;15107:1;15099:6;15095:14;15088:58;15180:8;15175:2;15167:6;15163:15;15156:33;14971:225;:::o;15202:366::-;15344:3;15365:67;15429:2;15424:3;15365:67;:::i;:::-;15358:74;;15441:93;15530:3;15441:93;:::i;:::-;15559:2;15554:3;15550:12;15543:19;;15202:366;;;:::o;15574:419::-;15740:4;15778:2;15767:9;15763:18;15755:26;;15827:9;15821:4;15817:20;15813:1;15802:9;15798:17;15791:47;15855:131;15981:4;15855:131;:::i;:::-;15847:139;;15574:419;;;:::o;15999:171::-;16139:23;16135:1;16127:6;16123:14;16116:47;15999:171;:::o;16176:366::-;16318:3;16339:67;16403:2;16398:3;16339:67;:::i;:::-;16332:74;;16415:93;16504:3;16415:93;:::i;:::-;16533:2;16528:3;16524:12;16517:19;;16176:366;;;:::o;16548:419::-;16714:4;16752:2;16741:9;16737:18;16729:26;;16801:9;16795:4;16791:20;16787:1;16776:9;16772:17;16765:47;16829:131;16955:4;16829:131;:::i;:::-;16821:139;;16548:419;;;:::o;16973:169::-;17113:21;17109:1;17101:6;17097:14;17090:45;16973:169;:::o;17148:366::-;17290:3;17311:67;17375:2;17370:3;17311:67;:::i;:::-;17304:74;;17387:93;17476:3;17387:93;:::i;:::-;17505:2;17500:3;17496:12;17489:19;;17148:366;;;:::o;17520:419::-;17686:4;17724:2;17713:9;17709:18;17701:26;;17773:9;17767:4;17763:20;17759:1;17748:9;17744:17;17737:47;17801:131;17927:4;17801:131;:::i;:::-;17793:139;;17520:419;;;:::o;17945:143::-;18002:5;18033:6;18027:13;18018:22;;18049:33;18076:5;18049:33;:::i;:::-;17945:143;;;;:::o;18094:351::-;18164:6;18213:2;18201:9;18192:7;18188:23;18184:32;18181:119;;;18219:79;;:::i;:::-;18181:119;18339:1;18364:64;18420:7;18411:6;18400:9;18396:22;18364:64;:::i;:::-;18354:74;;18310:128;18094:351;;;;:::o;18451:332::-;18572:4;18610:2;18599:9;18595:18;18587:26;;18623:71;18691:1;18680:9;18676:17;18667:6;18623:71;:::i;:::-;18704:72;18772:2;18761:9;18757:18;18748:6;18704:72;:::i;:::-;18451:332;;;;;:::o;18789:775::-;19022:4;19060:3;19049:9;19045:19;19037:27;;19074:71;19142:1;19131:9;19127:17;19118:6;19074:71;:::i;:::-;19155:72;19223:2;19212:9;19208:18;19199:6;19155:72;:::i;:::-;19237;19305:2;19294:9;19290:18;19281:6;19237:72;:::i;:::-;19319;19387:2;19376:9;19372:18;19363:6;19319:72;:::i;:::-;19401:73;19469:3;19458:9;19454:19;19445:6;19401:73;:::i;:::-;19484;19552:3;19541:9;19537:19;19528:6;19484:73;:::i;:::-;18789:775;;;;;;;;;:::o;19570:143::-;19627:5;19658:6;19652:13;19643:22;;19674:33;19701:5;19674:33;:::i;:::-;19570:143;;;;:::o;19719:663::-;19807:6;19815;19823;19872:2;19860:9;19851:7;19847:23;19843:32;19840:119;;;19878:79;;:::i;:::-;19840:119;19998:1;20023:64;20079:7;20070:6;20059:9;20055:22;20023:64;:::i;:::-;20013:74;;19969:128;20136:2;20162:64;20218:7;20209:6;20198:9;20194:22;20162:64;:::i;:::-;20152:74;;20107:129;20275:2;20301:64;20357:7;20348:6;20337:9;20333:22;20301:64;:::i;:::-;20291:74;;20246:129;19719:663;;;;;:::o;20388:180::-;20436:77;20433:1;20426:88;20533:4;20530:1;20523:15;20557:4;20554:1;20547:15;20574:348;20614:7;20637:20;20655:1;20637:20;:::i;:::-;20632:25;;20671:20;20689:1;20671:20;:::i;:::-;20666:25;;20859:1;20791:66;20787:74;20784:1;20781:81;20776:1;20769:9;20762:17;20758:105;20755:131;;;20866:18;;:::i;:::-;20755:131;20914:1;20911;20907:9;20896:20;;20574:348;;;;:::o;20928:180::-;20976:77;20973:1;20966:88;21073:4;21070:1;21063:15;21097:4;21094:1;21087:15;21114:185;21154:1;21171:20;21189:1;21171:20;:::i;:::-;21166:25;;21205:20;21223:1;21205:20;:::i;:::-;21200:25;;21244:1;21234:35;;21249:18;;:::i;:::-;21234:35;21291:1;21288;21284:9;21279:14;;21114:185;;;;:::o;21305:220::-;21445:34;21441:1;21433:6;21429:14;21422:58;21514:3;21509:2;21501:6;21497:15;21490:28;21305:220;:::o;21531:366::-;21673:3;21694:67;21758:2;21753:3;21694:67;:::i;:::-;21687:74;;21770:93;21859:3;21770:93;:::i;:::-;21888:2;21883:3;21879:12;21872:19;;21531:366;;;:::o;21903:419::-;22069:4;22107:2;22096:9;22092:18;22084:26;;22156:9;22150:4;22146:20;22142:1;22131:9;22127:17;22120:47;22184:131;22310:4;22184:131;:::i;:::-;22176:139;;21903:419;;;:::o;22328:223::-;22468:34;22464:1;22456:6;22452:14;22445:58;22537:6;22532:2;22524:6;22520:15;22513:31;22328:223;:::o;22557:366::-;22699:3;22720:67;22784:2;22779:3;22720:67;:::i;:::-;22713:74;;22796:93;22885:3;22796:93;:::i;:::-;22914:2;22909:3;22905:12;22898:19;;22557:366;;;:::o;22929:419::-;23095:4;23133:2;23122:9;23118:18;23110:26;;23182:9;23176:4;23172:20;23168:1;23157:9;23153:17;23146:47;23210:131;23336:4;23210:131;:::i;:::-;23202:139;;22929:419;;;:::o;23354:221::-;23494:34;23490:1;23482:6;23478:14;23471:58;23563:4;23558:2;23550:6;23546:15;23539:29;23354:221;:::o;23581:366::-;23723:3;23744:67;23808:2;23803:3;23744:67;:::i;:::-;23737:74;;23820:93;23909:3;23820:93;:::i;:::-;23938:2;23933:3;23929:12;23922:19;;23581:366;;;:::o;23953:419::-;24119:4;24157:2;24146:9;24142:18;24134:26;;24206:9;24200:4;24196:20;24192:1;24181:9;24177:17;24170:47;24234:131;24360:4;24234:131;:::i;:::-;24226:139;;23953:419;;;:::o;24378:224::-;24518:34;24514:1;24506:6;24502:14;24495:58;24587:7;24582:2;24574:6;24570:15;24563:32;24378:224;:::o;24608:366::-;24750:3;24771:67;24835:2;24830:3;24771:67;:::i;:::-;24764:74;;24847:93;24936:3;24847:93;:::i;:::-;24965:2;24960:3;24956:12;24949:19;;24608:366;;;:::o;24980:419::-;25146:4;25184:2;25173:9;25169:18;25161:26;;25233:9;25227:4;25223:20;25219:1;25208:9;25204:17;25197:47;25261:131;25387:4;25261:131;:::i;:::-;25253:139;;24980:419;;;:::o;25405:222::-;25545:34;25541:1;25533:6;25529:14;25522:58;25614:5;25609:2;25601:6;25597:15;25590:30;25405:222;:::o;25633:366::-;25775:3;25796:67;25860:2;25855:3;25796:67;:::i;:::-;25789:74;;25872:93;25961:3;25872:93;:::i;:::-;25990:2;25985:3;25981:12;25974:19;;25633:366;;;:::o;26005:419::-;26171:4;26209:2;26198:9;26194:18;26186:26;;26258:9;26252:4;26248:20;26244:1;26233:9;26229:17;26222:47;26286:131;26412:4;26286:131;:::i;:::-;26278:139;;26005:419;;;:::o;26430:228::-;26570:34;26566:1;26558:6;26554:14;26547:58;26639:11;26634:2;26626:6;26622:15;26615:36;26430:228;:::o;26664:366::-;26806:3;26827:67;26891:2;26886:3;26827:67;:::i;:::-;26820:74;;26903:93;26992:3;26903:93;:::i;:::-;27021:2;27016:3;27012:12;27005:19;;26664:366;;;:::o;27036:419::-;27202:4;27240:2;27229:9;27225:18;27217:26;;27289:9;27283:4;27279:20;27275:1;27264:9;27260:17;27253:47;27317:131;27443:4;27317:131;:::i;:::-;27309:139;;27036:419;;;:::o;27461:176::-;27601:28;27597:1;27589:6;27585:14;27578:52;27461:176;:::o;27643:366::-;27785:3;27806:67;27870:2;27865:3;27806:67;:::i;:::-;27799:74;;27882:93;27971:3;27882:93;:::i;:::-;28000:2;27995:3;27991:12;27984:19;;27643:366;;;:::o;28015:419::-;28181:4;28219:2;28208:9;28204:18;28196:26;;28268:9;28262:4;28258:20;28254:1;28243:9;28239:17;28232:47;28296:131;28422:4;28296:131;:::i;:::-;28288:139;;28015:419;;;:::o;28440:191::-;28480:4;28500:20;28518:1;28500:20;:::i;:::-;28495:25;;28534:20;28552:1;28534:20;:::i;:::-;28529:25;;28573:1;28570;28567:8;28564:34;;;28578:18;;:::i;:::-;28564:34;28623:1;28620;28616:9;28608:17;;28440:191;;;;:::o;28637:305::-;28677:3;28696:20;28714:1;28696:20;:::i;:::-;28691:25;;28730:20;28748:1;28730:20;:::i;:::-;28725:25;;28884:1;28816:66;28812:74;28809:1;28806:81;28803:107;;;28890:18;;:::i;:::-;28803:107;28934:1;28931;28927:9;28920:16;;28637:305;;;;:::o;28948:177::-;29088:29;29084:1;29076:6;29072:14;29065:53;28948:177;:::o;29131:366::-;29273:3;29294:67;29358:2;29353:3;29294:67;:::i;:::-;29287:74;;29370:93;29459:3;29370:93;:::i;:::-;29488:2;29483:3;29479:12;29472:19;;29131:366;;;:::o;29503:419::-;29669:4;29707:2;29696:9;29692:18;29684:26;;29756:9;29750:4;29746:20;29742:1;29731:9;29727:17;29720:47;29784:131;29910:4;29784:131;:::i;:::-;29776:139;;29503:419;;;:::o;29928:180::-;29976:77;29973:1;29966:88;30073:4;30070:1;30063:15;30097:4;30094:1;30087:15;30114:180;30162:77;30159:1;30152:88;30259:4;30256:1;30249:15;30283:4;30280:1;30273:15;30300:85;30345:7;30374:5;30363:16;;30300:85;;;:::o;30391:158::-;30449:9;30482:61;30500:42;30509:32;30535:5;30509:32;:::i;:::-;30500:42;:::i;:::-;30482:61;:::i;:::-;30469:74;;30391:158;;;:::o;30555:147::-;30650:45;30689:5;30650:45;:::i;:::-;30645:3;30638:58;30555:147;;:::o;30708:114::-;30775:6;30809:5;30803:12;30793:22;;30708:114;;;:::o;30828:184::-;30927:11;30961:6;30956:3;30949:19;31001:4;30996:3;30992:14;30977:29;;30828:184;;;;:::o;31018:132::-;31085:4;31108:3;31100:11;;31138:4;31133:3;31129:14;31121:22;;31018:132;;;:::o;31156:108::-;31233:24;31251:5;31233:24;:::i;:::-;31228:3;31221:37;31156:108;;:::o;31270:179::-;31339:10;31360:46;31402:3;31394:6;31360:46;:::i;:::-;31438:4;31433:3;31429:14;31415:28;;31270:179;;;;:::o;31455:113::-;31525:4;31557;31552:3;31548:14;31540:22;;31455:113;;;:::o;31604:732::-;31723:3;31752:54;31800:5;31752:54;:::i;:::-;31822:86;31901:6;31896:3;31822:86;:::i;:::-;31815:93;;31932:56;31982:5;31932:56;:::i;:::-;32011:7;32042:1;32027:284;32052:6;32049:1;32046:13;32027:284;;;32128:6;32122:13;32155:63;32214:3;32199:13;32155:63;:::i;:::-;32148:70;;32241:60;32294:6;32241:60;:::i;:::-;32231:70;;32087:224;32074:1;32071;32067:9;32062:14;;32027:284;;;32031:14;32327:3;32320:10;;31728:608;;;31604:732;;;;:::o;32342:831::-;32605:4;32643:3;32632:9;32628:19;32620:27;;32657:71;32725:1;32714:9;32710:17;32701:6;32657:71;:::i;:::-;32738:80;32814:2;32803:9;32799:18;32790:6;32738:80;:::i;:::-;32865:9;32859:4;32855:20;32850:2;32839:9;32835:18;32828:48;32893:108;32996:4;32987:6;32893:108;:::i;:::-;32885:116;;33011:72;33079:2;33068:9;33064:18;33055:6;33011:72;:::i;:::-;33093:73;33161:3;33150:9;33146:19;33137:6;33093:73;:::i;:::-;32342:831;;;;;;;;:::o;33179:483::-;33350:4;33388:2;33377:9;33373:18;33365:26;;33401:71;33469:1;33458:9;33454:17;33445:6;33401:71;:::i;:::-;33519:9;33513:4;33509:20;33504:2;33493:9;33489:18;33482:48;33547:108;33650:4;33641:6;33547:108;:::i;:::-;33539:116;;33179:483;;;;;:::o

Swarm Source

ipfs://e8eee29927d7df6f9a0dd0a380776ee415ed5b0a33377a698af0c313c0390622

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.