ETH Price: $3,497.01 (+0.28%)
Gas: 2 Gwei

Token

SHIFT (SHIFT)
 

Overview

Max Total Supply

10,000,000,000,000 SHIFT

Holders

361 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
343,271,323 SHIFT

Value
$0.00
0xdc02928b8d990942bf77f98b12ceb85a1d66293f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Shift aims to shake up the fitness industry by bringing fitness and health to the crypto world infused with cutting edge technology where holders can earn crypto for keeping fit and reaching their fitness goals.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SHIFT

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-15
*/

//SPDX-License-Identifier: MIT 

pragma solidity 0.8.13;

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

abstract contract Auth {
	address internal owner;
	constructor(address _owner) { owner = _owner; }
	modifier onlyOwner() { require(msg.sender == owner, "Only contract owner can call this function"); _; }
	function transferOwnership(address payable newOwner) external onlyOwner { owner = newOwner;	emit OwnershipTransferred(newOwner); }
	event OwnershipTransferred(address owner);
}

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 WETH() external pure returns (address);
	function factory() external pure returns (address);
	function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract SHIFT is IERC20, Auth {
	string constant _name = "SHIFT";
	string constant _symbol = "SHIFT";
	uint8 constant _decimals = 9;
	uint256 constant _totalSupply = 10_000_000_000_000 * 10**_decimals;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	bool private _tradingOpen;
	mapping (address => bool) private _isLiqPool;
	uint16 private _blacklistedWallets = 0;


	uint8 private fee_taxRateMaxLimit; uint8 private fee_taxRateBuy; uint8 private fee_taxRateSell; uint8 private fee_taxRateTransfer;
	uint16 private fee_sharesAutoLP; uint16 private fee_sharesMarketing; uint16 private fee_sharesDevelopment; uint16 private fee_sharesCharity; uint16 private fee_sharesBuyback; uint16 private fee_sharesTOTAL;

	uint256 private lim_maxTxAmount; uint256 private lim_maxWalletAmount;
	uint256 private lim_taxSwapMin; uint256 private lim_taxSwapMax;

	address payable private wlt_marketing;
	address payable private wlt_development;
	address payable private wlt_charity;
	address payable private wlt_buyback;
	address private _liquidityPool;

	mapping(address => bool) private exm_noFees;
	mapping(address => bool) private exm_noLimits;
	
	uint256 private _humanBlock = 0;
	mapping (address => bool) private _nonSniper;
	mapping (address => uint256) private _blacklistBlock;

	bool private _inTaxSwap = false;
	address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
	address private _wethAddress = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
	IUniswapV2Router02 private _uniswapV2Router;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	event TokensBurned(address burnedFrom, uint256 tokenAmount);
	event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
	event TaxRatesChanged(uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer, bool buySupport);
	event TaxWalletsChanged(address marketing, address development, address charity, address buyback);
	event TaxDistributionChanged(uint16 autoLP, uint16 marketing, uint16 development, uint16 charity, uint16 buyback);
	event LimitsIncreased(uint256 maxTransaction, uint256 maxWalletSize);
	event TaxSwapSettingsChanged(uint256 taxSwapMin, uint256 taxSwapMax);
	event WalletExemptionsSet(address wallet, bool noFees, bool noLimits);


	constructor() Auth(msg.sender) {
		_tradingOpen = false;
		fee_taxRateMaxLimit = 11;
		lim_maxTxAmount = _totalSupply;
		lim_maxWalletAmount = _totalSupply;
		lim_taxSwapMin = _totalSupply * 10 / 10000;
		lim_taxSwapMax = _totalSupply * 50 / 10000;
		fee_sharesAutoLP = 300;
		fee_sharesMarketing = 300;
		fee_sharesDevelopment = 300;
		fee_sharesCharity = 100;
		fee_sharesBuyback = 100;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesMarketing + fee_sharesDevelopment + fee_sharesCharity + fee_sharesBuyback;
		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);

		wlt_marketing = payable(0x6a61ab526CEBD515a7a22BfA4b7614F819d1e498);
		wlt_development = payable(0xB72524dcE54383dEc67FA674e16D6Ba9B8D9aCc1);
		wlt_charity = payable(0xDe8102579e1E10669e585c046de820EcE332C9Ac);
		wlt_buyback = payable(0x5f0004f0DFa960A842e5571126bF95c273878Bc1);

		exm_noFees[owner] = true;
		exm_noFees[address(this)] = true;
		exm_noFees[_uniswapV2RouterAddress] = true;
		exm_noFees[wlt_marketing] = true;
		exm_noFees[wlt_development] = true;
		exm_noFees[wlt_charity] = true;
		exm_noFees[wlt_buyback] = true;

		exm_noLimits[owner] = true;
		exm_noLimits[address(this)] = true;
		exm_noLimits[_uniswapV2RouterAddress] = true;
		exm_noLimits[wlt_marketing] = true;
		exm_noLimits[wlt_development] = true;
		exm_noLimits[wlt_charity] = true;
		exm_noLimits[wlt_buyback] = true;

		_balances[address(this)] = 1_345_453_713_993_929_670_215; //v1 token balance of LP at block 14681213, paired with 53.82 WETH
		emit Transfer(address(0), address(this), _balances[address(this)]);
		_balances[owner] = _totalSupply - _balances[address(this)];
		emit Transfer(address(0), owner, _balances[owner]);
	}
	
	receive() external payable {}
	
	function totalSupply() external pure override returns (uint256) { return _totalSupply; }
	function decimals() external pure override returns (uint8) { return _decimals; }
	function symbol() external pure override returns (string memory) { return _symbol; }
	function name() external pure override returns (string memory) { return _name; }
	function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
	function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

	function approve(address spender, uint256 amount) public override returns (bool) {
		if ( _humanBlock > block.number && !_nonSniper[msg.sender] ) {
			_addBlacklist(msg.sender, block.number, true);
		}

		_allowances[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function transfer(address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "Trading not open");
		if (_allowances[sender][msg.sender] != type(uint256).max){
			_allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
		}
		return _transferFrom(sender, recipient, amount);
	}

	function initLP(uint256 ethAmountWei) external onlyOwner {
		require(!_tradingOpen, "trading already open");
		require(_liquidityPool == address(0), "LP already initialized");
		require(ethAmountWei > 0, "eth cannot be 0");

		_nonSniper[address(this)] = true;
		_nonSniper[owner] = true;
		_nonSniper[wlt_marketing] = true;

        _wethAddress = _uniswapV2Router.WETH(); //override the WETH address from router
		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance >= ethAmountWei, "not enough eth");
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");
		address _uniLpAddr = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _wethAddress);
		_liquidityPool = _uniLpAddr;

		_isLiqPool[_uniLpAddr] = true;
		_nonSniper[_uniLpAddr] = true;

		_approveRouter(_contractTokenBalance);
		_addLiquidity(_contractTokenBalance, ethAmountWei, false);
	}

	function _approveRouter(uint256 _tokenAmount) internal {
		if ( _allowances[address(this)][_uniswapV2RouterAddress] < _tokenAmount ) {
			_allowances[address(this)][_uniswapV2RouterAddress] = type(uint256).max;
			emit Approval(address(this), _uniswapV2RouterAddress, type(uint256).max);
		}
	}

	function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
		address lpTokenRecipient = address(0);
		if ( !autoburn ) { lpTokenRecipient = owner; }
		_uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
	}

	function openTrading() external onlyOwner {
		require(!_tradingOpen, "trading already open");
		require(_liquidityPool != address(0), "LP not initialized");
		_openTrading();
	}

	function _openTrading() internal {
		_humanBlock = block.number + 1;
		lim_maxTxAmount     = 100 * _totalSupply / 10000 + 10**_decimals; 
		lim_maxWalletAmount = 100 * _totalSupply / 10000 + 10**_decimals;
		fee_taxRateBuy = 11;
		fee_taxRateSell = 22; //temporarily doubled after launch to discourage dumps
		fee_taxRateTransfer = 0; 
		_tradingOpen = true;
	}

	function tradingOpen() external view returns (bool) {
		if (_tradingOpen && block.number >= _humanBlock + 5) { return _tradingOpen; }
		else { return false; }
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender!=address(0) && recipient!=address(0), "Zero address not allowed");
		if ( _humanBlock > block.number ) {
			if ( _blacklistBlock[sender] == 0 ) { _addBlacklist(recipient, block.number, true); }
			else { _addBlacklist(recipient, _blacklistBlock[sender], false); }
		} else {
			if ( _blacklistBlock[sender] != 0 ) { _addBlacklist(recipient, _blacklistBlock[sender], false); }
		}

		if ( _tradingOpen && _blacklistBlock[sender] != 0 && _blacklistBlock[sender] < block.number ) { revert("blacklisted"); }

		if ( !_inTaxSwap && _isLiqPool[recipient] ) { _swapTaxAndLiquify();	}

		if ( sender != address(this) && recipient != address(this) && sender != owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); }
		uint256 _taxAmount = _calculateTax(sender, recipient, amount);
		uint256 _transferAmount = amount - _taxAmount;
		_balances[sender] = _balances[sender] - amount;
		if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
		_balances[recipient] = _balances[recipient] + _transferAmount;
		emit Transfer(sender, recipient, amount);
		return true;
	}

	function _addBlacklist(address wallet, uint256 blackBlockNum, bool addSniper) internal {
		if ( !_nonSniper[wallet] && _blacklistBlock[wallet] == 0 ) { 
			_blacklistBlock[wallet] = blackBlockNum; 
			if ( addSniper) { _blacklistedWallets ++; }
		}
	}
	
	function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( _tradingOpen && !exm_noLimits[recipient] && !exm_noLimits[sender] ) {
			if ( transferAmount > lim_maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > lim_maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _checkTradingOpen() private view returns (bool){
		bool checkResult = false;
		if ( _tradingOpen ) { checkResult = true; } 
		else if ( tx.origin == owner ) { checkResult = true; } 
		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !_tradingOpen || exm_noFees[sender] || exm_noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * fee_taxRateBuy / 100; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * fee_taxRateSell / 100; }
		else { taxAmount = amount * fee_taxRateTransfer / 100; }
		return taxAmount;
	}

	function getBlacklistStatus(address wallet) external view returns(bool isBlacklisted, uint256 blacklistBlock, uint16 totalBlacklistedWallets) {
		bool _isBlacklisted;
		if ( _blacklistBlock[wallet] != 0 ) { _isBlacklisted = true; }
		return ( _isBlacklisted, _blacklistBlock[wallet], _blacklistedWallets);	
	}

	function getExemptions(address wallet) external view returns(bool noFees, bool noLimits) {
		return (exm_noFees[wallet], exm_noLimits[wallet]);
	}

	function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
		exm_noFees[wallet] = noFees;
		exm_noLimits[wallet] = noLimits;
		emit WalletExemptionsSet(wallet, noFees, noLimits);
	}

	function getFeeSettings() external view returns(uint8 taxRateMaxLimit, uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesCharity, uint16 sharesBuyback ) {
		return (fee_taxRateMaxLimit, fee_taxRateBuy, fee_taxRateSell, fee_taxRateTransfer, fee_sharesAutoLP, fee_sharesMarketing, fee_sharesDevelopment, fee_sharesCharity, fee_sharesBuyback);
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newTxTax, bool enableBuySupport) external onlyOwner {
		if (enableBuySupport) {
			require( newSellTax > newBuyTax, "Sell tax must be higher than buy tax");
			require( newBuyTax+newSellTax <= 2*fee_taxRateMaxLimit, "Avg tax too high");
		} else {
			require(newBuyTax <= fee_taxRateMaxLimit && newSellTax <= fee_taxRateMaxLimit, "Tax too high");
		}
		require(newTxTax <= fee_taxRateMaxLimit, "Tax too high");
		fee_taxRateBuy = newBuyTax;
		fee_taxRateSell = newSellTax;
		fee_taxRateTransfer = newTxTax;
		emit TaxRatesChanged(newBuyTax, newSellTax, newTxTax, enableBuySupport);
	}

	function setTaxDistribution(uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesCharity, uint16 sharesBuyback) external onlyOwner {
		fee_sharesAutoLP = sharesAutoLP;
		fee_sharesMarketing = sharesMarketing;
		fee_sharesDevelopment = sharesDevelopment;
		fee_sharesCharity = sharesCharity;
		fee_sharesBuyback = sharesBuyback;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesMarketing + fee_sharesDevelopment + fee_sharesCharity + fee_sharesBuyback;
		emit TaxDistributionChanged(sharesAutoLP, sharesMarketing, sharesDevelopment, sharesCharity, sharesBuyback);
	}
	
	function getWallets() external view returns(address contractOwner, address liquidityPool, address marketing, address development, address charity, address buyback) {
		return (owner, _liquidityPool, wlt_marketing, wlt_development, wlt_charity, wlt_buyback);
	}

	function setTaxWallets(address newMarketingWallet, address newDevelopmentWallet, address newCharityWallet, address newBuybackWallet) external onlyOwner {
		wlt_marketing = payable(newMarketingWallet);
		wlt_development = payable(newDevelopmentWallet);
		wlt_charity = payable(newCharityWallet);
		wlt_buyback = payable(newBuybackWallet);
		exm_noFees[newMarketingWallet] = true;
		exm_noLimits[newMarketingWallet] = true;
		exm_noFees[newBuybackWallet] = true;
		exm_noLimits[newBuybackWallet] = true;
		emit TaxWalletsChanged(newMarketingWallet, newDevelopmentWallet, newCharityWallet, newBuybackWallet);
	}

	function getLimits() external view returns(uint256 maxTxAmount, uint256 maxWalletAmount, uint256 taxSwapMin, uint256 taxSwapMax) {
		return (lim_maxTxAmount, lim_maxWalletAmount, lim_taxSwapMin, lim_taxSwapMax);
	}

	function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
		uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
		require(newTxAmt >= lim_maxTxAmount, "tx limit too low");
		lim_maxTxAmount = newTxAmt;
		uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
		require(newWalletAmt >= lim_maxWalletAmount, "wallet limit too low");
		lim_maxWalletAmount = newWalletAmt;
		emit LimitsIncreased(lim_maxTxAmount, lim_maxWalletAmount);
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		lim_taxSwapMin = _totalSupply * minValue / minDivider;
		lim_taxSwapMax = _totalSupply * maxValue / maxDivider;
		require(lim_taxSwapMax > lim_taxSwapMin);
		emit TaxSwapSettingsChanged(lim_taxSwapMin, lim_taxSwapMax);
	}

	function _swapTaxAndLiquify() private lockTaxSwap {
		uint256 _taxTokensAvailable = balanceOf(address(this));

		if ( _taxTokensAvailable >= lim_taxSwapMin && _tradingOpen ) {
			if ( _taxTokensAvailable >= lim_taxSwapMax ) { _taxTokensAvailable = lim_taxSwapMax; }
			uint256 _tokensForLP = _taxTokensAvailable * fee_sharesAutoLP / fee_sharesTOTAL / 2;
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
			if (_tokensToSwap >= 10**_decimals) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				if ( fee_sharesAutoLP > 0 ) {
					uint256 _ethWeiAmount = _ethSwapped * fee_sharesAutoLP / fee_sharesTOTAL ;
					_approveRouter(_tokensForLP);
					_addLiquidity(_tokensForLP, _ethWeiAmount, false);
				}
			}
			uint256 _contractETHBalance = address(this).balance;			
			if (_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
		}
	}

	function _swapTaxTokensForEth(uint256 _tokenAmount) private {
		_approveRouter(_tokenAmount);
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _wethAddress;
		_uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp);
	}

	function _distributeTaxEth(uint256 _amount) private {
		uint16 _ethTaxShareTotal = fee_sharesMarketing + fee_sharesDevelopment + fee_sharesCharity + fee_sharesBuyback; 
		if ( fee_sharesMarketing > 0 ) { wlt_marketing.transfer(_amount * fee_sharesMarketing / _ethTaxShareTotal); }
		if ( fee_sharesDevelopment > 0 ) { wlt_development.transfer(_amount * fee_sharesDevelopment / _ethTaxShareTotal); }
		if ( fee_sharesCharity > 0 ) { wlt_charity.transfer(_amount * fee_sharesCharity / _ethTaxShareTotal); }
		if ( fee_sharesBuyback > 0 ) { wlt_buyback.transfer(_amount * fee_sharesBuyback / _ethTaxShareTotal); }
	}

	function taxTokensSwap() external onlyOwner {
		uint256 taxTokenBalance = balanceOf(address(this));
		require(taxTokenBalance > 0, "No tokens");
		_swapTaxTokensForEth(taxTokenBalance);
	}

	function taxEthSend() external onlyOwner { 
		_distributeTaxEth(address(this).balance); 
	}

	function burnTokens(uint256 amount) external {
		uint256 _tokensAvailable = balanceOf(msg.sender);
		require(amount <= _tokensAvailable, "Token balance too low");
		_balances[msg.sender] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(msg.sender, address(0), amount);
		emit TokensBurned(msg.sender, amount);
	}

	function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner {
        require(addresses.length <= 200,"Wallet count over 200 (gas risk)");
        require(addresses.length == tokenAmounts.length,"Address and token amount list mismach");

        uint256 airdropTotal = 0;
        for(uint i=0; i < addresses.length; i++){
            airdropTotal += (tokenAmounts[i] * 10**_decimals);
        }
        require(_balances[msg.sender] >= airdropTotal, "Token balance lower than airdrop total");

        for(uint i=0; i < addresses.length; i++){
            _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals);
            _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals);
			emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) );       
        }

        emit TokensAirdropped(addresses.length, airdropTotal);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"LimitsIncreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"autoLP","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"marketing","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"development","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"charity","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"buyback","type":"uint16"}],"name":"TaxDistributionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateTransfer","type":"uint8"},{"indexed":false,"internalType":"bool","name":"buySupport","type":"bool"}],"name":"TaxRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"name":"TaxSwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"},{"indexed":false,"internalType":"address","name":"development","type":"address"},{"indexed":false,"internalType":"address","name":"charity","type":"address"},{"indexed":false,"internalType":"address","name":"buyback","type":"address"}],"name":"TaxWalletsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"burnedFrom","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"noFees","type":"bool"},{"indexed":false,"internalType":"bool","name":"noLimits","type":"bool"}],"name":"WalletExemptionsSet","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getBlacklistStatus","outputs":[{"internalType":"bool","name":"isBlacklisted","type":"bool"},{"internalType":"uint256","name":"blacklistBlock","type":"uint256"},{"internalType":"uint16","name":"totalBlacklistedWallets","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeSettings","outputs":[{"internalType":"uint8","name":"taxRateMaxLimit","type":"uint8"},{"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"internalType":"uint8","name":"taxRateTransfer","type":"uint8"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesCharity","type":"uint16"},{"internalType":"uint16","name":"sharesBuyback","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWallets","outputs":[{"internalType":"address","name":"contractOwner","type":"address"},{"internalType":"address","name":"liquidityPool","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"charity","type":"address"},{"internalType":"address","name":"buyback","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmountWei","type":"uint256"}],"name":"initLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesCharity","type":"uint16"},{"internalType":"uint16","name":"sharesBuyback","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"},{"internalType":"uint8","name":"newTxTax","type":"uint8"},{"internalType":"bool","name":"enableBuySupport","type":"bool"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevelopmentWallet","type":"address"},{"internalType":"address","name":"newCharityWallet","type":"address"},{"internalType":"address","name":"newBuybackWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxEthSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxTokensSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600560006101000a81548161ffff021916908361ffff16021790555060006011556000601460006101000a81548160ff02191690831515021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000a457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600360006101000a81548160ff021916908315150217905550600b600560026101000a81548160ff021916908360ff1602179055506009600a6200012e919062000f78565b6509184e72a00062000141919062000fc9565b6006819055506009600a62000157919062000f78565b6509184e72a0006200016a919062000fc9565b600781905550612710600a6009600a62000185919062000f78565b6509184e72a00062000198919062000fc9565b620001a4919062000fc9565b620001b0919062001059565b60088190555061271060326009600a620001cb919062000f78565b6509184e72a000620001de919062000fc9565b620001ea919062000fc9565b620001f6919062001059565b60098190555061012c600560066101000a81548161ffff021916908361ffff16021790555061012c600560086101000a81548161ffff021916908361ffff16021790555061012c6005600a6101000a81548161ffff021916908361ffff16021790555060646005600c6101000a81548161ffff021916908361ffff16021790555060646005600e6101000a81548161ffff021916908361ffff1602179055506005600e9054906101000a900461ffff166005600c9054906101000a900461ffff166005600a9054906101000a900461ffff16600560089054906101000a900461ffff16600560069054906101000a900461ffff16620002f691906200109f565b6200030291906200109f565b6200030e91906200109f565b6200031a91906200109f565b600560106101000a81548161ffff021916908361ffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736a61ab526cebd515a7a22bfa4b7614f819d1e498600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b72524dce54383dec67fa674e16d6ba9b8d9acc1600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073de8102579e1e10669e585c046de820ece332c9ac600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735f0004f0dfa960a842e5571126bf95c273878bc1600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506848efebd05bb2313e47600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000c159190620010ef565b60405180910390a3600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a62000c6d919062000f78565b6509184e72a00062000c80919062000fc9565b62000c8c91906200110c565b600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000dd09190620010ef565b60405180910390a362001147565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e6c5780860481111562000e445762000e4362000dde565b5b600185161562000e545780820291505b808102905062000e648562000e0d565b945062000e24565b94509492505050565b60008262000e87576001905062000f5a565b8162000e97576000905062000f5a565b816001811462000eb0576002811462000ebb5762000ef1565b600191505062000f5a565b60ff84111562000ed05762000ecf62000dde565b5b8360020a91508482111562000eea5762000ee962000dde565b5b5062000f5a565b5060208310610133831016604e8410600b841016171562000f2b5782820a90508381111562000f255762000f2462000dde565b5b62000f5a565b62000f3a848484600162000e1a565b9250905081840481111562000f545762000f5362000dde565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000f858262000f61565b915062000f928362000f6b565b925062000fc17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e75565b905092915050565b600062000fd68262000f61565b915062000fe38362000f61565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200101f576200101e62000dde565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010668262000f61565b9150620010738362000f61565b9250826200108657620010856200102a565b5b828204905092915050565b600061ffff82169050919050565b6000620010ac8262001091565b9150620010b98362001091565b92508261ffff03821115620010d357620010d262000dde565b5b828201905092915050565b620010e98162000f61565b82525050565b6000602082019050620011066000830184620010de565b92915050565b6000620011198262000f61565b9150620011268362000f61565b9250828210156200113c576200113b62000dde565b5b828203905092915050565b615f5480620011576000396000f3fe6080604052600436106101bb5760003560e01c806370a08231116100ec578063dc55f5c71161008a578063e4dbc45b11610064578063e4dbc45b14610616578063f2fde38b1461063f578063fc38e48114610668578063ffb54a9914610691576101c2565b8063dc55f5c714610599578063dca2a8b6146105c2578063dd62ed3e146105d9576101c2565b8063a9059cbb116100c6578063a9059cbb146104ec578063b142180314610529578063c9567bf914610552578063db7a460514610569576101c2565b806370a0823114610446578063931b68ea1461048357806395d89b41146104c1576101c2565b8063313ce56711610159578063677ef84611610133578063677ef8461461039d5780636969c1a4146103c65780636d1b229d146103ef5780636f89e40914610418576101c2565b8063313ce5671461030a57806358d2b4a5146103355780636724348214610374576101c2565b806318839bc31161019557806318839bc31461025a5780631c939ee91461028357806323b872dd1461029a5780632b38400e146102d7576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106bc565b6040516101e991906143eb565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906144ab565b6106f9565b6040516102269190614506565b60405180910390f35b34801561023b57600080fd5b50610244610858565b6040516102519190614530565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190614577565b61087e565b005b34801561028f57600080fd5b506102986109fa565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906145ca565b610a93565b6040516102ce9190614506565b60405180910390f35b3480156102e357600080fd5b506102ec610c9c565b60405161030199989796959493929190614656565b60405180910390f35b34801561031657600080fd5b5061031f610d5a565b60405161032c91906146e3565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906146fe565b610d63565b60405161036b9392919061472b565b60405180910390f35b34801561038057600080fd5b5061039b6004803603810190610396919061481d565b610e15565b005b3480156103a957600080fd5b506103c460048036038101906103bf919061489e565b61126d565b005b3480156103d257600080fd5b506103ed60048036038101906103e89190614905565b6115a2565b005b3480156103fb57600080fd5b5061041660048036038101906104119190614905565b611c48565b005b34801561042457600080fd5b5061042d611de7565b60405161043d9493929190614932565b60405180910390f35b34801561045257600080fd5b5061046d600480360381019061046891906146fe565b611e07565b60405161047a9190614530565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a591906146fe565b611e50565b6040516104b8929190614977565b60405180910390f35b3480156104cd57600080fd5b506104d6611ef6565b6040516104e391906143eb565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906144ab565b611f33565b6040516105209190614506565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b91906149cc565b611f8f565b005b34801561055e57600080fd5b5061056761218e565b005b34801561057557600080fd5b5061057e612307565b60405161059096959493929190614a1b565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190614a7c565b6123f4565b005b3480156105ce57600080fd5b506105d76125f2565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190614af7565b6126dc565b60405161060d9190614530565b60405180910390f35b34801561062257600080fd5b5061063d60048036038101906106389190614b73565b612763565b005b34801561064b57600080fd5b5061066660048036038101906106619190614c18565b6128d2565b005b34801561067457600080fd5b5061068f600480360381019061068a9190614c71565b6129da565b005b34801561069d57600080fd5b506106a6612c8f565b6040516106b39190614506565b60405180910390f35b60606040518060400160405280600581526020017f5348494654000000000000000000000000000000000000000000000000000000815250905090565b6000436011541180156107565750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156107685761076733436001612cdf565b5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108469190614530565b60405180910390a36001905092915050565b60006009600a6108689190614e3a565b6509184e72a0006108799190614e85565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390614f51565b60405180910390fd5b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed08383836040516109ed93929190614f71565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f90614f51565b60405180910390fd5b610a9147612e09565b565b6000610a9d613147565b610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390614ff4565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c885781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c079190615014565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c938484846131cc565b90509392505050565b6000806000806000806000806000600560029054906101000a900460ff16600560039054906101000a900460ff16600560049054906101000a900460ff1660058054906101000a900460ff16600560069054906101000a900461ffff16600560089054906101000a900461ffff166005600a9054906101000a900461ffff166005600c9054906101000a900461ffff166005600e9054906101000a900461ffff16985098509850985098509850985098509850909192939495969798565b60006009905090565b6000806000806000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610db557600190505b80601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900461ffff16935093509350509193909250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a90614f51565b60405180910390fd5b60c8848490501115610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190615094565b60405180910390fd5b818190508484905014610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2990615126565b60405180910390fd5b6000805b85859050811015610f93576009600a610f4f9190614e3a565b848483818110610f6257610f61615146565b5b90506020020135610f739190614e85565b82610f7e9190615175565b91508080610f8b906151cb565b915050610f36565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d90615285565b60405180910390fd5b60005b85859050811015611229576009600a6110329190614e3a565b84848381811061104557611044615146565b5b905060200201356110569190614e85565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110a49190615014565b925050819055506009600a6110b99190614e3a565b8484838181106110cc576110cb615146565b5b905060200201356110dd9190614e85565b600160008888858181106110f4576110f3615146565b5b905060200201602081019061110991906146fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111529190615175565b9250508190555085858281811061116c5761116b615146565b5b905060200201602081019061118191906146fe565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6111dd9190614e3a565b8787868181106111f0576111ef615146565b5b905060200201356112019190614e85565b60405161120e9190614530565b60405180910390a38080611221906151cb565b915050611019565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464858590508260405161125e9291906152a5565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290614f51565b60405180910390fd5b83600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7e43be5031ac589eb5c09ce251f1670365b5fb2490f1705900323eeabf10ca518484848460405161159494939291906152ce565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162790614f51565b60405180910390fd5b600360009054906101000a900460ff1615611680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116779061535f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611708906153cb565b60405180910390fd5b60008111611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b90615437565b60405180910390fd5b6001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611930919061546c565b601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000479050818110156119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119af906154e5565b60405180910390fd5b60006119c330611e07565b905060008111611a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ff90615551565b60405180910390fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9b919061546c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611af7929190615571565b6020604051808303816000875af1158015611b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3a919061546c565b905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c368261386c565b611c4282856000613a56565b50505050565b6000611c5333611e07565b905080821115611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f906155e6565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ce79190615014565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d3d9190615175565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611da29190614530565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb63383604051611ddb929190615606565b60405180910390a15050565b600080600080600654600754600854600954935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600581526020017f5348494654000000000000000000000000000000000000000000000000000000815250905090565b6000611f3d613147565b611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390614ff4565b60405180910390fd5b611f873384846131cc565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490614f51565b60405180910390fd5b600060016103e88461ffff166009600a6120379190614e3a565b6509184e72a0006120489190614e85565b6120529190614e85565b61205c919061565e565b6120669190615175565b90506006548110156120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a4906156db565b60405180910390fd5b80600681905550600060016103e88461ffff166009600a6120ce9190614e3a565b6509184e72a0006120df9190614e85565b6120e99190614e85565b6120f3919061565e565b6120fd9190615175565b9050600754811015612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b90615747565b60405180910390fd5b806007819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f76006546007546040516121809291906152a5565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461221c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221390614f51565b60405180910390fd5b600360009054906101000a900460ff161561226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639061535f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f4906157b3565b60405180910390fd5b612305613b34565b565b60008060008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955095509550955095509550909192939495565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614f51565b60405180910390fd5b84600560066101000a81548161ffff021916908361ffff16021790555083600560086101000a81548161ffff021916908361ffff160217905550826005600a6101000a81548161ffff021916908361ffff160217905550816005600c6101000a81548161ffff021916908361ffff160217905550806005600e6101000a81548161ffff021916908361ffff1602179055506005600e9054906101000a900461ffff166005600c9054906101000a900461ffff166005600a9054906101000a900461ffff16600560089054906101000a900461ffff16600560069054906101000a900461ffff1661257291906157d3565b61257c91906157d3565b61258691906157d3565b61259091906157d3565b600560106101000a81548161ffff021916908361ffff1602179055507fccb4a96d4f7e36c9ba5f2b62187ca244ce0919ee883fa5ed88c3b5cb51a174b285858585856040516125e395949392919061580b565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267790614f51565b60405180910390fd5b600061268b30611e07565b9050600081116126d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c7906158aa565b60405180910390fd5b6126d981613c63565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e890614f51565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61280d9190614e3a565b6509184e72a00061281e9190614e85565b6128289190614e85565b612832919061565e565b6008819055508063ffffffff168263ffffffff166009600a6128549190614e3a565b6509184e72a0006128659190614e85565b61286f9190614e85565b612879919061565e565b6009819055506008546009541161288f57600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb6008546009546040516128c49291906152a5565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295790614f51565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516129cf9190615929565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5f90614f51565b60405180910390fd5b8015612b2a578360ff168360ff1611612ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aad906159b6565b60405180910390fd5b600560029054906101000a900460ff166002612ad291906159d6565b60ff168385612ae19190615a11565b60ff161115612b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1c90615a94565b60405180910390fd5b612ba4565b600560029054906101000a900460ff1660ff168460ff1611158015612b645750600560029054906101000a900460ff1660ff168360ff1611155b612ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9a90615b00565b60405180910390fd5b5b600560029054906101000a900460ff1660ff168260ff161115612bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf390615b00565b60405180910390fd5b83600560036101000a81548160ff021916908360ff16021790555082600560046101000a81548160ff021916908360ff160217905550816005806101000a81548160ff021916908360ff1602179055507fad5f92c9aca612d1d1b2c7afafd77c1b96e3d9b873cad916be28888672cf919384848484604051612c819493929190615b20565b60405180910390a150505050565b6000600360009054906101000a900460ff168015612cbb57506005601154612cb79190615175565b4310155b15612cd757600360009054906101000a900460ff169050612cdc565b600090505b90565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d7857506000601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15612e045781601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612e03576005600081819054906101000a900461ffff1680929190612de790615b65565b91906101000a81548161ffff021916908361ffff160217905550505b5b505050565b60006005600e9054906101000a900461ffff166005600c9054906101000a900461ffff166005600a9054906101000a900461ffff16600560089054906101000a900461ffff16612e5991906157d3565b612e6391906157d3565b612e6d91906157d3565b90506000600560089054906101000a900461ffff1661ffff161115612f2457600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600560089054906101000a900461ffff1661ffff1685612eed9190614e85565b612ef7919061565e565b9081150290604051600060405180830381858888f19350505050158015612f22573d6000803e3d6000fd5b505b60006005600a9054906101000a900461ffff1661ffff161115612fd957600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600a9054906101000a900461ffff1661ffff1685612fa29190614e85565b612fac919061565e565b9081150290604051600060405180830381858888f19350505050158015612fd7573d6000803e3d6000fd5b505b60006005600c9054906101000a900461ffff1661ffff16111561308e57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600c9054906101000a900461ffff1661ffff16856130579190614e85565b613061919061565e565b9081150290604051600060405180830381858888f1935050505015801561308c573d6000803e3d6000fd5b505b60006005600e9054906101000a900461ffff1661ffff16111561314357600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600e9054906101000a900461ffff1661ffff168561310c9190614e85565b613116919061565e565b9081150290604051600060405180830381858888f19350505050158015613141573d6000803e3d6000fd5b505b5050565b60008060009050600360009054906101000a900460ff161561316c57600190506131c5565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036131c457600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156132375750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b613276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326d90615bdb565b60405180910390fd5b436011541115613329576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036132d8576132d383436001612cdf565b613324565b61332383601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612cdf565b5b6133bd565b6000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133bc576133bb83601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612cdf565b5b5b600360009054906101000a900460ff16801561341957506000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015613463575043601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b156134a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349a90615c47565b60405180910390fd5b601460009054906101000a900460ff161580156135095750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561351757613516613e14565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561357f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156135d7575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613627576135e7848484613fb3565b613626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361d90615cb3565b60405180910390fd5b5b600061363485858561414a565b9050600081846136449190615014565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136919190615014565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561376c5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137289190615175565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137b79190615175565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516138579190614530565b60405180910390a36001925050509392505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613a53577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051613a4a9190614530565b60405180910390a35b50565b600081613a815760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401613ae896959493929190615d0e565b60606040518083038185885af1158015613b06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b2b9190615d84565b50505050505050565b600143613b419190615175565b6011819055506009600a613b559190614e3a565b6127106009600a613b669190614e3a565b6509184e72a000613b779190614e85565b6064613b839190614e85565b613b8d919061565e565b613b979190615175565b6006819055506009600a613bab9190614e3a565b6127106009600a613bbc9190614e3a565b6509184e72a000613bcd9190614e85565b6064613bd99190614e85565b613be3919061565e565b613bed9190615175565b600781905550600b600560036101000a81548160ff021916908360ff1602179055506016600560046101000a81548160ff021916908360ff16021790555060006005806101000a81548160ff021916908360ff1602179055506001600360006101000a81548160ff021916908315150217905550565b613c6c8161386c565b6000600267ffffffffffffffff811115613c8957613c88615dd7565b5b604051908082528060200260200182016040528015613cb75781602001602082028036833780820191505090505b5090503081600081518110613ccf57613cce615146565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613d4057613d3f615146565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dde959493929190615ec4565b600060405180830381600087803b158015613df857600080fd5b505af1158015613e0c573d6000803e3d6000fd5b505050505050565b6001601460006101000a81548160ff0219169083151502179055506000613e3a30611e07565b90506008548110158015613e5a5750600360009054906101000a900460ff165b15613f95576009548110613e6e5760095490505b60006002600560109054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff1684613ea79190614e85565b613eb1919061565e565b613ebb919061565e565b905060008183613ecb9190615014565b90506009600a613edb9190614e3a565b8110613f79576000479050613eef82613c63565b60008147613efd9190615014565b90506000600560069054906101000a900461ffff1661ffff161115613f76576000600560109054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff1683613f539190614e85565b613f5d919061565e565b9050613f688561386c565b613f7485826000613a56565b505b50505b60004790506000811115613f9157613f9081612e09565b5b5050505b506000601460006101000a81548160ff021916908315150217905550565b60008060019050600360009054906101000a900460ff1680156140205750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156140765750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561413f5760065483111561408e576000905061413e565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015614133575060075483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141319190615175565b115b1561413d57600090505b5b5b809150509392505050565b600080600360009054906101000a900460ff1615806141b25750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806142065750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156142145760009050614347565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614297576064600560039054906101000a900460ff1660ff16846142869190614e85565b614290919061565e565b9050614346565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561431a576064600560049054906101000a900460ff1660ff16846143099190614e85565b614313919061565e565b9050614345565b606460058054906101000a900460ff1660ff16846143389190614e85565b614342919061565e565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561438c578082015181840152602081019050614371565b8381111561439b576000848401525b50505050565b6000601f19601f8301169050919050565b60006143bd82614352565b6143c7818561435d565b93506143d781856020860161436e565b6143e0816143a1565b840191505092915050565b6000602082019050818103600083015261440581846143b2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061444282614417565b9050919050565b61445281614437565b811461445d57600080fd5b50565b60008135905061446f81614449565b92915050565b6000819050919050565b61448881614475565b811461449357600080fd5b50565b6000813590506144a58161447f565b92915050565b600080604083850312156144c2576144c161440d565b5b60006144d085828601614460565b92505060206144e185828601614496565b9150509250929050565b60008115159050919050565b614500816144eb565b82525050565b600060208201905061451b60008301846144f7565b92915050565b61452a81614475565b82525050565b60006020820190506145456000830184614521565b92915050565b614554816144eb565b811461455f57600080fd5b50565b6000813590506145718161454b565b92915050565b6000806000606084860312156145905761458f61440d565b5b600061459e86828701614460565b93505060206145af86828701614562565b92505060406145c086828701614562565b9150509250925092565b6000806000606084860312156145e3576145e261440d565b5b60006145f186828701614460565b935050602061460286828701614460565b925050604061461386828701614496565b9150509250925092565b600060ff82169050919050565b6146338161461d565b82525050565b600061ffff82169050919050565b61465081614639565b82525050565b60006101208201905061466c600083018c61462a565b614679602083018b61462a565b614686604083018a61462a565b614693606083018961462a565b6146a06080830188614647565b6146ad60a0830187614647565b6146ba60c0830186614647565b6146c760e0830185614647565b6146d5610100830184614647565b9a9950505050505050505050565b60006020820190506146f8600083018461462a565b92915050565b6000602082840312156147145761471361440d565b5b600061472284828501614460565b91505092915050565b600060608201905061474060008301866144f7565b61474d6020830185614521565b61475a6040830184614647565b949350505050565b600080fd5b600080fd5b600080fd5b60008083601f84011261478757614786614762565b5b8235905067ffffffffffffffff8111156147a4576147a3614767565b5b6020830191508360208202830111156147c0576147bf61476c565b5b9250929050565b60008083601f8401126147dd576147dc614762565b5b8235905067ffffffffffffffff8111156147fa576147f9614767565b5b6020830191508360208202830111156148165761481561476c565b5b9250929050565b600080600080604085870312156148375761483661440d565b5b600085013567ffffffffffffffff81111561485557614854614412565b5b61486187828801614771565b9450945050602085013567ffffffffffffffff81111561488457614883614412565b5b614890878288016147c7565b925092505092959194509250565b600080600080608085870312156148b8576148b761440d565b5b60006148c687828801614460565b94505060206148d787828801614460565b93505060406148e887828801614460565b92505060606148f987828801614460565b91505092959194509250565b60006020828403121561491b5761491a61440d565b5b600061492984828501614496565b91505092915050565b60006080820190506149476000830187614521565b6149546020830186614521565b6149616040830185614521565b61496e6060830184614521565b95945050505050565b600060408201905061498c60008301856144f7565b61499960208301846144f7565b9392505050565b6149a981614639565b81146149b457600080fd5b50565b6000813590506149c6816149a0565b92915050565b600080604083850312156149e3576149e261440d565b5b60006149f1858286016149b7565b9250506020614a02858286016149b7565b9150509250929050565b614a1581614437565b82525050565b600060c082019050614a306000830189614a0c565b614a3d6020830188614a0c565b614a4a6040830187614a0c565b614a576060830186614a0c565b614a646080830185614a0c565b614a7160a0830184614a0c565b979650505050505050565b600080600080600060a08688031215614a9857614a9761440d565b5b6000614aa6888289016149b7565b9550506020614ab7888289016149b7565b9450506040614ac8888289016149b7565b9350506060614ad9888289016149b7565b9250506080614aea888289016149b7565b9150509295509295909350565b60008060408385031215614b0e57614b0d61440d565b5b6000614b1c85828601614460565b9250506020614b2d85828601614460565b9150509250929050565b600063ffffffff82169050919050565b614b5081614b37565b8114614b5b57600080fd5b50565b600081359050614b6d81614b47565b92915050565b60008060008060808587031215614b8d57614b8c61440d565b5b6000614b9b87828801614b5e565b9450506020614bac87828801614b5e565b9350506040614bbd87828801614b5e565b9250506060614bce87828801614b5e565b91505092959194509250565b6000614be582614417565b9050919050565b614bf581614bda565b8114614c0057600080fd5b50565b600081359050614c1281614bec565b92915050565b600060208284031215614c2e57614c2d61440d565b5b6000614c3c84828501614c03565b91505092915050565b614c4e8161461d565b8114614c5957600080fd5b50565b600081359050614c6b81614c45565b92915050565b60008060008060808587031215614c8b57614c8a61440d565b5b6000614c9987828801614c5c565b9450506020614caa87828801614c5c565b9350506040614cbb87828801614c5c565b9250506060614ccc87828801614562565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614d5e57808604811115614d3a57614d39614cd8565b5b6001851615614d495780820291505b8081029050614d5785614d07565b9450614d1e565b94509492505050565b600082614d775760019050614e33565b81614d855760009050614e33565b8160018114614d9b5760028114614da557614dd4565b6001915050614e33565b60ff841115614db757614db6614cd8565b5b8360020a915084821115614dce57614dcd614cd8565b5b50614e33565b5060208310610133831016604e8410600b8410161715614e095782820a905083811115614e0457614e03614cd8565b5b614e33565b614e168484846001614d14565b92509050818404811115614e2d57614e2c614cd8565b5b81810290505b9392505050565b6000614e4582614475565b9150614e508361461d565b9250614e7d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614d67565b905092915050565b6000614e9082614475565b9150614e9b83614475565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ed457614ed3614cd8565b5b828202905092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614f3b602a8361435d565b9150614f4682614edf565b604082019050919050565b60006020820190508181036000830152614f6a81614f2e565b9050919050565b6000606082019050614f866000830186614a0c565b614f9360208301856144f7565b614fa060408301846144f7565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614fde60108361435d565b9150614fe982614fa8565b602082019050919050565b6000602082019050818103600083015261500d81614fd1565b9050919050565b600061501f82614475565b915061502a83614475565b92508282101561503d5761503c614cd8565b5b828203905092915050565b7f57616c6c657420636f756e74206f766572203230302028676173207269736b29600082015250565b600061507e60208361435d565b915061508982615048565b602082019050919050565b600060208201905081810360008301526150ad81615071565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b600061511060258361435d565b915061511b826150b4565b604082019050919050565b6000602082019050818103600083015261513f81615103565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061518082614475565b915061518b83614475565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151c0576151bf614cd8565b5b828201905092915050565b60006151d682614475565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361520857615207614cd8565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b600061526f60268361435d565b915061527a82615213565b604082019050919050565b6000602082019050818103600083015261529e81615262565b9050919050565b60006040820190506152ba6000830185614521565b6152c76020830184614521565b9392505050565b60006080820190506152e36000830187614a0c565b6152f06020830186614a0c565b6152fd6040830185614a0c565b61530a6060830184614a0c565b95945050505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061534960148361435d565b915061535482615313565b602082019050919050565b600060208201905081810360008301526153788161533c565b9050919050565b7f4c5020616c726561647920696e697469616c697a656400000000000000000000600082015250565b60006153b560168361435d565b91506153c08261537f565b602082019050919050565b600060208201905081810360008301526153e4816153a8565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000615421600f8361435d565b915061542c826153eb565b602082019050919050565b6000602082019050818103600083015261545081615414565b9050919050565b60008151905061546681614449565b92915050565b6000602082840312156154825761548161440d565b5b600061549084828501615457565b91505092915050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b60006154cf600e8361435d565b91506154da82615499565b602082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061553b60098361435d565b915061554682615505565b602082019050919050565b6000602082019050818103600083015261556a8161552e565b9050919050565b60006040820190506155866000830185614a0c565b6155936020830184614a0c565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006155d060158361435d565b91506155db8261559a565b602082019050919050565b600060208201905081810360008301526155ff816155c3565b9050919050565b600060408201905061561b6000830185614a0c565b6156286020830184614521565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061566982614475565b915061567483614475565b9250826156845761568361562f565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006156c560108361435d565b91506156d08261568f565b602082019050919050565b600060208201905081810360008301526156f4816156b8565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061573160148361435d565b915061573c826156fb565b602082019050919050565b6000602082019050818103600083015261576081615724565b9050919050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b600061579d60128361435d565b91506157a882615767565b602082019050919050565b600060208201905081810360008301526157cc81615790565b9050919050565b60006157de82614639565b91506157e983614639565b92508261ffff03821115615800576157ff614cd8565b5b828201905092915050565b600060a0820190506158206000830188614647565b61582d6020830187614647565b61583a6040830186614647565b6158476060830185614647565b6158546080830184614647565b9695505050505050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061589460098361435d565b915061589f8261585e565b602082019050919050565b600060208201905081810360008301526158c381615887565b9050919050565b6000819050919050565b60006158ef6158ea6158e584614417565b6158ca565b614417565b9050919050565b6000615901826158d4565b9050919050565b6000615913826158f6565b9050919050565b61592381615908565b82525050565b600060208201905061593e600083018461591a565b92915050565b7f53656c6c20746178206d75737420626520686967686572207468616e2062757960008201527f2074617800000000000000000000000000000000000000000000000000000000602082015250565b60006159a060248361435d565b91506159ab82615944565b604082019050919050565b600060208201905081810360008301526159cf81615993565b9050919050565b60006159e18261461d565b91506159ec8361461d565b92508160ff0483118215151615615a0657615a05614cd8565b5b828202905092915050565b6000615a1c8261461d565b9150615a278361461d565b92508260ff03821115615a3d57615a3c614cd8565b5b828201905092915050565b7f4176672074617820746f6f206869676800000000000000000000000000000000600082015250565b6000615a7e60108361435d565b9150615a8982615a48565b602082019050919050565b60006020820190508181036000830152615aad81615a71565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000615aea600c8361435d565b9150615af582615ab4565b602082019050919050565b60006020820190508181036000830152615b1981615add565b9050919050565b6000608082019050615b35600083018761462a565b615b42602083018661462a565b615b4f604083018561462a565b615b5c60608301846144f7565b95945050505050565b6000615b7082614639565b915061ffff8203615b8457615b83614cd8565b5b600182019050919050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000615bc560188361435d565b9150615bd082615b8f565b602082019050919050565b60006020820190508181036000830152615bf481615bb8565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615c31600b8361435d565b9150615c3c82615bfb565b602082019050919050565b60006020820190508181036000830152615c6081615c24565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000615c9d60118361435d565b9150615ca882615c67565b602082019050919050565b60006020820190508181036000830152615ccc81615c90565b9050919050565b6000819050919050565b6000615cf8615cf3615cee84615cd3565b6158ca565b614475565b9050919050565b615d0881615cdd565b82525050565b600060c082019050615d236000830189614a0c565b615d306020830188614521565b615d3d6040830187615cff565b615d4a6060830186615cff565b615d576080830185614a0c565b615d6460a0830184614521565b979650505050505050565b600081519050615d7e8161447f565b92915050565b600080600060608486031215615d9d57615d9c61440d565b5b6000615dab86828701615d6f565b9350506020615dbc86828701615d6f565b9250506040615dcd86828701615d6f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615e3b81614437565b82525050565b6000615e4d8383615e32565b60208301905092915050565b6000602082019050919050565b6000615e7182615e06565b615e7b8185615e11565b9350615e8683615e22565b8060005b83811015615eb7578151615e9e8882615e41565b9750615ea983615e59565b925050600181019050615e8a565b5085935050505092915050565b600060a082019050615ed96000830188614521565b615ee66020830187615cff565b8181036040830152615ef88186615e66565b9050615f076060830185614a0c565b615f146080830184614521565b969550505050505056fea2646970667358221220e4c11668a17d6d07d23840bc5bb1a177f5c7efaa9ff2884ee5be142cd21c3e0f64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806370a08231116100ec578063dc55f5c71161008a578063e4dbc45b11610064578063e4dbc45b14610616578063f2fde38b1461063f578063fc38e48114610668578063ffb54a9914610691576101c2565b8063dc55f5c714610599578063dca2a8b6146105c2578063dd62ed3e146105d9576101c2565b8063a9059cbb116100c6578063a9059cbb146104ec578063b142180314610529578063c9567bf914610552578063db7a460514610569576101c2565b806370a0823114610446578063931b68ea1461048357806395d89b41146104c1576101c2565b8063313ce56711610159578063677ef84611610133578063677ef8461461039d5780636969c1a4146103c65780636d1b229d146103ef5780636f89e40914610418576101c2565b8063313ce5671461030a57806358d2b4a5146103355780636724348214610374576101c2565b806318839bc31161019557806318839bc31461025a5780631c939ee91461028357806323b872dd1461029a5780632b38400e146102d7576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106bc565b6040516101e991906143eb565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906144ab565b6106f9565b6040516102269190614506565b60405180910390f35b34801561023b57600080fd5b50610244610858565b6040516102519190614530565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190614577565b61087e565b005b34801561028f57600080fd5b506102986109fa565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906145ca565b610a93565b6040516102ce9190614506565b60405180910390f35b3480156102e357600080fd5b506102ec610c9c565b60405161030199989796959493929190614656565b60405180910390f35b34801561031657600080fd5b5061031f610d5a565b60405161032c91906146e3565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906146fe565b610d63565b60405161036b9392919061472b565b60405180910390f35b34801561038057600080fd5b5061039b6004803603810190610396919061481d565b610e15565b005b3480156103a957600080fd5b506103c460048036038101906103bf919061489e565b61126d565b005b3480156103d257600080fd5b506103ed60048036038101906103e89190614905565b6115a2565b005b3480156103fb57600080fd5b5061041660048036038101906104119190614905565b611c48565b005b34801561042457600080fd5b5061042d611de7565b60405161043d9493929190614932565b60405180910390f35b34801561045257600080fd5b5061046d600480360381019061046891906146fe565b611e07565b60405161047a9190614530565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a591906146fe565b611e50565b6040516104b8929190614977565b60405180910390f35b3480156104cd57600080fd5b506104d6611ef6565b6040516104e391906143eb565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906144ab565b611f33565b6040516105209190614506565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b91906149cc565b611f8f565b005b34801561055e57600080fd5b5061056761218e565b005b34801561057557600080fd5b5061057e612307565b60405161059096959493929190614a1b565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190614a7c565b6123f4565b005b3480156105ce57600080fd5b506105d76125f2565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190614af7565b6126dc565b60405161060d9190614530565b60405180910390f35b34801561062257600080fd5b5061063d60048036038101906106389190614b73565b612763565b005b34801561064b57600080fd5b5061066660048036038101906106619190614c18565b6128d2565b005b34801561067457600080fd5b5061068f600480360381019061068a9190614c71565b6129da565b005b34801561069d57600080fd5b506106a6612c8f565b6040516106b39190614506565b60405180910390f35b60606040518060400160405280600581526020017f5348494654000000000000000000000000000000000000000000000000000000815250905090565b6000436011541180156107565750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156107685761076733436001612cdf565b5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108469190614530565b60405180910390a36001905092915050565b60006009600a6108689190614e3a565b6509184e72a0006108799190614e85565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390614f51565b60405180910390fd5b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed08383836040516109ed93929190614f71565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f90614f51565b60405180910390fd5b610a9147612e09565b565b6000610a9d613147565b610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390614ff4565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c885781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c079190615014565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c938484846131cc565b90509392505050565b6000806000806000806000806000600560029054906101000a900460ff16600560039054906101000a900460ff16600560049054906101000a900460ff1660058054906101000a900460ff16600560069054906101000a900461ffff16600560089054906101000a900461ffff166005600a9054906101000a900461ffff166005600c9054906101000a900461ffff166005600e9054906101000a900461ffff16985098509850985098509850985098509850909192939495969798565b60006009905090565b6000806000806000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610db557600190505b80601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900461ffff16935093509350509193909250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a90614f51565b60405180910390fd5b60c8848490501115610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190615094565b60405180910390fd5b818190508484905014610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2990615126565b60405180910390fd5b6000805b85859050811015610f93576009600a610f4f9190614e3a565b848483818110610f6257610f61615146565b5b90506020020135610f739190614e85565b82610f7e9190615175565b91508080610f8b906151cb565b915050610f36565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d90615285565b60405180910390fd5b60005b85859050811015611229576009600a6110329190614e3a565b84848381811061104557611044615146565b5b905060200201356110569190614e85565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110a49190615014565b925050819055506009600a6110b99190614e3a565b8484838181106110cc576110cb615146565b5b905060200201356110dd9190614e85565b600160008888858181106110f4576110f3615146565b5b905060200201602081019061110991906146fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111529190615175565b9250508190555085858281811061116c5761116b615146565b5b905060200201602081019061118191906146fe565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6111dd9190614e3a565b8787868181106111f0576111ef615146565b5b905060200201356112019190614e85565b60405161120e9190614530565b60405180910390a38080611221906151cb565b915050611019565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464858590508260405161125e9291906152a5565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290614f51565b60405180910390fd5b83600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7e43be5031ac589eb5c09ce251f1670365b5fb2490f1705900323eeabf10ca518484848460405161159494939291906152ce565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162790614f51565b60405180910390fd5b600360009054906101000a900460ff1615611680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116779061535f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611708906153cb565b60405180910390fd5b60008111611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b90615437565b60405180910390fd5b6001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611930919061546c565b601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000479050818110156119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119af906154e5565b60405180910390fd5b60006119c330611e07565b905060008111611a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ff90615551565b60405180910390fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9b919061546c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611af7929190615571565b6020604051808303816000875af1158015611b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3a919061546c565b905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c368261386c565b611c4282856000613a56565b50505050565b6000611c5333611e07565b905080821115611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f906155e6565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ce79190615014565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d3d9190615175565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611da29190614530565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb63383604051611ddb929190615606565b60405180910390a15050565b600080600080600654600754600854600954935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600581526020017f5348494654000000000000000000000000000000000000000000000000000000815250905090565b6000611f3d613147565b611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390614ff4565b60405180910390fd5b611f873384846131cc565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490614f51565b60405180910390fd5b600060016103e88461ffff166009600a6120379190614e3a565b6509184e72a0006120489190614e85565b6120529190614e85565b61205c919061565e565b6120669190615175565b90506006548110156120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a4906156db565b60405180910390fd5b80600681905550600060016103e88461ffff166009600a6120ce9190614e3a565b6509184e72a0006120df9190614e85565b6120e99190614e85565b6120f3919061565e565b6120fd9190615175565b9050600754811015612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b90615747565b60405180910390fd5b806007819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f76006546007546040516121809291906152a5565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461221c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221390614f51565b60405180910390fd5b600360009054906101000a900460ff161561226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639061535f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f4906157b3565b60405180910390fd5b612305613b34565b565b60008060008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955095509550955095509550909192939495565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614f51565b60405180910390fd5b84600560066101000a81548161ffff021916908361ffff16021790555083600560086101000a81548161ffff021916908361ffff160217905550826005600a6101000a81548161ffff021916908361ffff160217905550816005600c6101000a81548161ffff021916908361ffff160217905550806005600e6101000a81548161ffff021916908361ffff1602179055506005600e9054906101000a900461ffff166005600c9054906101000a900461ffff166005600a9054906101000a900461ffff16600560089054906101000a900461ffff16600560069054906101000a900461ffff1661257291906157d3565b61257c91906157d3565b61258691906157d3565b61259091906157d3565b600560106101000a81548161ffff021916908361ffff1602179055507fccb4a96d4f7e36c9ba5f2b62187ca244ce0919ee883fa5ed88c3b5cb51a174b285858585856040516125e395949392919061580b565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267790614f51565b60405180910390fd5b600061268b30611e07565b9050600081116126d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c7906158aa565b60405180910390fd5b6126d981613c63565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e890614f51565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61280d9190614e3a565b6509184e72a00061281e9190614e85565b6128289190614e85565b612832919061565e565b6008819055508063ffffffff168263ffffffff166009600a6128549190614e3a565b6509184e72a0006128659190614e85565b61286f9190614e85565b612879919061565e565b6009819055506008546009541161288f57600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb6008546009546040516128c49291906152a5565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295790614f51565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516129cf9190615929565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5f90614f51565b60405180910390fd5b8015612b2a578360ff168360ff1611612ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aad906159b6565b60405180910390fd5b600560029054906101000a900460ff166002612ad291906159d6565b60ff168385612ae19190615a11565b60ff161115612b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1c90615a94565b60405180910390fd5b612ba4565b600560029054906101000a900460ff1660ff168460ff1611158015612b645750600560029054906101000a900460ff1660ff168360ff1611155b612ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9a90615b00565b60405180910390fd5b5b600560029054906101000a900460ff1660ff168260ff161115612bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf390615b00565b60405180910390fd5b83600560036101000a81548160ff021916908360ff16021790555082600560046101000a81548160ff021916908360ff160217905550816005806101000a81548160ff021916908360ff1602179055507fad5f92c9aca612d1d1b2c7afafd77c1b96e3d9b873cad916be28888672cf919384848484604051612c819493929190615b20565b60405180910390a150505050565b6000600360009054906101000a900460ff168015612cbb57506005601154612cb79190615175565b4310155b15612cd757600360009054906101000a900460ff169050612cdc565b600090505b90565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d7857506000601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15612e045781601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612e03576005600081819054906101000a900461ffff1680929190612de790615b65565b91906101000a81548161ffff021916908361ffff160217905550505b5b505050565b60006005600e9054906101000a900461ffff166005600c9054906101000a900461ffff166005600a9054906101000a900461ffff16600560089054906101000a900461ffff16612e5991906157d3565b612e6391906157d3565b612e6d91906157d3565b90506000600560089054906101000a900461ffff1661ffff161115612f2457600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600560089054906101000a900461ffff1661ffff1685612eed9190614e85565b612ef7919061565e565b9081150290604051600060405180830381858888f19350505050158015612f22573d6000803e3d6000fd5b505b60006005600a9054906101000a900461ffff1661ffff161115612fd957600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600a9054906101000a900461ffff1661ffff1685612fa29190614e85565b612fac919061565e565b9081150290604051600060405180830381858888f19350505050158015612fd7573d6000803e3d6000fd5b505b60006005600c9054906101000a900461ffff1661ffff16111561308e57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600c9054906101000a900461ffff1661ffff16856130579190614e85565b613061919061565e565b9081150290604051600060405180830381858888f1935050505015801561308c573d6000803e3d6000fd5b505b60006005600e9054906101000a900461ffff1661ffff16111561314357600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600e9054906101000a900461ffff1661ffff168561310c9190614e85565b613116919061565e565b9081150290604051600060405180830381858888f19350505050158015613141573d6000803e3d6000fd5b505b5050565b60008060009050600360009054906101000a900460ff161561316c57600190506131c5565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036131c457600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156132375750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b613276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326d90615bdb565b60405180910390fd5b436011541115613329576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036132d8576132d383436001612cdf565b613324565b61332383601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612cdf565b5b6133bd565b6000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133bc576133bb83601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612cdf565b5b5b600360009054906101000a900460ff16801561341957506000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015613463575043601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b156134a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349a90615c47565b60405180910390fd5b601460009054906101000a900460ff161580156135095750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561351757613516613e14565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561357f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156135d7575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613627576135e7848484613fb3565b613626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361d90615cb3565b60405180910390fd5b5b600061363485858561414a565b9050600081846136449190615014565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136919190615014565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561376c5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137289190615175565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137b79190615175565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516138579190614530565b60405180910390a36001925050509392505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613a53577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051613a4a9190614530565b60405180910390a35b50565b600081613a815760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401613ae896959493929190615d0e565b60606040518083038185885af1158015613b06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b2b9190615d84565b50505050505050565b600143613b419190615175565b6011819055506009600a613b559190614e3a565b6127106009600a613b669190614e3a565b6509184e72a000613b779190614e85565b6064613b839190614e85565b613b8d919061565e565b613b979190615175565b6006819055506009600a613bab9190614e3a565b6127106009600a613bbc9190614e3a565b6509184e72a000613bcd9190614e85565b6064613bd99190614e85565b613be3919061565e565b613bed9190615175565b600781905550600b600560036101000a81548160ff021916908360ff1602179055506016600560046101000a81548160ff021916908360ff16021790555060006005806101000a81548160ff021916908360ff1602179055506001600360006101000a81548160ff021916908315150217905550565b613c6c8161386c565b6000600267ffffffffffffffff811115613c8957613c88615dd7565b5b604051908082528060200260200182016040528015613cb75781602001602082028036833780820191505090505b5090503081600081518110613ccf57613cce615146565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613d4057613d3f615146565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dde959493929190615ec4565b600060405180830381600087803b158015613df857600080fd5b505af1158015613e0c573d6000803e3d6000fd5b505050505050565b6001601460006101000a81548160ff0219169083151502179055506000613e3a30611e07565b90506008548110158015613e5a5750600360009054906101000a900460ff165b15613f95576009548110613e6e5760095490505b60006002600560109054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff1684613ea79190614e85565b613eb1919061565e565b613ebb919061565e565b905060008183613ecb9190615014565b90506009600a613edb9190614e3a565b8110613f79576000479050613eef82613c63565b60008147613efd9190615014565b90506000600560069054906101000a900461ffff1661ffff161115613f76576000600560109054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff1683613f539190614e85565b613f5d919061565e565b9050613f688561386c565b613f7485826000613a56565b505b50505b60004790506000811115613f9157613f9081612e09565b5b5050505b506000601460006101000a81548160ff021916908315150217905550565b60008060019050600360009054906101000a900460ff1680156140205750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156140765750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561413f5760065483111561408e576000905061413e565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015614133575060075483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141319190615175565b115b1561413d57600090505b5b5b809150509392505050565b600080600360009054906101000a900460ff1615806141b25750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806142065750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156142145760009050614347565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614297576064600560039054906101000a900460ff1660ff16846142869190614e85565b614290919061565e565b9050614346565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561431a576064600560049054906101000a900460ff1660ff16846143099190614e85565b614313919061565e565b9050614345565b606460058054906101000a900460ff1660ff16846143389190614e85565b614342919061565e565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561438c578082015181840152602081019050614371565b8381111561439b576000848401525b50505050565b6000601f19601f8301169050919050565b60006143bd82614352565b6143c7818561435d565b93506143d781856020860161436e565b6143e0816143a1565b840191505092915050565b6000602082019050818103600083015261440581846143b2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061444282614417565b9050919050565b61445281614437565b811461445d57600080fd5b50565b60008135905061446f81614449565b92915050565b6000819050919050565b61448881614475565b811461449357600080fd5b50565b6000813590506144a58161447f565b92915050565b600080604083850312156144c2576144c161440d565b5b60006144d085828601614460565b92505060206144e185828601614496565b9150509250929050565b60008115159050919050565b614500816144eb565b82525050565b600060208201905061451b60008301846144f7565b92915050565b61452a81614475565b82525050565b60006020820190506145456000830184614521565b92915050565b614554816144eb565b811461455f57600080fd5b50565b6000813590506145718161454b565b92915050565b6000806000606084860312156145905761458f61440d565b5b600061459e86828701614460565b93505060206145af86828701614562565b92505060406145c086828701614562565b9150509250925092565b6000806000606084860312156145e3576145e261440d565b5b60006145f186828701614460565b935050602061460286828701614460565b925050604061461386828701614496565b9150509250925092565b600060ff82169050919050565b6146338161461d565b82525050565b600061ffff82169050919050565b61465081614639565b82525050565b60006101208201905061466c600083018c61462a565b614679602083018b61462a565b614686604083018a61462a565b614693606083018961462a565b6146a06080830188614647565b6146ad60a0830187614647565b6146ba60c0830186614647565b6146c760e0830185614647565b6146d5610100830184614647565b9a9950505050505050505050565b60006020820190506146f8600083018461462a565b92915050565b6000602082840312156147145761471361440d565b5b600061472284828501614460565b91505092915050565b600060608201905061474060008301866144f7565b61474d6020830185614521565b61475a6040830184614647565b949350505050565b600080fd5b600080fd5b600080fd5b60008083601f84011261478757614786614762565b5b8235905067ffffffffffffffff8111156147a4576147a3614767565b5b6020830191508360208202830111156147c0576147bf61476c565b5b9250929050565b60008083601f8401126147dd576147dc614762565b5b8235905067ffffffffffffffff8111156147fa576147f9614767565b5b6020830191508360208202830111156148165761481561476c565b5b9250929050565b600080600080604085870312156148375761483661440d565b5b600085013567ffffffffffffffff81111561485557614854614412565b5b61486187828801614771565b9450945050602085013567ffffffffffffffff81111561488457614883614412565b5b614890878288016147c7565b925092505092959194509250565b600080600080608085870312156148b8576148b761440d565b5b60006148c687828801614460565b94505060206148d787828801614460565b93505060406148e887828801614460565b92505060606148f987828801614460565b91505092959194509250565b60006020828403121561491b5761491a61440d565b5b600061492984828501614496565b91505092915050565b60006080820190506149476000830187614521565b6149546020830186614521565b6149616040830185614521565b61496e6060830184614521565b95945050505050565b600060408201905061498c60008301856144f7565b61499960208301846144f7565b9392505050565b6149a981614639565b81146149b457600080fd5b50565b6000813590506149c6816149a0565b92915050565b600080604083850312156149e3576149e261440d565b5b60006149f1858286016149b7565b9250506020614a02858286016149b7565b9150509250929050565b614a1581614437565b82525050565b600060c082019050614a306000830189614a0c565b614a3d6020830188614a0c565b614a4a6040830187614a0c565b614a576060830186614a0c565b614a646080830185614a0c565b614a7160a0830184614a0c565b979650505050505050565b600080600080600060a08688031215614a9857614a9761440d565b5b6000614aa6888289016149b7565b9550506020614ab7888289016149b7565b9450506040614ac8888289016149b7565b9350506060614ad9888289016149b7565b9250506080614aea888289016149b7565b9150509295509295909350565b60008060408385031215614b0e57614b0d61440d565b5b6000614b1c85828601614460565b9250506020614b2d85828601614460565b9150509250929050565b600063ffffffff82169050919050565b614b5081614b37565b8114614b5b57600080fd5b50565b600081359050614b6d81614b47565b92915050565b60008060008060808587031215614b8d57614b8c61440d565b5b6000614b9b87828801614b5e565b9450506020614bac87828801614b5e565b9350506040614bbd87828801614b5e565b9250506060614bce87828801614b5e565b91505092959194509250565b6000614be582614417565b9050919050565b614bf581614bda565b8114614c0057600080fd5b50565b600081359050614c1281614bec565b92915050565b600060208284031215614c2e57614c2d61440d565b5b6000614c3c84828501614c03565b91505092915050565b614c4e8161461d565b8114614c5957600080fd5b50565b600081359050614c6b81614c45565b92915050565b60008060008060808587031215614c8b57614c8a61440d565b5b6000614c9987828801614c5c565b9450506020614caa87828801614c5c565b9350506040614cbb87828801614c5c565b9250506060614ccc87828801614562565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614d5e57808604811115614d3a57614d39614cd8565b5b6001851615614d495780820291505b8081029050614d5785614d07565b9450614d1e565b94509492505050565b600082614d775760019050614e33565b81614d855760009050614e33565b8160018114614d9b5760028114614da557614dd4565b6001915050614e33565b60ff841115614db757614db6614cd8565b5b8360020a915084821115614dce57614dcd614cd8565b5b50614e33565b5060208310610133831016604e8410600b8410161715614e095782820a905083811115614e0457614e03614cd8565b5b614e33565b614e168484846001614d14565b92509050818404811115614e2d57614e2c614cd8565b5b81810290505b9392505050565b6000614e4582614475565b9150614e508361461d565b9250614e7d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614d67565b905092915050565b6000614e9082614475565b9150614e9b83614475565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ed457614ed3614cd8565b5b828202905092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614f3b602a8361435d565b9150614f4682614edf565b604082019050919050565b60006020820190508181036000830152614f6a81614f2e565b9050919050565b6000606082019050614f866000830186614a0c565b614f9360208301856144f7565b614fa060408301846144f7565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614fde60108361435d565b9150614fe982614fa8565b602082019050919050565b6000602082019050818103600083015261500d81614fd1565b9050919050565b600061501f82614475565b915061502a83614475565b92508282101561503d5761503c614cd8565b5b828203905092915050565b7f57616c6c657420636f756e74206f766572203230302028676173207269736b29600082015250565b600061507e60208361435d565b915061508982615048565b602082019050919050565b600060208201905081810360008301526150ad81615071565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b600061511060258361435d565b915061511b826150b4565b604082019050919050565b6000602082019050818103600083015261513f81615103565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061518082614475565b915061518b83614475565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151c0576151bf614cd8565b5b828201905092915050565b60006151d682614475565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361520857615207614cd8565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b600061526f60268361435d565b915061527a82615213565b604082019050919050565b6000602082019050818103600083015261529e81615262565b9050919050565b60006040820190506152ba6000830185614521565b6152c76020830184614521565b9392505050565b60006080820190506152e36000830187614a0c565b6152f06020830186614a0c565b6152fd6040830185614a0c565b61530a6060830184614a0c565b95945050505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061534960148361435d565b915061535482615313565b602082019050919050565b600060208201905081810360008301526153788161533c565b9050919050565b7f4c5020616c726561647920696e697469616c697a656400000000000000000000600082015250565b60006153b560168361435d565b91506153c08261537f565b602082019050919050565b600060208201905081810360008301526153e4816153a8565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000615421600f8361435d565b915061542c826153eb565b602082019050919050565b6000602082019050818103600083015261545081615414565b9050919050565b60008151905061546681614449565b92915050565b6000602082840312156154825761548161440d565b5b600061549084828501615457565b91505092915050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b60006154cf600e8361435d565b91506154da82615499565b602082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061553b60098361435d565b915061554682615505565b602082019050919050565b6000602082019050818103600083015261556a8161552e565b9050919050565b60006040820190506155866000830185614a0c565b6155936020830184614a0c565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006155d060158361435d565b91506155db8261559a565b602082019050919050565b600060208201905081810360008301526155ff816155c3565b9050919050565b600060408201905061561b6000830185614a0c565b6156286020830184614521565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061566982614475565b915061567483614475565b9250826156845761568361562f565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006156c560108361435d565b91506156d08261568f565b602082019050919050565b600060208201905081810360008301526156f4816156b8565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061573160148361435d565b915061573c826156fb565b602082019050919050565b6000602082019050818103600083015261576081615724565b9050919050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b600061579d60128361435d565b91506157a882615767565b602082019050919050565b600060208201905081810360008301526157cc81615790565b9050919050565b60006157de82614639565b91506157e983614639565b92508261ffff03821115615800576157ff614cd8565b5b828201905092915050565b600060a0820190506158206000830188614647565b61582d6020830187614647565b61583a6040830186614647565b6158476060830185614647565b6158546080830184614647565b9695505050505050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061589460098361435d565b915061589f8261585e565b602082019050919050565b600060208201905081810360008301526158c381615887565b9050919050565b6000819050919050565b60006158ef6158ea6158e584614417565b6158ca565b614417565b9050919050565b6000615901826158d4565b9050919050565b6000615913826158f6565b9050919050565b61592381615908565b82525050565b600060208201905061593e600083018461591a565b92915050565b7f53656c6c20746178206d75737420626520686967686572207468616e2062757960008201527f2074617800000000000000000000000000000000000000000000000000000000602082015250565b60006159a060248361435d565b91506159ab82615944565b604082019050919050565b600060208201905081810360008301526159cf81615993565b9050919050565b60006159e18261461d565b91506159ec8361461d565b92508160ff0483118215151615615a0657615a05614cd8565b5b828202905092915050565b6000615a1c8261461d565b9150615a278361461d565b92508260ff03821115615a3d57615a3c614cd8565b5b828201905092915050565b7f4176672074617820746f6f206869676800000000000000000000000000000000600082015250565b6000615a7e60108361435d565b9150615a8982615a48565b602082019050919050565b60006020820190508181036000830152615aad81615a71565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000615aea600c8361435d565b9150615af582615ab4565b602082019050919050565b60006020820190508181036000830152615b1981615add565b9050919050565b6000608082019050615b35600083018761462a565b615b42602083018661462a565b615b4f604083018561462a565b615b5c60608301846144f7565b95945050505050565b6000615b7082614639565b915061ffff8203615b8457615b83614cd8565b5b600182019050919050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000615bc560188361435d565b9150615bd082615b8f565b602082019050919050565b60006020820190508181036000830152615bf481615bb8565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615c31600b8361435d565b9150615c3c82615bfb565b602082019050919050565b60006020820190508181036000830152615c6081615c24565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000615c9d60118361435d565b9150615ca882615c67565b602082019050919050565b60006020820190508181036000830152615ccc81615c90565b9050919050565b6000819050919050565b6000615cf8615cf3615cee84615cd3565b6158ca565b614475565b9050919050565b615d0881615cdd565b82525050565b600060c082019050615d236000830189614a0c565b615d306020830188614521565b615d3d6040830187615cff565b615d4a6060830186615cff565b615d576080830185614a0c565b615d6460a0830184614521565b979650505050505050565b600081519050615d7e8161447f565b92915050565b600080600060608486031215615d9d57615d9c61440d565b5b6000615dab86828701615d6f565b9350506020615dbc86828701615d6f565b9250506040615dcd86828701615d6f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615e3b81614437565b82525050565b6000615e4d8383615e32565b60208301905092915050565b6000602082019050919050565b6000615e7182615e06565b615e7b8185615e11565b9350615e8683615e22565b8060005b83811015615eb7578151615e9e8882615e41565b9750615ea983615e59565b925050600181019050615e8a565b5085935050505092915050565b600060a082019050615ed96000830188614521565b615ee66020830187615cff565b8181036040830152615ef88186615e66565b9050615f076060830185614a0c565b615f146080830184614521565b969550505050505056fea2646970667358221220e4c11668a17d6d07d23840bc5bb1a177f5c7efaa9ff2884ee5be142cd21c3e0f64736f6c634300080d0033

Deployed Bytecode Sourcemap

1905:18556:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6324:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6653:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6063:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13062:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19111:93;;;;;;;;;;;;;:::i;:::-;;7182:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13281:439;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;6154:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12591:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;19546:912;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15265:618;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7550:981;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19209:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15888:216;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;6407:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12909:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6237:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6977:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16109:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9166:181;;;;;;;;;;;;;:::i;:::-;;14998:262;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;14388:604;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18914:192;;;;;;;;;;;;;:::i;:::-;;6515:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16619:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1094:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13725:658;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9726:164;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6324:80;6372:13;6396:5;;;;;;;;;;;;;;;;;6389:12;;6324:80;:::o;6653:319::-;6728:4;6758:12;6744:11;;:26;:53;;;;;6775:10;:22;6786:10;6775:22;;;;;;;;;;;;;;;;;;;;;;;;;6774:23;6744:53;6739:118;;;6806:45;6820:10;6832:12;6846:4;6806:13;:45::i;:::-;6739:118;6898:6;6863:11;:23;6875:10;6863:23;;;;;;;;;;;;;;;:32;6887:7;6863:32;;;;;;;;;;;;;;;:41;;;;6935:7;6914:37;;6923:10;6914:37;;;6944:6;6914:37;;;;;;:::i;:::-;;;;;;;;6963:4;6956:11;;6653:319;;;;:::o;6063:88::-;6118:7;2039:1;2097:2;:13;;;;:::i;:::-;2076:18;:34;;;;:::i;:::-;6129:19;;6063:88;:::o;13062:214::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13174:6:::1;13153:10;:18;13164:6;13153:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13208:8;13185:12;:20;13198:6;13185:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13226:45;13246:6;13254;13262:8;13226:45;;;;;;;;:::i;:::-;;;;;;;;13062:214:::0;;;:::o;19111:93::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19158:40:::1;19176:21;19158:17;:40::i;:::-;19111:93::o:0;7182:363::-;7282:4;7301:19;:17;:19::i;:::-;7293:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7385:17;7350:11;:19;7362:6;7350:19;;;;;;;;;;;;;;;:31;7370:10;7350:31;;;;;;;;;;;;;;;;:52;7346:143;;7477:6;7443:11;:19;7455:6;7443:19;;;;;;;;;;;;;;;:31;7463:10;7443:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;7409:11;:19;7421:6;7409:19;;;;;;;;;;;;;;;:31;7429:10;7409:31;;;;;;;;;;;;;;;:74;;;;7346:143;7500:40;7514:6;7522:9;7533:6;7500:13;:40::i;:::-;7493:47;;7182:363;;;;;:::o;13281:439::-;13329:21;13352:16;13370:17;13389:21;13412:19;13433:22;13457:24;13483:20;13505;13541:19;;;;;;;;;;;13562:14;;;;;;;;;;;13578:15;;;;;;;;;;;13595:19;;;;;;;;;;13616:16;;;;;;;;;;;13634:19;;;;;;;;;;;13655:21;;;;;;;;;;;13678:17;;;;;;;;;;;13697;;;;;;;;;;;13533:182;;;;;;;;;;;;;;;;;;13281:439;;;;;;;;;:::o;6154:80::-;6206:5;2039:1;6215:16;;6154:80;:::o;12591:313::-;12657:18;12677:22;12701:30;12738:19;12794:1;12767:15;:23;12783:6;12767:23;;;;;;;;;;;;;;;;:28;12762:62;;12817:4;12800:21;;12762:62;12837:14;12853:15;:23;12869:6;12853:23;;;;;;;;;;;;;;;;12878:19;;;;;;;;;;;12828:70;;;;;;;12591:313;;;;;:::o;19546:912::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19684:3:::1;19664:9;;:16;;:23;;19656:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19762:12;;:19;;19742:9;;:16;;:39;19734:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;19835:20;19874:6:::0;19870:116:::1;19888:9;;:16;;19884:1;:20;19870:116;;;2039:1;19960:2;:13;;;;:::i;:::-;19942:12;;19955:1;19942:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;19925:49;;;;;:::i;:::-;;;19906:3;;;;;:::i;:::-;;;;19870:116;;;;20029:12;20004:9;:21;20014:10;20004:21;;;;;;;;;;;;;;;;:37;;19996:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;20101:6;20097:288;20115:9;;:16;;20111:1;:20;20097:288;;;2039:1;20196:2;:13;;;;:::i;:::-;20178:12;;20191:1;20178:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;20152:9;:21;20162:10;20152:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;2039:1;20271:2;:13;;;;:::i;:::-;20253:12;;20266:1;20253:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;20225:9;:23;20235:9;;20245:1;20235:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20225:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;20317:9;;20327:1;20317:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20296:70;;20305:10;20296:70;;;2039:1;20350:2;:13;;;;:::i;:::-;20332:12;;20345:1;20332:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;20296:70;;;;;;:::i;:::-;;;;;;;;20133:3;;;;;:::i;:::-;;;;20097:288;;;;20402:48;20419:9;;:16;;20437:12;20402:48;;;;;;;:::i;:::-;;;;;;;;19645:813;19546:912:::0;;;;:::o;15265:618::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15446:18:::1;15422:13;;:43;;;;;;;;;;;;;;;;;;15496:20;15470:15;;:47;;;;;;;;;;;;;;;;;;15544:16;15522:11;;:39;;;;;;;;;;;;;;;;;;15588:16;15566:11;;:39;;;;;;;;;;;;;;;;;;15643:4;15610:10;:30;15621:18;15610:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15687:4;15652:12;:32;15665:18;15652:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15727:4;15696:10;:28;15707:16;15696:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15769:4;15736:12;:30;15749:16;15736:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15783:95;15801:18;15821:20;15843:16;15861;15783:95;;;;;;;;;:::i;:::-;;;;;;;;15265:618:::0;;;;:::o;7550:981::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7621:12:::1;;;;;;;;;;;7620:13;7612:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7697:1;7671:28;;:14;;;;;;;;;;;:28;;;7663:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7754:1;7739:12;:16;7731:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7810:4;7782:10;:25;7801:4;7782:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7839:4;7819:10;:17;7830:5:::0;::::1;;;;;;;;;;7819:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;7876:4;7848:10;:25;7859:13;;;;;;;;;;;7848:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7908:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7893:12;;:38;;;;;;;;;;;;;;;;;;7976:27;8006:21;7976:51;;8063:12;8040:19;:35;;8032:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8099:29;8131:24;8149:4;8131:9;:24::i;:::-;8099:56;;8192:1;8168:21;:25;8160:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;8212:18;8251:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8233:56;;;8298:4;8305:12;;;;;;;;;;;8233:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8212:106;;8340:10;8323:14;;:27;;;;;;;;;;;;;;;;;;8382:4;8357:10;:22;8368:10;8357:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8416:4;8391:10;:22;8402:10;8391:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8427:37;8442:21;8427:14;:37::i;:::-;8469:57;8483:21;8506:12;8520:5;8469:13;:57::i;:::-;7607:924;;;7550:981:::0;:::o;19209:332::-;19259:24;19286:21;19296:10;19286:9;:21::i;:::-;19259:48;;19330:16;19320:6;:26;;19312:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19402:6;19377:9;:21;19387:10;19377:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;19438:6;19413:9;:21;19431:1;19413:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;19483:1;19454:40;;19463:10;19454:40;;;19487:6;19454:40;;;;;;:::i;:::-;;;;;;;;19504:32;19517:10;19529:6;19504:32;;;;;;;:::i;:::-;;;;;;;;19254:287;19209:332;:::o;15888:216::-;15931:19;15952:23;15977:18;15997;16030:15;;16047:19;;16068:14;;16084;;16022:77;;;;;;;;15888:216;;;;:::o;6407:105::-;6473:7;6491:9;:18;6501:7;6491:18;;;;;;;;;;;;;;;;6484:25;;6407:105;;;:::o;12909:148::-;12970:11;12983:13;13011:10;:18;13022:6;13011:18;;;;;;;;;;;;;;;;;;;;;;;;;13031:12;:20;13044:6;13031:20;;;;;;;;;;;;;;;;;;;;;;;;;13003:49;;;;12909:148;;;:::o;6237:84::-;6287:13;6311:7;;;;;;;;;;;;;;;;;6304:14;;6237:84;:::o;6977:200::-;7057:4;7076:19;:17;:19::i;:::-;7068:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7128:44;7142:10;7154:9;7165:6;7128:13;:44::i;:::-;7121:51;;6977:200;;;;:::o;16109:505::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16209:16:::1;16268:1;16261:4;16243:15;16228:30;;2039:1;2097:2;:13;;;;:::i;:::-;2076:18;:34;;;;:::i;:::-;16228:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;16209:60;;16294:15;;16282:8;:27;;16274:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16353:8;16335:15;:26;;;;16366:20;16433:1;16426:4;16404:19;16389:34;;2039:1;2097:2;:13;;;;:::i;:::-;2076:18;:34;;;;:::i;:::-;16389;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;16366:68;;16463:19;;16447:12;:35;;16439:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16534:12;16512:19;:34;;;;16556:53;16572:15;;16589:19;;16556:53;;;;;;;:::i;:::-;;;;;;;;16204:410;;16109:505:::0;;:::o;9166:181::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9222:12:::1;;;;;;;;;;;9221:13;9213:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9298:1;9272:28;;:14;;;;;;;;;;;:28;;::::0;9264:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9328:14;:12;:14::i;:::-;9166:181::o:0;14998:262::-;15042:21;15065;15088:17;15107:19;15128:15;15145;15175:5;;;;;;;;;;15182:14;;;;;;;;;;;15198:13;;;;;;;;;;;15213:15;;;;;;;;;;;15230:11;;;;;;;;;;;15243;;;;;;;;;;;15167:88;;;;;;;;;;;;14998:262;;;;;;:::o;14388:604::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14574:12:::1;14555:16;;:31;;;;;;;;;;;;;;;;;;14613:15;14591:19;;:37;;;;;;;;;;;;;;;;;;14657:17;14633:21;;:41;;;;;;;;;;;;;;;;;;14699:13;14679:17;;:33;;;;;;;;;;;;;;;;;;14737:13;14717:17;;:33;;;;;;;;;;;;;;;;;;14858:17;;;;;;;;;;;14838;;;;;;;;;;;14814:21;;;;;;;;;;;14792:19;;;;;;;;;;;14773:16;;;;;;;;;;;:38;;;;:::i;:::-;:62;;;;:::i;:::-;:82;;;;:::i;:::-;:102;;;;:::i;:::-;14755:15;;:120;;;;;;;;;;;;;;;;;;14885:102;14908:12;14922:15;14939:17;14958:13;14973;14885:102;;;;;;;;;;:::i;:::-;;;;;;;;14388:604:::0;;;;;:::o;18914:192::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18963:23:::1;18989:24;19007:4;18989:9;:24::i;:::-;18963:50;;19044:1;19026:15;:19;19018:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;19064:37;19085:15;19064:20;:37::i;:::-;18958:148;18914:192::o:0;6515:133::-;6599:7;6617:11;:19;6629:6;6617:19;;;;;;;;;;;;;;;:28;6637:7;6617:28;;;;;;;;;;;;;;;;6610:35;;6515:133;;;;:::o;16619:347::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16784:10:::1;16758:36;;16773:8;16758:23;;2039:1;2097:2;:13;;;;:::i;:::-;2076:18;:34;;;;:::i;:::-;16758:23;;;;:::i;:::-;:36;;;;:::i;:::-;16741:14;:53;;;;16842:10;16816:36;;16831:8;16816:23;;2039:1;2097:2;:13;;;;:::i;:::-;2076:18;:34;;;;:::i;:::-;16816:23;;;;:::i;:::-;:36;;;;:::i;:::-;16799:14;:53;;;;16882:14;;16865;;:31;16857:40;;;::::0;::::1;;16907:54;16930:14;;16946;;16907:54;;;;;;;:::i;:::-;;;;;;;;16619:347:::0;;;;:::o;1094:130::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:8:::1;1168:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1191:30;1212:8;1191:30;;;;;;:::i;:::-;;;;;;;;1094:130:::0;:::o;13725:658::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13848:16:::1;13844:299;;;13894:9;13881:22;;:10;:22;;;13872:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13985:19;;;;;;;;;;;13983:1;:21;;;;:::i;:::-;13959:45;;13969:10;13959:9;:20;;;;:::i;:::-;:45;;;;13950:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13844:299;;;14064:19;;;;;;;;;;;14051:32;;:9;:32;;;;:69;;;;;14101:19;;;;;;;;;;;14087:33;;:10;:33;;;;14051:69;14043:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;13844:299;14167:19;;;;;;;;;;;14155:31;;:8;:31;;;;14147:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14225:9;14208:14;;:26;;;;;;;;;;;;;;;;;;14257:10;14239:15;;:28;;;;;;;;;;;;;;;;;;14294:8;14272:19;::::0;:30:::1;;;;;;;;;;;;;;;;;;14312:66;14328:9;14339:10;14351:8;14361:16;14312:66;;;;;;;;;:::i;:::-;;;;;;;;13725:658:::0;;;;:::o;9726:164::-;9772:4;9787:12;;;;;;;;;;;:47;;;;;9833:1;9819:11;;:15;;;;:::i;:::-;9803:12;:31;;9787:47;9783:103;;;9845:12;;;;;;;;;;;9838:19;;;;9783:103;9878:5;9871:12;;9726:164;;:::o;11157:256::-;11255:10;:18;11266:6;11255:18;;;;;;;;;;;;;;;;;;;;;;;;;11254:19;:51;;;;;11304:1;11277:15;:23;11293:6;11277:23;;;;;;;;;;;;;;;;:28;11254:51;11249:160;;;11341:13;11315:15;:23;11331:6;11315:23;;;;;;;;;;;;;;;:39;;;;11366:9;11361:43;;;11379:19;;:22;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;11361:43;11249:160;11157:256;;;:::o;18290:619::-;18347:24;18440:17;;;;;;;;;;;18420;;;;;;;;;;;18396:21;;;;;;;;;;;18374:19;;;;;;;;;;;:43;;;;:::i;:::-;:63;;;;:::i;:::-;:83;;;;:::i;:::-;18347:110;;18490:1;18468:19;;;;;;;;;;;:23;;;18463:109;;;18496:13;;;;;;;;;;;:22;;:73;18551:17;18519:49;;18529:19;;;;;;;;;;;18519:29;;:7;:29;;;;:::i;:::-;:49;;;;:::i;:::-;18496:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18463:109;18605:1;18581:21;;;;;;;;;;;:25;;;18576:115;;;18611:15;;;;;;;;;;;:24;;:77;18670:17;18636:51;;18646:21;;;;;;;;;;;18636:31;;:7;:31;;;;:::i;:::-;:51;;;;:::i;:::-;18611:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18576:115;18720:1;18700:17;;;;;;;;;;;:21;;;18695:103;;;18726:11;;;;;;;;;;;:20;;:69;18777:17;18747:47;;18757:17;;;;;;;;;;;18747:27;;:7;:27;;;;:::i;:::-;:47;;;;:::i;:::-;18726:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18695:103;18827:1;18807:17;;;;;;;;;;;:21;;;18802:103;;;18833:11;;;;;;;;;;;:20;;:69;18884:17;18854:47;;18864:17;;;;;;;;;;;18854:27;;:7;:27;;;;:::i;:::-;:47;;;;:::i;:::-;18833:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18802:103;18342:567;18290:619;:::o;11891:220::-;11942:4;11952:16;11971:5;11952:24;;11986:12;;;;;;;;;;;11981:102;;;12017:4;12003:18;;11981:102;;;12052:5;;;;;;;;;;12039:18;;:9;:18;;;12034:49;;12076:4;12062:18;;12034:49;11981:102;12095:11;12088:18;;;11891:220;:::o;9895:1257::-;9987:4;10022:1;10006:18;;:6;:18;;;;:43;;;;;10047:1;10028:21;;:9;:21;;;;10006:43;9998:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;10102:12;10088:11;;:26;10083:315;;;10155:1;10128:15;:23;10144:6;10128:23;;;;;;;;;;;;;;;;:28;10123:156;;10161:44;10175:9;10186:12;10200:4;10161:13;:44::i;:::-;10123:156;;;10220:56;10234:9;10245:15;:23;10261:6;10245:23;;;;;;;;;;;;;;;;10270:5;10220:13;:56::i;:::-;10123:156;10083:315;;;10328:1;10301:15;:23;10317:6;10301:23;;;;;;;;;;;;;;;;:28;10296:97;;10334:56;10348:9;10359:15;:23;10375:6;10359:23;;;;;;;;;;;;;;;;10384:5;10334:13;:56::i;:::-;10296:97;10083:315;10409:12;;;;;;;;;;;:44;;;;;10452:1;10425:15;:23;10441:6;10425:23;;;;;;;;;;;;;;;;:28;;10409:44;:86;;;;;10483:12;10457:15;:23;10473:6;10457:23;;;;;;;;;;;;;;;;:38;10409:86;10404:120;;;10500:21;;;;;;;;;;:::i;:::-;;;;;;;;10404:120;10536:10;;;;;;;;;;;10535:11;:36;;;;;10550:10;:21;10561:9;10550:21;;;;;;;;;;;;;;;;;;;;;;;;;10535:36;10530:69;;;10576:20;:18;:20::i;:::-;10530:69;10628:4;10610:23;;:6;:23;;;;:53;;;;;10658:4;10637:26;;:9;:26;;;;10610:53;:72;;;;;10677:5;;;;;;;;;;10667:15;;:6;:15;;;;10610:72;10605:154;;;10695:39;10708:6;10716:9;10727:6;10695:12;:39::i;:::-;10687:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10605:154;10763:18;10784:40;10798:6;10806:9;10817:6;10784:13;:40::i;:::-;10763:61;;10829:23;10864:10;10855:6;:19;;;;:::i;:::-;10829:45;;10919:6;10899:9;:17;10909:6;10899:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;10879:9;:17;10889:6;10879:17;;;;;;;;;;;;;;;:46;;;;10948:1;10935:10;:14;10930:91;;;11008:10;10981:9;:24;10999:4;10981:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;10954:9;:24;10972:4;10954:24;;;;;;;;;;;;;;;:64;;;;10930:91;11071:15;11048:9;:20;11058:9;11048:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;11025:9;:20;11035:9;11025:20;;;;;;;;;;;;;;;:61;;;;11113:9;11096:35;;11105:6;11096:35;;;11124:6;11096:35;;;;;;:::i;:::-;;;;;;;;11143:4;11136:11;;;;9895:1257;;;;;:::o;8536:299::-;8655:12;8601:11;:26;8621:4;8601:26;;;;;;;;;;;;;;;:51;3360:42;8601:51;;;;;;;;;;;;;;;;:66;8596:235;;;8730:17;8676:11;:26;8696:4;8676:26;;;;;;;;;;;;;;;:51;3360:42;8676:51;;;;;;;;;;;;;;;:71;;;;3360:42;8758:67;;8775:4;8758:67;;;8807:17;8758:67;;;;;;:::i;:::-;;;;;;;;8596:235;8536:299;:::o;8840:321::-;8937:24;8985:8;8979:46;;9017:5;;;;;;;;;;8998:24;;8979:46;9029:16;;;;;;;;;;;:32;;;9069:13;9094:4;9101:12;9115:1;9118;9121:16;9139:15;9029:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8932:229;8840:321;;;:::o;9352:369::-;9419:1;9404:12;:16;;;;:::i;:::-;9390:11;:30;;;;2039:1;9476:2;:13;;;;:::i;:::-;9468:5;2039:1;2097:2;:13;;;;:::i;:::-;2076:18;:34;;;;:::i;:::-;9447:3;:18;;;;:::i;:::-;:26;;;;:::i;:::-;:42;;;;:::i;:::-;9425:15;:64;;;;2039:1;9546:2;:13;;;;:::i;:::-;9538:5;2039:1;2097:2;:13;;;;:::i;:::-;2076:18;:34;;;;:::i;:::-;9517:3;:18;;;;:::i;:::-;:26;;;;:::i;:::-;:42;;;;:::i;:::-;9495:19;:64;;;;9581:2;9564:14;;:19;;;;;;;;;;;;;;;;;;9606:2;9588:15;;:20;;;;;;;;;;;;;;;;;;9690:1;9668:19;;:23;;;;;;;;;;;;;;;;;;9712:4;9697:12;;:19;;;;;;;;;;;;;;;;;;9352:369::o;17964:321::-;18029:28;18044:12;18029:14;:28::i;:::-;18062:21;18100:1;18086:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18062:40;;18125:4;18107;18112:1;18107:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18145:12;;;;;;;;;;;18135:4;18140:1;18135:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;;;18162:16;;;;;;;;;;;:67;;;18230:12;18243:1;18245:4;18258;18264:15;18162:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18024:261;17964:321;:::o;16971:988::-;3576:4;3563:10;;:17;;;;;;;;;;;;;;;;;;17026:27:::1;17056:24;17074:4;17056:9;:24::i;:::-;17026:54;;17115:14;;17092:19;:37;;:53;;;;;17133:12;;;;;;;;;;;17092:53;17087:868;;;17182:14;;17159:19;:37;17154:86;;17223:14;;17201:36;;17154:86;17245:20;17327:1;17309:15;;;;;;;;;;;17268:56;;17290:16;;;;;;;;;;;17268:38;;:19;:38;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;17245:83;;17334:21;17380:12;17358:19;:34;;;;:::i;:::-;17334:58;;2039:1;17419:2;:13;;;;:::i;:::-;17402;:30;17398:415;;17441:19;17463:21;17441:43;;17491:35;17512:13;17491:20;:35::i;:::-;17533:19;17579:11;17555:21;:35;;;;:::i;:::-;17533:57;;17621:1;17602:16;;;;;;;;;;;:20;;;17597:210;;;17633:21;17690:15;;;;;;;;;;;17657:48;;17671:16;;;;;;;;;;;17657:30;;:11;:30;;;;:::i;:::-;:48;;;;:::i;:::-;17633:72;;17714:28;17729:12;17714:14;:28::i;:::-;17750:49;17764:12;17778:13;17793:5;17750:13;:49::i;:::-;17625:182;17597:210;17434:379;;17398:415;17818:27;17848:21;17818:51;;17904:1;17882:19;:23;17878:72;;;17909:38;17927:19;17909:17;:38::i;:::-;17878:72;17148:807;;;17087:868;17021:938;3598:5:::0;3585:10;;:18;;;;;;;;;;;;;;;;;;16971:988::o;11419:467::-;11523:4;11534:21;11558:4;11534:28;;11572:12;;;;;;;;;;;:40;;;;;11589:12;:23;11602:9;11589:23;;;;;;;;;;;;;;;;;;;;;;;;;11588:24;11572:40;:65;;;;;11617:12;:20;11630:6;11617:20;;;;;;;;;;;;;;;;;;;;;;;;;11616:21;11572:65;11567:287;;;11668:15;;11651:14;:32;11646:203;;;11707:5;11688:24;;11646:203;;;11731:10;:21;11742:9;11731:21;;;;;;;;;;;;;;;;;;;;;;;;;11730:22;:87;;;;;11797:19;;11780:14;11757:9;:20;11767:9;11757:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:59;11730:87;11725:124;;;11841:5;11822:24;;11725:124;11646:203;11567:287;11865:16;11858:23;;;11419:467;;;;;:::o;12116:470::-;12213:7;12227:17;12255:12;;;;;;;;;;;12254:13;:35;;;;12271:10;:18;12282:6;12271:18;;;;;;;;;;;;;;;;;;;;;;;;;12254:35;:60;;;;12293:10;:21;12304:9;12293:21;;;;;;;;;;;;;;;;;;;;;;;;;12254:60;12249:312;;;12331:1;12319:13;;12249:312;;;12349:10;:18;12360:6;12349:18;;;;;;;;;;;;;;;;;;;;;;;;;12344:217;;;12410:3;12393:14;;;;;;;;;;;12384:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;12372:41;;12344:217;;;12430:10;:21;12441:9;12430:21;;;;;;;;;;;;;;;;;;;;;;;;;12425:136;;;12495:3;12477:15;;;;;;;;;;;12468:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;12456:42;;12425:136;;;12555:3;12533:19;;;;;;;;;;12524:28;;:6;:28;;;;:::i;:::-;:34;;;;:::i;:::-;12512:46;;12425:136;12344:217;12249:312;12572:9;12565:16;;;12116:470;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:607::-;4178:6;4186;4194;4243:2;4231:9;4222:7;4218:23;4214:32;4211:119;;;4249:79;;:::i;:::-;4211:119;4369:1;4394:53;4439:7;4430:6;4419:9;4415:22;4394:53;:::i;:::-;4384:63;;4340:117;4496:2;4522:50;4564:7;4555:6;4544:9;4540:22;4522:50;:::i;:::-;4512:60;;4467:115;4621:2;4647:50;4689:7;4680:6;4669:9;4665:22;4647:50;:::i;:::-;4637:60;;4592:115;4107:607;;;;;:::o;4720:619::-;4797:6;4805;4813;4862:2;4850:9;4841:7;4837:23;4833:32;4830:119;;;4868:79;;:::i;:::-;4830:119;4988:1;5013:53;5058:7;5049:6;5038:9;5034:22;5013:53;:::i;:::-;5003:63;;4959:117;5115:2;5141:53;5186:7;5177:6;5166:9;5162:22;5141:53;:::i;:::-;5131:63;;5086:118;5243:2;5269:53;5314:7;5305:6;5294:9;5290:22;5269:53;:::i;:::-;5259:63;;5214:118;4720:619;;;;;:::o;5345:86::-;5380:7;5420:4;5413:5;5409:16;5398:27;;5345:86;;;:::o;5437:112::-;5520:22;5536:5;5520:22;:::i;:::-;5515:3;5508:35;5437:112;;:::o;5555:89::-;5591:7;5631:6;5624:5;5620:18;5609:29;;5555:89;;;:::o;5650:115::-;5735:23;5752:5;5735:23;:::i;:::-;5730:3;5723:36;5650:115;;:::o;5771:1056::-;6062:4;6100:3;6089:9;6085:19;6077:27;;6114:67;6178:1;6167:9;6163:17;6154:6;6114:67;:::i;:::-;6191:68;6255:2;6244:9;6240:18;6231:6;6191:68;:::i;:::-;6269;6333:2;6322:9;6318:18;6309:6;6269:68;:::i;:::-;6347;6411:2;6400:9;6396:18;6387:6;6347:68;:::i;:::-;6425:71;6491:3;6480:9;6476:19;6467:6;6425:71;:::i;:::-;6506;6572:3;6561:9;6557:19;6548:6;6506:71;:::i;:::-;6587;6653:3;6642:9;6638:19;6629:6;6587:71;:::i;:::-;6668;6734:3;6723:9;6719:19;6710:6;6668:71;:::i;:::-;6749;6815:3;6804:9;6800:19;6791:6;6749:71;:::i;:::-;5771:1056;;;;;;;;;;;;:::o;6833:214::-;6922:4;6960:2;6949:9;6945:18;6937:26;;6973:67;7037:1;7026:9;7022:17;7013:6;6973:67;:::i;:::-;6833:214;;;;:::o;7053:329::-;7112:6;7161:2;7149:9;7140:7;7136:23;7132:32;7129:119;;;7167:79;;:::i;:::-;7129:119;7287:1;7312:53;7357:7;7348:6;7337:9;7333:22;7312:53;:::i;:::-;7302:63;;7258:117;7053:329;;;;:::o;7388:426::-;7529:4;7567:2;7556:9;7552:18;7544:26;;7580:65;7642:1;7631:9;7627:17;7618:6;7580:65;:::i;:::-;7655:72;7723:2;7712:9;7708:18;7699:6;7655:72;:::i;:::-;7737:70;7803:2;7792:9;7788:18;7779:6;7737:70;:::i;:::-;7388:426;;;;;;:::o;7820:117::-;7929:1;7926;7919:12;7943:117;8052:1;8049;8042:12;8066:117;8175:1;8172;8165:12;8206:568;8279:8;8289:6;8339:3;8332:4;8324:6;8320:17;8316:27;8306:122;;8347:79;;:::i;:::-;8306:122;8460:6;8447:20;8437:30;;8490:18;8482:6;8479:30;8476:117;;;8512:79;;:::i;:::-;8476:117;8626:4;8618:6;8614:17;8602:29;;8680:3;8672:4;8664:6;8660:17;8650:8;8646:32;8643:41;8640:128;;;8687:79;;:::i;:::-;8640:128;8206:568;;;;;:::o;8797:::-;8870:8;8880:6;8930:3;8923:4;8915:6;8911:17;8907:27;8897:122;;8938:79;;:::i;:::-;8897:122;9051:6;9038:20;9028:30;;9081:18;9073:6;9070:30;9067:117;;;9103:79;;:::i;:::-;9067:117;9217:4;9209:6;9205:17;9193:29;;9271:3;9263:4;9255:6;9251:17;9241:8;9237:32;9234:41;9231:128;;;9278:79;;:::i;:::-;9231:128;8797:568;;;;;:::o;9371:934::-;9493:6;9501;9509;9517;9566:2;9554:9;9545:7;9541:23;9537:32;9534:119;;;9572:79;;:::i;:::-;9534:119;9720:1;9709:9;9705:17;9692:31;9750:18;9742:6;9739:30;9736:117;;;9772:79;;:::i;:::-;9736:117;9885:80;9957:7;9948:6;9937:9;9933:22;9885:80;:::i;:::-;9867:98;;;;9663:312;10042:2;10031:9;10027:18;10014:32;10073:18;10065:6;10062:30;10059:117;;;10095:79;;:::i;:::-;10059:117;10208:80;10280:7;10271:6;10260:9;10256:22;10208:80;:::i;:::-;10190:98;;;;9985:313;9371:934;;;;;;;:::o;10311:765::-;10397:6;10405;10413;10421;10470:3;10458:9;10449:7;10445:23;10441:33;10438:120;;;10477:79;;:::i;:::-;10438:120;10597:1;10622:53;10667:7;10658:6;10647:9;10643:22;10622:53;:::i;:::-;10612:63;;10568:117;10724:2;10750:53;10795:7;10786:6;10775:9;10771:22;10750:53;:::i;:::-;10740:63;;10695:118;10852:2;10878:53;10923:7;10914:6;10903:9;10899:22;10878:53;:::i;:::-;10868:63;;10823:118;10980:2;11006:53;11051:7;11042:6;11031:9;11027:22;11006:53;:::i;:::-;10996:63;;10951:118;10311:765;;;;;;;:::o;11082:329::-;11141:6;11190:2;11178:9;11169:7;11165:23;11161:32;11158:119;;;11196:79;;:::i;:::-;11158:119;11316:1;11341:53;11386:7;11377:6;11366:9;11362:22;11341:53;:::i;:::-;11331:63;;11287:117;11082:329;;;;:::o;11417:553::-;11594:4;11632:3;11621:9;11617:19;11609:27;;11646:71;11714:1;11703:9;11699:17;11690:6;11646:71;:::i;:::-;11727:72;11795:2;11784:9;11780:18;11771:6;11727:72;:::i;:::-;11809;11877:2;11866:9;11862:18;11853:6;11809:72;:::i;:::-;11891;11959:2;11948:9;11944:18;11935:6;11891:72;:::i;:::-;11417:553;;;;;;;:::o;11976:308::-;12085:4;12123:2;12112:9;12108:18;12100:26;;12136:65;12198:1;12187:9;12183:17;12174:6;12136:65;:::i;:::-;12211:66;12273:2;12262:9;12258:18;12249:6;12211:66;:::i;:::-;11976:308;;;;;:::o;12290:120::-;12362:23;12379:5;12362:23;:::i;:::-;12355:5;12352:34;12342:62;;12400:1;12397;12390:12;12342:62;12290:120;:::o;12416:137::-;12461:5;12499:6;12486:20;12477:29;;12515:32;12541:5;12515:32;:::i;:::-;12416:137;;;;:::o;12559:470::-;12625:6;12633;12682:2;12670:9;12661:7;12657:23;12653:32;12650:119;;;12688:79;;:::i;:::-;12650:119;12808:1;12833:52;12877:7;12868:6;12857:9;12853:22;12833:52;:::i;:::-;12823:62;;12779:116;12934:2;12960:52;13004:7;12995:6;12984:9;12980:22;12960:52;:::i;:::-;12950:62;;12905:117;12559:470;;;;;:::o;13035:118::-;13122:24;13140:5;13122:24;:::i;:::-;13117:3;13110:37;13035:118;;:::o;13159:775::-;13392:4;13430:3;13419:9;13415:19;13407:27;;13444:71;13512:1;13501:9;13497:17;13488:6;13444:71;:::i;:::-;13525:72;13593:2;13582:9;13578:18;13569:6;13525:72;:::i;:::-;13607;13675:2;13664:9;13660:18;13651:6;13607:72;:::i;:::-;13689;13757:2;13746:9;13742:18;13733:6;13689:72;:::i;:::-;13771:73;13839:3;13828:9;13824:19;13815:6;13771:73;:::i;:::-;13854;13922:3;13911:9;13907:19;13898:6;13854:73;:::i;:::-;13159:775;;;;;;;;;:::o;13940:901::-;14030:6;14038;14046;14054;14062;14111:3;14099:9;14090:7;14086:23;14082:33;14079:120;;;14118:79;;:::i;:::-;14079:120;14238:1;14263:52;14307:7;14298:6;14287:9;14283:22;14263:52;:::i;:::-;14253:62;;14209:116;14364:2;14390:52;14434:7;14425:6;14414:9;14410:22;14390:52;:::i;:::-;14380:62;;14335:117;14491:2;14517:52;14561:7;14552:6;14541:9;14537:22;14517:52;:::i;:::-;14507:62;;14462:117;14618:2;14644:52;14688:7;14679:6;14668:9;14664:22;14644:52;:::i;:::-;14634:62;;14589:117;14745:3;14772:52;14816:7;14807:6;14796:9;14792:22;14772:52;:::i;:::-;14762:62;;14716:118;13940:901;;;;;;;;:::o;14847:474::-;14915:6;14923;14972:2;14960:9;14951:7;14947:23;14943:32;14940:119;;;14978:79;;:::i;:::-;14940:119;15098:1;15123:53;15168:7;15159:6;15148:9;15144:22;15123:53;:::i;:::-;15113:63;;15069:117;15225:2;15251:53;15296:7;15287:6;15276:9;15272:22;15251:53;:::i;:::-;15241:63;;15196:118;14847:474;;;;;:::o;15327:93::-;15363:7;15403:10;15396:5;15392:22;15381:33;;15327:93;;;:::o;15426:120::-;15498:23;15515:5;15498:23;:::i;:::-;15491:5;15488:34;15478:62;;15536:1;15533;15526:12;15478:62;15426:120;:::o;15552:137::-;15597:5;15635:6;15622:20;15613:29;;15651:32;15677:5;15651:32;:::i;:::-;15552:137;;;;:::o;15695:757::-;15777:6;15785;15793;15801;15850:3;15838:9;15829:7;15825:23;15821:33;15818:120;;;15857:79;;:::i;:::-;15818:120;15977:1;16002:52;16046:7;16037:6;16026:9;16022:22;16002:52;:::i;:::-;15992:62;;15948:116;16103:2;16129:52;16173:7;16164:6;16153:9;16149:22;16129:52;:::i;:::-;16119:62;;16074:117;16230:2;16256:52;16300:7;16291:6;16280:9;16276:22;16256:52;:::i;:::-;16246:62;;16201:117;16357:2;16383:52;16427:7;16418:6;16407:9;16403:22;16383:52;:::i;:::-;16373:62;;16328:117;15695:757;;;;;;;:::o;16458:104::-;16503:7;16532:24;16550:5;16532:24;:::i;:::-;16521:35;;16458:104;;;:::o;16568:138::-;16649:32;16675:5;16649:32;:::i;:::-;16642:5;16639:43;16629:71;;16696:1;16693;16686:12;16629:71;16568:138;:::o;16712:155::-;16766:5;16804:6;16791:20;16782:29;;16820:41;16855:5;16820:41;:::i;:::-;16712:155;;;;:::o;16873:345::-;16940:6;16989:2;16977:9;16968:7;16964:23;16960:32;16957:119;;;16995:79;;:::i;:::-;16957:119;17115:1;17140:61;17193:7;17184:6;17173:9;17169:22;17140:61;:::i;:::-;17130:71;;17086:125;16873:345;;;;:::o;17224:118::-;17295:22;17311:5;17295:22;:::i;:::-;17288:5;17285:33;17275:61;;17332:1;17329;17322:12;17275:61;17224:118;:::o;17348:135::-;17392:5;17430:6;17417:20;17408:29;;17446:31;17471:5;17446:31;:::i;:::-;17348:135;;;;:::o;17489:747::-;17566:6;17574;17582;17590;17639:3;17627:9;17618:7;17614:23;17610:33;17607:120;;;17646:79;;:::i;:::-;17607:120;17766:1;17791:51;17834:7;17825:6;17814:9;17810:22;17791:51;:::i;:::-;17781:61;;17737:115;17891:2;17917:51;17960:7;17951:6;17940:9;17936:22;17917:51;:::i;:::-;17907:61;;17862:116;18017:2;18043:51;18086:7;18077:6;18066:9;18062:22;18043:51;:::i;:::-;18033:61;;17988:116;18143:2;18169:50;18211:7;18202:6;18191:9;18187:22;18169:50;:::i;:::-;18159:60;;18114:115;17489:747;;;;;;;:::o;18242:180::-;18290:77;18287:1;18280:88;18387:4;18384:1;18377:15;18411:4;18408:1;18401:15;18428:102;18470:8;18517:5;18514:1;18510:13;18489:34;;18428:102;;;:::o;18536:848::-;18597:5;18604:4;18628:6;18619:15;;18652:5;18643:14;;18666:712;18687:1;18677:8;18674:15;18666:712;;;18782:4;18777:3;18773:14;18767:4;18764:24;18761:50;;;18791:18;;:::i;:::-;18761:50;18841:1;18831:8;18827:16;18824:451;;;19256:4;19249:5;19245:16;19236:25;;18824:451;19306:4;19300;19296:15;19288:23;;19336:32;19359:8;19336:32;:::i;:::-;19324:44;;18666:712;;;18536:848;;;;;;;:::o;19390:1073::-;19444:5;19635:8;19625:40;;19656:1;19647:10;;19658:5;;19625:40;19684:4;19674:36;;19701:1;19692:10;;19703:5;;19674:36;19770:4;19818:1;19813:27;;;;19854:1;19849:191;;;;19763:277;;19813:27;19831:1;19822:10;;19833:5;;;19849:191;19894:3;19884:8;19881:17;19878:43;;;19901:18;;:::i;:::-;19878:43;19950:8;19947:1;19943:16;19934:25;;19985:3;19978:5;19975:14;19972:40;;;19992:18;;:::i;:::-;19972:40;20025:5;;;19763:277;;20149:2;20139:8;20136:16;20130:3;20124:4;20121:13;20117:36;20099:2;20089:8;20086:16;20081:2;20075:4;20072:12;20068:35;20052:111;20049:246;;;20205:8;20199:4;20195:19;20186:28;;20240:3;20233:5;20230:14;20227:40;;;20247:18;;:::i;:::-;20227:40;20280:5;;20049:246;20320:42;20358:3;20348:8;20342:4;20339:1;20320:42;:::i;:::-;20305:57;;;;20394:4;20389:3;20385:14;20378:5;20375:25;20372:51;;;20403:18;;:::i;:::-;20372:51;20452:4;20445:5;20441:16;20432:25;;19390:1073;;;;;;:::o;20469:281::-;20527:5;20551:23;20569:4;20551:23;:::i;:::-;20543:31;;20595:25;20611:8;20595:25;:::i;:::-;20583:37;;20639:104;20676:66;20666:8;20660:4;20639:104;:::i;:::-;20630:113;;20469:281;;;;:::o;20756:348::-;20796:7;20819:20;20837:1;20819:20;:::i;:::-;20814:25;;20853:20;20871:1;20853:20;:::i;:::-;20848:25;;21041:1;20973:66;20969:74;20966:1;20963:81;20958:1;20951:9;20944:17;20940:105;20937:131;;;21048:18;;:::i;:::-;20937:131;21096:1;21093;21089:9;21078:20;;20756:348;;;;:::o;21110:229::-;21250:34;21246:1;21238:6;21234:14;21227:58;21319:12;21314:2;21306:6;21302:15;21295:37;21110:229;:::o;21345:366::-;21487:3;21508:67;21572:2;21567:3;21508:67;:::i;:::-;21501:74;;21584:93;21673:3;21584:93;:::i;:::-;21702:2;21697:3;21693:12;21686:19;;21345:366;;;:::o;21717:419::-;21883:4;21921:2;21910:9;21906:18;21898:26;;21970:9;21964:4;21960:20;21956:1;21945:9;21941:17;21934:47;21998:131;22124:4;21998:131;:::i;:::-;21990:139;;21717:419;;;:::o;22142:418::-;22279:4;22317:2;22306:9;22302:18;22294:26;;22330:71;22398:1;22387:9;22383:17;22374:6;22330:71;:::i;:::-;22411:66;22473:2;22462:9;22458:18;22449:6;22411:66;:::i;:::-;22487;22549:2;22538:9;22534:18;22525:6;22487:66;:::i;:::-;22142:418;;;;;;:::o;22566:166::-;22706:18;22702:1;22694:6;22690:14;22683:42;22566:166;:::o;22738:366::-;22880:3;22901:67;22965:2;22960:3;22901:67;:::i;:::-;22894:74;;22977:93;23066:3;22977:93;:::i;:::-;23095:2;23090:3;23086:12;23079:19;;22738:366;;;:::o;23110:419::-;23276:4;23314:2;23303:9;23299:18;23291:26;;23363:9;23357:4;23353:20;23349:1;23338:9;23334:17;23327:47;23391:131;23517:4;23391:131;:::i;:::-;23383:139;;23110:419;;;:::o;23535:191::-;23575:4;23595:20;23613:1;23595:20;:::i;:::-;23590:25;;23629:20;23647:1;23629:20;:::i;:::-;23624:25;;23668:1;23665;23662:8;23659:34;;;23673:18;;:::i;:::-;23659:34;23718:1;23715;23711:9;23703:17;;23535:191;;;;:::o;23732:182::-;23872:34;23868:1;23860:6;23856:14;23849:58;23732:182;:::o;23920:366::-;24062:3;24083:67;24147:2;24142:3;24083:67;:::i;:::-;24076:74;;24159:93;24248:3;24159:93;:::i;:::-;24277:2;24272:3;24268:12;24261:19;;23920:366;;;:::o;24292:419::-;24458:4;24496:2;24485:9;24481:18;24473:26;;24545:9;24539:4;24535:20;24531:1;24520:9;24516:17;24509:47;24573:131;24699:4;24573:131;:::i;:::-;24565:139;;24292:419;;;:::o;24717:224::-;24857:34;24853:1;24845:6;24841:14;24834:58;24926:7;24921:2;24913:6;24909:15;24902:32;24717:224;:::o;24947:366::-;25089:3;25110:67;25174:2;25169:3;25110:67;:::i;:::-;25103:74;;25186:93;25275:3;25186:93;:::i;:::-;25304:2;25299:3;25295:12;25288:19;;24947:366;;;:::o;25319:419::-;25485:4;25523:2;25512:9;25508:18;25500:26;;25572:9;25566:4;25562:20;25558:1;25547:9;25543:17;25536:47;25600:131;25726:4;25600:131;:::i;:::-;25592:139;;25319:419;;;:::o;25744:180::-;25792:77;25789:1;25782:88;25889:4;25886:1;25879:15;25913:4;25910:1;25903:15;25930:305;25970:3;25989:20;26007:1;25989:20;:::i;:::-;25984:25;;26023:20;26041:1;26023:20;:::i;:::-;26018:25;;26177:1;26109:66;26105:74;26102:1;26099:81;26096:107;;;26183:18;;:::i;:::-;26096:107;26227:1;26224;26220:9;26213:16;;25930:305;;;;:::o;26241:233::-;26280:3;26303:24;26321:5;26303:24;:::i;:::-;26294:33;;26349:66;26342:5;26339:77;26336:103;;26419:18;;:::i;:::-;26336:103;26466:1;26459:5;26455:13;26448:20;;26241:233;;;:::o;26480:225::-;26620:34;26616:1;26608:6;26604:14;26597:58;26689:8;26684:2;26676:6;26672:15;26665:33;26480:225;:::o;26711:366::-;26853:3;26874:67;26938:2;26933:3;26874:67;:::i;:::-;26867:74;;26950:93;27039:3;26950:93;:::i;:::-;27068:2;27063:3;27059:12;27052:19;;26711:366;;;:::o;27083:419::-;27249:4;27287:2;27276:9;27272:18;27264:26;;27336:9;27330:4;27326:20;27322:1;27311:9;27307:17;27300:47;27364:131;27490:4;27364:131;:::i;:::-;27356:139;;27083:419;;;:::o;27508:332::-;27629:4;27667:2;27656:9;27652:18;27644:26;;27680:71;27748:1;27737:9;27733:17;27724:6;27680:71;:::i;:::-;27761:72;27829:2;27818:9;27814:18;27805:6;27761:72;:::i;:::-;27508:332;;;;;:::o;27846:553::-;28023:4;28061:3;28050:9;28046:19;28038:27;;28075:71;28143:1;28132:9;28128:17;28119:6;28075:71;:::i;:::-;28156:72;28224:2;28213:9;28209:18;28200:6;28156:72;:::i;:::-;28238;28306:2;28295:9;28291:18;28282:6;28238:72;:::i;:::-;28320;28388:2;28377:9;28373:18;28364:6;28320:72;:::i;:::-;27846:553;;;;;;;:::o;28405:170::-;28545:22;28541:1;28533:6;28529:14;28522:46;28405:170;:::o;28581:366::-;28723:3;28744:67;28808:2;28803:3;28744:67;:::i;:::-;28737:74;;28820:93;28909:3;28820:93;:::i;:::-;28938:2;28933:3;28929:12;28922:19;;28581:366;;;:::o;28953:419::-;29119:4;29157:2;29146:9;29142:18;29134:26;;29206:9;29200:4;29196:20;29192:1;29181:9;29177:17;29170:47;29234:131;29360:4;29234:131;:::i;:::-;29226:139;;28953:419;;;:::o;29378:172::-;29518:24;29514:1;29506:6;29502:14;29495:48;29378:172;:::o;29556:366::-;29698:3;29719:67;29783:2;29778:3;29719:67;:::i;:::-;29712:74;;29795:93;29884:3;29795:93;:::i;:::-;29913:2;29908:3;29904:12;29897:19;;29556:366;;;:::o;29928:419::-;30094:4;30132:2;30121:9;30117:18;30109:26;;30181:9;30175:4;30171:20;30167:1;30156:9;30152:17;30145:47;30209:131;30335:4;30209:131;:::i;:::-;30201:139;;29928:419;;;:::o;30353:165::-;30493:17;30489:1;30481:6;30477:14;30470:41;30353:165;:::o;30524:366::-;30666:3;30687:67;30751:2;30746:3;30687:67;:::i;:::-;30680:74;;30763:93;30852:3;30763:93;:::i;:::-;30881:2;30876:3;30872:12;30865:19;;30524:366;;;:::o;30896:419::-;31062:4;31100:2;31089:9;31085:18;31077:26;;31149:9;31143:4;31139:20;31135:1;31124:9;31120:17;31113:47;31177:131;31303:4;31177:131;:::i;:::-;31169:139;;30896:419;;;:::o;31321:143::-;31378:5;31409:6;31403:13;31394:22;;31425:33;31452:5;31425:33;:::i;:::-;31321:143;;;;:::o;31470:351::-;31540:6;31589:2;31577:9;31568:7;31564:23;31560:32;31557:119;;;31595:79;;:::i;:::-;31557:119;31715:1;31740:64;31796:7;31787:6;31776:9;31772:22;31740:64;:::i;:::-;31730:74;;31686:128;31470:351;;;;:::o;31827:164::-;31967:16;31963:1;31955:6;31951:14;31944:40;31827:164;:::o;31997:366::-;32139:3;32160:67;32224:2;32219:3;32160:67;:::i;:::-;32153:74;;32236:93;32325:3;32236:93;:::i;:::-;32354:2;32349:3;32345:12;32338:19;;31997:366;;;:::o;32369:419::-;32535:4;32573:2;32562:9;32558:18;32550:26;;32622:9;32616:4;32612:20;32608:1;32597:9;32593:17;32586:47;32650:131;32776:4;32650:131;:::i;:::-;32642:139;;32369:419;;;:::o;32794:159::-;32934:11;32930:1;32922:6;32918:14;32911:35;32794:159;:::o;32959:365::-;33101:3;33122:66;33186:1;33181:3;33122:66;:::i;:::-;33115:73;;33197:93;33286:3;33197:93;:::i;:::-;33315:2;33310:3;33306:12;33299:19;;32959:365;;;:::o;33330:419::-;33496:4;33534:2;33523:9;33519:18;33511:26;;33583:9;33577:4;33573:20;33569:1;33558:9;33554:17;33547:47;33611:131;33737:4;33611:131;:::i;:::-;33603:139;;33330:419;;;:::o;33755:332::-;33876:4;33914:2;33903:9;33899:18;33891:26;;33927:71;33995:1;33984:9;33980:17;33971:6;33927:71;:::i;:::-;34008:72;34076:2;34065:9;34061:18;34052:6;34008:72;:::i;:::-;33755:332;;;;;:::o;34093:171::-;34233:23;34229:1;34221:6;34217:14;34210:47;34093:171;:::o;34270:366::-;34412:3;34433:67;34497:2;34492:3;34433:67;:::i;:::-;34426:74;;34509:93;34598:3;34509:93;:::i;:::-;34627:2;34622:3;34618:12;34611:19;;34270:366;;;:::o;34642:419::-;34808:4;34846:2;34835:9;34831:18;34823:26;;34895:9;34889:4;34885:20;34881:1;34870:9;34866:17;34859:47;34923:131;35049:4;34923:131;:::i;:::-;34915:139;;34642:419;;;:::o;35067:332::-;35188:4;35226:2;35215:9;35211:18;35203:26;;35239:71;35307:1;35296:9;35292:17;35283:6;35239:71;:::i;:::-;35320:72;35388:2;35377:9;35373:18;35364:6;35320:72;:::i;:::-;35067:332;;;;;:::o;35405:180::-;35453:77;35450:1;35443:88;35550:4;35547:1;35540:15;35574:4;35571:1;35564:15;35591:185;35631:1;35648:20;35666:1;35648:20;:::i;:::-;35643:25;;35682:20;35700:1;35682:20;:::i;:::-;35677:25;;35721:1;35711:35;;35726:18;;:::i;:::-;35711:35;35768:1;35765;35761:9;35756:14;;35591:185;;;;:::o;35782:166::-;35922:18;35918:1;35910:6;35906:14;35899:42;35782:166;:::o;35954:366::-;36096:3;36117:67;36181:2;36176:3;36117:67;:::i;:::-;36110:74;;36193:93;36282:3;36193:93;:::i;:::-;36311:2;36306:3;36302:12;36295:19;;35954:366;;;:::o;36326:419::-;36492:4;36530:2;36519:9;36515:18;36507:26;;36579:9;36573:4;36569:20;36565:1;36554:9;36550:17;36543:47;36607:131;36733:4;36607:131;:::i;:::-;36599:139;;36326:419;;;:::o;36751:170::-;36891:22;36887:1;36879:6;36875:14;36868:46;36751:170;:::o;36927:366::-;37069:3;37090:67;37154:2;37149:3;37090:67;:::i;:::-;37083:74;;37166:93;37255:3;37166:93;:::i;:::-;37284:2;37279:3;37275:12;37268:19;;36927:366;;;:::o;37299:419::-;37465:4;37503:2;37492:9;37488:18;37480:26;;37552:9;37546:4;37542:20;37538:1;37527:9;37523:17;37516:47;37580:131;37706:4;37580:131;:::i;:::-;37572:139;;37299:419;;;:::o;37724:168::-;37864:20;37860:1;37852:6;37848:14;37841:44;37724:168;:::o;37898:366::-;38040:3;38061:67;38125:2;38120:3;38061:67;:::i;:::-;38054:74;;38137:93;38226:3;38137:93;:::i;:::-;38255:2;38250:3;38246:12;38239:19;;37898:366;;;:::o;38270:419::-;38436:4;38474:2;38463:9;38459:18;38451:26;;38523:9;38517:4;38513:20;38509:1;38498:9;38494:17;38487:47;38551:131;38677:4;38551:131;:::i;:::-;38543:139;;38270:419;;;:::o;38695:242::-;38734:3;38753:19;38770:1;38753:19;:::i;:::-;38748:24;;38786:19;38803:1;38786:19;:::i;:::-;38781:24;;38879:1;38871:6;38867:14;38864:1;38861:21;38858:47;;;38885:18;;:::i;:::-;38858:47;38929:1;38926;38922:9;38915:16;;38695:242;;;;:::o;38943:644::-;39138:4;39176:3;39165:9;39161:19;39153:27;;39190:69;39256:1;39245:9;39241:17;39232:6;39190:69;:::i;:::-;39269:70;39335:2;39324:9;39320:18;39311:6;39269:70;:::i;:::-;39349;39415:2;39404:9;39400:18;39391:6;39349:70;:::i;:::-;39429;39495:2;39484:9;39480:18;39471:6;39429:70;:::i;:::-;39509:71;39575:3;39564:9;39560:19;39551:6;39509:71;:::i;:::-;38943:644;;;;;;;;:::o;39593:159::-;39733:11;39729:1;39721:6;39717:14;39710:35;39593:159;:::o;39758:365::-;39900:3;39921:66;39985:1;39980:3;39921:66;:::i;:::-;39914:73;;39996:93;40085:3;39996:93;:::i;:::-;40114:2;40109:3;40105:12;40098:19;;39758:365;;;:::o;40129:419::-;40295:4;40333:2;40322:9;40318:18;40310:26;;40382:9;40376:4;40372:20;40368:1;40357:9;40353:17;40346:47;40410:131;40536:4;40410:131;:::i;:::-;40402:139;;40129:419;;;:::o;40554:60::-;40582:3;40603:5;40596:12;;40554:60;;;:::o;40620:142::-;40670:9;40703:53;40721:34;40730:24;40748:5;40730:24;:::i;:::-;40721:34;:::i;:::-;40703:53;:::i;:::-;40690:66;;40620:142;;;:::o;40768:126::-;40818:9;40851:37;40882:5;40851:37;:::i;:::-;40838:50;;40768:126;;;:::o;40900:134::-;40958:9;40991:37;41022:5;40991:37;:::i;:::-;40978:50;;40900:134;;;:::o;41040:147::-;41135:45;41174:5;41135:45;:::i;:::-;41130:3;41123:58;41040:147;;:::o;41193:238::-;41294:4;41332:2;41321:9;41317:18;41309:26;;41345:79;41421:1;41410:9;41406:17;41397:6;41345:79;:::i;:::-;41193:238;;;;:::o;41437:223::-;41577:34;41573:1;41565:6;41561:14;41554:58;41646:6;41641:2;41633:6;41629:15;41622:31;41437:223;:::o;41666:366::-;41808:3;41829:67;41893:2;41888:3;41829:67;:::i;:::-;41822:74;;41905:93;41994:3;41905:93;:::i;:::-;42023:2;42018:3;42014:12;42007:19;;41666:366;;;:::o;42038:419::-;42204:4;42242:2;42231:9;42227:18;42219:26;;42291:9;42285:4;42281:20;42277:1;42266:9;42262:17;42255:47;42319:131;42445:4;42319:131;:::i;:::-;42311:139;;42038:419;;;:::o;42463:280::-;42501:7;42524:18;42540:1;42524:18;:::i;:::-;42519:23;;42556:18;42572:1;42556:18;:::i;:::-;42551:23;;42680:1;42674:4;42670:12;42667:1;42664:19;42659:1;42652:9;42645:17;42641:43;42638:69;;;42687:18;;:::i;:::-;42638:69;42735:1;42732;42728:9;42717:20;;42463:280;;;;:::o;42749:237::-;42787:3;42806:18;42822:1;42806:18;:::i;:::-;42801:23;;42838:18;42854:1;42838:18;:::i;:::-;42833:23;;42928:1;42922:4;42918:12;42915:1;42912:19;42909:45;;;42934:18;;:::i;:::-;42909:45;42978:1;42975;42971:9;42964:16;;42749:237;;;;:::o;42992:166::-;43132:18;43128:1;43120:6;43116:14;43109:42;42992:166;:::o;43164:366::-;43306:3;43327:67;43391:2;43386:3;43327:67;:::i;:::-;43320:74;;43403:93;43492:3;43403:93;:::i;:::-;43521:2;43516:3;43512:12;43505:19;;43164:366;;;:::o;43536:419::-;43702:4;43740:2;43729:9;43725:18;43717:26;;43789:9;43783:4;43779:20;43775:1;43764:9;43760:17;43753:47;43817:131;43943:4;43817:131;:::i;:::-;43809:139;;43536:419;;;:::o;43961:162::-;44101:14;44097:1;44089:6;44085:14;44078:38;43961:162;:::o;44129:366::-;44271:3;44292:67;44356:2;44351:3;44292:67;:::i;:::-;44285:74;;44368:93;44457:3;44368:93;:::i;:::-;44486:2;44481:3;44477:12;44470:19;;44129:366;;;:::o;44501:419::-;44667:4;44705:2;44694:9;44690:18;44682:26;;44754:9;44748:4;44744:20;44740:1;44729:9;44725:17;44718:47;44782:131;44908:4;44782:131;:::i;:::-;44774:139;;44501:419;;;:::o;44926:517::-;45085:4;45123:3;45112:9;45108:19;45100:27;;45137:67;45201:1;45190:9;45186:17;45177:6;45137:67;:::i;:::-;45214:68;45278:2;45267:9;45263:18;45254:6;45214:68;:::i;:::-;45292;45356:2;45345:9;45341:18;45332:6;45292:68;:::i;:::-;45370:66;45432:2;45421:9;45417:18;45408:6;45370:66;:::i;:::-;44926:517;;;;;;;:::o;45449:171::-;45487:3;45510:23;45527:5;45510:23;:::i;:::-;45501:32;;45555:6;45548:5;45545:17;45542:43;;45565:18;;:::i;:::-;45542:43;45612:1;45605:5;45601:13;45594:20;;45449:171;;;:::o;45626:174::-;45766:26;45762:1;45754:6;45750:14;45743:50;45626:174;:::o;45806:366::-;45948:3;45969:67;46033:2;46028:3;45969:67;:::i;:::-;45962:74;;46045:93;46134:3;46045:93;:::i;:::-;46163:2;46158:3;46154:12;46147:19;;45806:366;;;:::o;46178:419::-;46344:4;46382:2;46371:9;46367:18;46359:26;;46431:9;46425:4;46421:20;46417:1;46406:9;46402:17;46395:47;46459:131;46585:4;46459:131;:::i;:::-;46451:139;;46178:419;;;:::o;46603:161::-;46743:13;46739:1;46731:6;46727:14;46720:37;46603:161;:::o;46770:366::-;46912:3;46933:67;46997:2;46992:3;46933:67;:::i;:::-;46926:74;;47009:93;47098:3;47009:93;:::i;:::-;47127:2;47122:3;47118:12;47111:19;;46770:366;;;:::o;47142:419::-;47308:4;47346:2;47335:9;47331:18;47323:26;;47395:9;47389:4;47385:20;47381:1;47370:9;47366:17;47359:47;47423:131;47549:4;47423:131;:::i;:::-;47415:139;;47142:419;;;:::o;47567:167::-;47707:19;47703:1;47695:6;47691:14;47684:43;47567:167;:::o;47740:366::-;47882:3;47903:67;47967:2;47962:3;47903:67;:::i;:::-;47896:74;;47979:93;48068:3;47979:93;:::i;:::-;48097:2;48092:3;48088:12;48081:19;;47740:366;;;:::o;48112:419::-;48278:4;48316:2;48305:9;48301:18;48293:26;;48365:9;48359:4;48355:20;48351:1;48340:9;48336:17;48329:47;48393:131;48519:4;48393:131;:::i;:::-;48385:139;;48112:419;;;:::o;48537:85::-;48582:7;48611:5;48600:16;;48537:85;;;:::o;48628:158::-;48686:9;48719:61;48737:42;48746:32;48772:5;48746:32;:::i;:::-;48737:42;:::i;:::-;48719:61;:::i;:::-;48706:74;;48628:158;;;:::o;48792:147::-;48887:45;48926:5;48887:45;:::i;:::-;48882:3;48875:58;48792:147;;:::o;48945:807::-;49194:4;49232:3;49221:9;49217:19;49209:27;;49246:71;49314:1;49303:9;49299:17;49290:6;49246:71;:::i;:::-;49327:72;49395:2;49384:9;49380:18;49371:6;49327:72;:::i;:::-;49409:80;49485:2;49474:9;49470:18;49461:6;49409:80;:::i;:::-;49499;49575:2;49564:9;49560:18;49551:6;49499:80;:::i;:::-;49589:73;49657:3;49646:9;49642:19;49633:6;49589:73;:::i;:::-;49672;49740:3;49729:9;49725:19;49716:6;49672:73;:::i;:::-;48945:807;;;;;;;;;:::o;49758:143::-;49815:5;49846:6;49840:13;49831:22;;49862:33;49889:5;49862:33;:::i;:::-;49758:143;;;;:::o;49907:663::-;49995:6;50003;50011;50060:2;50048:9;50039:7;50035:23;50031:32;50028:119;;;50066:79;;:::i;:::-;50028:119;50186:1;50211:64;50267:7;50258:6;50247:9;50243:22;50211:64;:::i;:::-;50201:74;;50157:128;50324:2;50350:64;50406:7;50397:6;50386:9;50382:22;50350:64;:::i;:::-;50340:74;;50295:129;50463:2;50489:64;50545:7;50536:6;50525:9;50521:22;50489:64;:::i;:::-;50479:74;;50434:129;49907:663;;;;;:::o;50576:180::-;50624:77;50621:1;50614:88;50721:4;50718:1;50711:15;50745:4;50742:1;50735:15;50762:114;50829:6;50863:5;50857:12;50847:22;;50762:114;;;:::o;50882:184::-;50981:11;51015:6;51010:3;51003:19;51055:4;51050:3;51046:14;51031:29;;50882:184;;;;:::o;51072:132::-;51139:4;51162:3;51154:11;;51192:4;51187:3;51183:14;51175:22;;51072:132;;;:::o;51210:108::-;51287:24;51305:5;51287:24;:::i;:::-;51282:3;51275:37;51210:108;;:::o;51324:179::-;51393:10;51414:46;51456:3;51448:6;51414:46;:::i;:::-;51492:4;51487:3;51483:14;51469:28;;51324:179;;;;:::o;51509:113::-;51579:4;51611;51606:3;51602:14;51594:22;;51509:113;;;:::o;51658:732::-;51777:3;51806:54;51854:5;51806:54;:::i;:::-;51876:86;51955:6;51950:3;51876:86;:::i;:::-;51869:93;;51986:56;52036:5;51986:56;:::i;:::-;52065:7;52096:1;52081:284;52106:6;52103:1;52100:13;52081:284;;;52182:6;52176:13;52209:63;52268:3;52253:13;52209:63;:::i;:::-;52202:70;;52295:60;52348:6;52295:60;:::i;:::-;52285:70;;52141:224;52128:1;52125;52121:9;52116:14;;52081:284;;;52085:14;52381:3;52374:10;;51782:608;;;51658:732;;;;:::o;52396:831::-;52659:4;52697:3;52686:9;52682:19;52674:27;;52711:71;52779:1;52768:9;52764:17;52755:6;52711:71;:::i;:::-;52792:80;52868:2;52857:9;52853:18;52844:6;52792:80;:::i;:::-;52919:9;52913:4;52909:20;52904:2;52893:9;52889:18;52882:48;52947:108;53050:4;53041:6;52947:108;:::i;:::-;52939:116;;53065:72;53133:2;53122:9;53118:18;53109:6;53065:72;:::i;:::-;53147:73;53215:3;53204:9;53200:19;53191:6;53147:73;:::i;:::-;52396:831;;;;;;;;:::o

Swarm Source

ipfs://e4c11668a17d6d07d23840bc5bb1a177f5c7efaa9ff2884ee5be142cd21c3e0f
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.