ERC-20
Overview
Max Total Supply
100,000,000 𝕏
Holders
155
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
74,487.815165651965796052 𝕏Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
X
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-24 */ /* */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract X is ERC20, Ownable { string _name = unicode"x.com"; string _symbol = unicode"𝕏"; using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private isSwppable; uint256 public balance; address private devWallet; uint256 public maxTransaction; uint256 public contractSellTreshold; uint256 public maxWalletHolding; bool public areLimitsOn = true; bool public emptyContractFull = false; uint256 public totalBuyTax; uint256 public devBuyTax; uint256 public liqBuyTax; uint256 public totalSellTax; uint256 public devSellTax; uint256 public liqSellTax; uint256 public tokensForLiquidity; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20(_name, _symbol) payable{ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _devBuyTax = 20; uint256 _liqBuyTax = 0; uint256 _devSellTax = 50; uint256 _liqSellTax = 0; uint256 totalSupply = 100000000 * 1e18; maxTransaction = totalSupply * 20 / 1000; // 2% maxWalletHolding = totalSupply * 20 / 1000; // 2% contractSellTreshold = totalSupply * 1 / 1000; // 0.05% devBuyTax = _devBuyTax; liqBuyTax = _liqBuyTax; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSellTax; liqSellTax = _liqSellTax; totalSellTax = devSellTax + liqSellTax; devWallet = address(msg.sender); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(devWallet), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(devWallet), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(address(this), totalSupply); } receive() external payable { } function beginTrading() external onlyOwner{ uint256 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function removeStuckETH() external onlyOwner { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "ETH balance must be greater than 0"); (bool success,) = address(devWallet).call{value: ethBalance}(""); require(success, "Failed to clear ETH balance"); } function removeStuckTokenBalance() external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(tokenBalance > 0, "Token balance must be greater than 0"); _transfer(address(this), devWallet, tokenBalance); } function limitsOn(bool _bool) external onlyOwner { areLimitsOn = _bool; } function switchContractSellAll(bool enabled) external onlyOwner{ emptyContractFull = enabled; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function changeTaxAllocation( uint256 _devBuy, uint256 _devSell, uint256 _liqBuy, uint256 _liqSell ) external onlyOwner { devBuyTax = _devBuy; liqBuyTax = _liqBuy; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSell; liqSellTax = _liqSell; totalSellTax = devSellTax + liqSellTax; require(totalBuyTax <= 30 && totalSellTax <= 30, "Tax cannot be higher then 30%"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateDevAddress(address newDevWallet) external onlyOwner{ emit devWalletUpdated(newDevWallet, devWallet); devWallet = newDevWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(areLimitsOn){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !isSwppable ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= contractSellTreshold; if( canSwap && !isSwppable && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { isSwppable = true; swapBack(); isSwppable = false; } bool takeFee = !isSwppable; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && totalSellTax > 0){ fees = amount.mul(totalSellTax).div(100); tokensForLiquidity += fees * liqSellTax / totalSellTax; tokensForDev += fees * devSellTax / totalSellTax; } // on buy else if(automatedMarketMakerPairs[from] && totalBuyTax > 0) { fees = amount.mul(totalBuyTax).div(100); tokensForLiquidity += fees * liqBuyTax / totalBuyTax; tokensForDev += fees * devBuyTax / totalBuyTax; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(emptyContractFull == false){ if(contractBalance > contractSellTreshold * 20){ contractBalance = contractSellTreshold * 20; } }else{ contractBalance = balanceOf(address(this)); } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForDev; tokensForLiquidity = 0; tokensForDev = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(devWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areLimitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devBuy","type":"uint256"},{"internalType":"uint256","name":"_devSell","type":"uint256"},{"internalType":"uint256","name":"_liqBuy","type":"uint256"},{"internalType":"uint256","name":"_liqSell","type":"uint256"}],"name":"changeTaxAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSellTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emptyContractFull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"limitsOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liqBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"switchContractSellAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280600581526020017f782e636f6d000000000000000000000000000000000000000000000000000000815250600690816200004a919062000e7a565b506040518060400160405280600481526020017ff09d958f000000000000000000000000000000000000000000000000000000008152506007908162000091919062000e7a565b506001600e5f6101000a81548160ff0219169083151502179055505f600e60016101000a81548160ff02191690831515021790555060068054620000d59062000c7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620001039062000c7a565b8015620001525780601f10620001285761010080835404028352916020019162000152565b820191905f5260205f20905b8154815290600101906020018083116200013457829003601f168201915b505050505060078054620001669062000c7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620001949062000c7a565b8015620001e35780601f10620001b957610100808354040283529160200191620001e3565b820191905f5260205f20905b815481529060010190602001808311620001c557829003601f168201915b50505050508160039081620001f9919062000e7a565b5080600490816200020b919062000e7a565b5050505f6200021f6200070360201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002e78160016200070a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000365573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200038b919062000fc3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000417919062000fc3565b6040518363ffffffff1660e01b81526004016200043692919062001004565b6020604051808303815f875af115801562000453573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000479919062000fc3565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620004c160a05160016200070a60201b60201c565b620004d660a05160016200080360201b60201c565b5f601490505f80603290505f806a52b7d2dcc80cd2e400000090506103e86014826200050391906200105c565b6200050f9190620010d3565b600b819055506103e86014826200052791906200105c565b620005339190620010d3565b600d819055506103e86001826200054b91906200105c565b620005579190620010d3565b600c8190555084601081905550836011819055506011546010546200057d91906200110a565b600f819055508260138190555081601481905550601454601354620005a391906200110a565b60128190555033600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200060b620005fd620008a160201b60201c565b6001620008c960201b60201c565b6200061e306001620008c960201b60201c565b6200063361dead6001620008c960201b60201c565b62000667600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008c960201b60201c565b620006896200067b620008a160201b60201c565b60016200070a60201b60201c565b6200069c3060016200070a60201b60201c565b620006b161dead60016200070a60201b60201c565b620006e5600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200070a60201b60201c565b620006f7308262000a1260201b60201c565b50505050505062001301565b5f33905090565b6200071a6200070360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a290620011a2565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008d96200070360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200096a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096190620011a2565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a069190620011de565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a7a9062001247565b60405180910390fd5b62000a965f838362000baf60201b60201c565b62000aad8160025462000bb460201b90919060201c565b60028190555062000b04815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000bb460201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ba3919062001278565b60405180910390a35050565b505050565b5f80828462000bc491906200110a565b90508381101562000c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c0390620012e1565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c9257607f821691505b60208210810362000ca85762000ca762000c4d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000d0c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ccf565b62000d18868362000ccf565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d6262000d5c62000d568462000d30565b62000d39565b62000d30565b9050919050565b5f819050919050565b62000d7d8362000d42565b62000d9562000d8c8262000d69565b84845462000cdb565b825550505050565b5f90565b62000dab62000d9d565b62000db881848462000d72565b505050565b5b8181101562000ddf5762000dd35f8262000da1565b60018101905062000dbe565b5050565b601f82111562000e2e5762000df88162000cae565b62000e038462000cc0565b8101602085101562000e13578190505b62000e2b62000e228562000cc0565b83018262000dbd565b50505b505050565b5f82821c905092915050565b5f62000e505f198460080262000e33565b1980831691505092915050565b5f62000e6a838362000e3f565b9150826002028217905092915050565b62000e858262000c16565b67ffffffffffffffff81111562000ea15762000ea062000c20565b5b62000ead825462000c7a565b62000eba82828562000de3565b5f60209050601f83116001811462000ef0575f841562000edb578287015190505b62000ee7858262000e5d565b86555062000f56565b601f19841662000f008662000cae565b5f5b8281101562000f295784890151825560018201915060208501945060208101905062000f02565b8683101562000f49578489015162000f45601f89168262000e3f565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f8d8262000f62565b9050919050565b62000f9f8162000f81565b811462000faa575f80fd5b50565b5f8151905062000fbd8162000f94565b92915050565b5f6020828403121562000fdb5762000fda62000f5e565b5b5f62000fea8482850162000fad565b91505092915050565b62000ffe8162000f81565b82525050565b5f604082019050620010195f83018562000ff3565b62001028602083018462000ff3565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010688262000d30565b9150620010758362000d30565b9250828202620010858162000d30565b915082820484148315176200109f576200109e6200102f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010df8262000d30565b9150620010ec8362000d30565b925082620010ff57620010fe620010a6565b5b828204905092915050565b5f620011168262000d30565b9150620011238362000d30565b92508282019050808211156200113e576200113d6200102f565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200118a60208362001144565b9150620011978262001154565b602082019050919050565b5f6020820190508181035f830152620011bb816200117c565b9050919050565b5f8115159050919050565b620011d881620011c2565b82525050565b5f602082019050620011f35f830184620011cd565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200122f601f8362001144565b91506200123c82620011f9565b602082019050919050565b5f6020820190508181035f830152620012608162001221565b9050919050565b620012728162000d30565b82525050565b5f6020820190506200128d5f83018462001267565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f620012c9601b8362001144565b9150620012d68262001293565b602082019050919050565b5f6020820190508181035f830152620012fa81620012bb565b9050919050565b60805160a0516144a86200135b5f395f8181610e2801526113e501525f8181610c5301528181611b3201528181611b59015281816130a101528181613180015281816131a70152818161323d015261326401526144a85ff3fe60806040526004361061025f575f3560e01c80637571336a11610143578063ab2f65ee116100b5578063c024666811610079578063c0246668146108d6578063c3f70b52146108fe578063c408c24514610928578063dd62ed3e1461093e578063df6f93be1461097a578063f2fde38b146109a457610266565b8063ab2f65ee146107f6578063b62496f51461081e578063b69ef8a81461085a578063b7c0375f14610884578063be857504146108ac57610266565b80639a7a23d6116101075780639a7a23d6146106ee5780639ee2e924146107165780639fccce321461072c578063a457c2d714610756578063a9059cbb14610792578063aa8ae02d146107ce57610266565b80637571336a1461062057806385033762146106485780638da5cb5b14610670578063945674fe1461069a57806395d89b41146106c457610266565b806323b872dd116101dc57806349bd5a5e116101a057806349bd5a5e146105145780634fbee1931461053e5780635de0f2a01461057a5780636c7e15c9146105a457806370a08231146105ce578063715018a61461060a57610266565b806323b872dd1461041e578063313ce5671461045a578063395093511461048457806346469afb146104c057806348d79155146104ea57610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631a8145bb146103a05780631bff7898146103ca57806322eb6631146103f457610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109cc565b60405161028b91906133f9565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906134aa565b610a5c565b6040516102c79190613502565b60405180910390f35b3480156102db575f80fd5b506102e4610a79565b6040516102f19190613502565b60405180910390f35b348015610305575f80fd5b5061030e610a8b565b005b34801561031b575f80fd5b506103366004803603810190610331919061351b565b610c34565b6040516103439190613502565b60405180910390f35b348015610357575f80fd5b50610360610c51565b60405161036d91906135a1565b60405180910390f35b348015610381575f80fd5b5061038a610c75565b60405161039791906135c9565b60405180910390f35b3480156103ab575f80fd5b506103b4610c7e565b6040516103c191906135c9565b60405180910390f35b3480156103d5575f80fd5b506103de610c84565b6040516103eb91906135c9565b60405180910390f35b3480156103ff575f80fd5b50610408610c8a565b60405161041591906135c9565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f91906135e2565b610c90565b6040516104519190613502565b60405180910390f35b348015610465575f80fd5b5061046e610d64565b60405161047b919061364d565b60405180910390f35b34801561048f575f80fd5b506104aa60048036038101906104a591906134aa565b610d6c565b6040516104b79190613502565b60405180910390f35b3480156104cb575f80fd5b506104d4610e1a565b6040516104e191906135c9565b60405180910390f35b3480156104f5575f80fd5b506104fe610e20565b60405161050b91906135c9565b60405180910390f35b34801561051f575f80fd5b50610528610e26565b6040516105359190613675565b60405180910390f35b348015610549575f80fd5b50610564600480360381019061055f919061351b565b610e4a565b6040516105719190613502565b60405180910390f35b348015610585575f80fd5b5061058e610e9c565b60405161059b91906135c9565b60405180910390f35b3480156105af575f80fd5b506105b8610ea2565b6040516105c591906135c9565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef919061351b565b610ea8565b60405161060191906135c9565b60405180910390f35b348015610615575f80fd5b5061061e610eed565b005b34801561062b575f80fd5b50610646600480360381019061064191906136b8565b611040565b005b348015610653575f80fd5b5061066e6004803603810190610669919061351b565b61112e565b005b34801561067b575f80fd5b50610684611282565b6040516106919190613675565b60405180910390f35b3480156106a5575f80fd5b506106ae6112aa565b6040516106bb9190613502565b60405180910390f35b3480156106cf575f80fd5b506106d86112bd565b6040516106e591906133f9565b60405180910390f35b3480156106f9575f80fd5b50610714600480360381019061070f91906136b8565b61134d565b005b348015610721575f80fd5b5061072a61147f565b005b348015610737575f80fd5b50610740611592565b60405161074d91906135c9565b60405180910390f35b348015610761575f80fd5b5061077c600480360381019061077791906134aa565b611598565b6040516107899190613502565b60405180910390f35b34801561079d575f80fd5b506107b860048036038101906107b391906134aa565b611660565b6040516107c59190613502565b60405180910390f35b3480156107d9575f80fd5b506107f460048036038101906107ef91906136f6565b61167d565b005b348015610801575f80fd5b5061081c6004803603810190610817919061375a565b6117b6565b005b348015610829575f80fd5b50610844600480360381019061083f919061351b565b611868565b6040516108519190613502565b60405180910390f35b348015610865575f80fd5b5061086e611885565b60405161087b91906135c9565b60405180910390f35b34801561088f575f80fd5b506108aa60048036038101906108a5919061375a565b61188b565b005b3480156108b7575f80fd5b506108c061193e565b6040516108cd91906135c9565b60405180910390f35b3480156108e1575f80fd5b506108fc60048036038101906108f791906136b8565b611944565b005b348015610909575f80fd5b50610912611a80565b60405161091f91906135c9565b60405180910390f35b348015610933575f80fd5b5061093c611a86565b005b348015610949575f80fd5b50610964600480360381019061095f9190613785565b611c24565b60405161097191906135c9565b60405180910390f35b348015610985575f80fd5b5061098e611ca6565b60405161099b91906135c9565b60405180910390f35b3480156109af575f80fd5b506109ca60048036038101906109c5919061351b565b611cac565b005b6060600380546109db906137f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a07906137f0565b8015610a525780601f10610a2957610100808354040283529160200191610a52565b820191905f5260205f20905b815481529060010190602001808311610a3557829003601f168201915b5050505050905090565b5f610a6f610a68611e00565b8484611e07565b6001905092915050565b600e5f9054906101000a900460ff1681565b610a93611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b189061386a565b60405180910390fd5b5f4790505f8111610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e906138f8565b60405180910390fd5b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610bad90613943565b5f6040518083038185875af1925050503d805f8114610be7576040519150601f19603f3d011682016040523d82523d5f602084013e610bec565b606091505b5050905080610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c27906139a1565b60405180910390fd5b5050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60155481565b60125481565b60135481565b5f610c9c848484611fca565b610d5984610ca8611e00565b610d54856040518060600160405280602881526020016144266028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d0b611e00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ea9092919063ffffffff16565b611e07565b600190509392505050565b5f6012905090565b5f610e10610d78611e00565b84610e0b8560015f610d88611e00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461294c90919063ffffffff16565b611e07565b6001905092915050565b600f5481565b600d5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600c5481565b60105481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ef5611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a9061386a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611048611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061386a565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611136611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb9061386a565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60019054906101000a900460ff1681565b6060600480546112cc906137f0565b80601f01602080910402602001604051908101604052809291908181526020018280546112f8906137f0565b80156113435780601f1061131a57610100808354040283529160200191611343565b820191905f5260205f20905b81548152906001019060200180831161132657829003601f168201915b5050505050905090565b611355611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da9061386a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890613a2f565b60405180910390fd5b61147b82826129a9565b5050565b611487611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c9061386a565b60405180910390fd5b5f61151f30610ea8565b90505f8111611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90613abd565b60405180910390fd5b61158f30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611fca565b50565b60165481565b5f6116566115a4611e00565b846116518560405180606001604052806025815260200161444e6025913960015f6115cd611e00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ea9092919063ffffffff16565b611e07565b6001905092915050565b5f61167361166c611e00565b8484611fca565b6001905092915050565b611685611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a9061386a565b60405180910390fd5b83601081905550816011819055506011546010546117319190613b08565b600f8190555082601381905550806014819055506014546013546117559190613b08565b601281905550601e600f54111580156117715750601e60125411155b6117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a790613b85565b60405180910390fd5b50505050565b6117be611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118439061386a565b60405180910390fd5b80600e5f6101000a81548160ff02191690831515021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60095481565b611893611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611921576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119189061386a565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b60145481565b61194c611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d19061386a565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a749190613502565b60405180910390a25050565b600b5481565b611a8e611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b139061386a565b60405180910390fd5b5f4790505f611b2a30610ea8565b9050611b57307f000000000000000000000000000000000000000000000000000000000000000083611e07565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611bdc96959493929190613bdc565b60606040518083038185885af1158015611bf8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c1d9190613c4f565b5050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b611cb4611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d399061386a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90613d0f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90613d9d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbd91906135c9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90613e2b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613eb9565b60405180910390fd5b5f81036120bd576120b883835f612a47565b6128e5565b600e5f9054906101000a900460ff16156124b1576120d9611282565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121475750612117611282565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561217f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121d1575060085f9054906101000a900460ff16155b156124b057601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612273575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561231a57600b548111156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490613f47565b60405180910390fd5b600d546122c983610ea8565b826122d49190613b08565b1115612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230c90613faf565b60405180910390fd5b6124af565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156123b7575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561240657600b54811115612401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f89061403d565b60405180910390fd5b6124ae565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166124ad57600d5461246083610ea8565b8261246b9190613b08565b11156124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a390613faf565b60405180910390fd5b5b5b5b5b5b5f6124bb30610ea8565b90505f600c5482101590508080156124df575060085f9054906101000a900460ff16155b80156125325750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612585575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156125d8575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561261957600160085f6101000a81548160ff0219169083151502179055506125ff612cd0565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126c7575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156126d0575f90505b5f81156128d557601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561272e57505f601254115b156127c65761275b606461274d60125488612ef690919063ffffffff16565b612f6d90919063ffffffff16565b90506012546014548261276e919061405b565b61277891906140c9565b60155f8282546127889190613b08565b92505081905550601254601354826127a0919061405b565b6127aa91906140c9565b60165f8282546127ba9190613b08565b925050819055506128b2565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561281d57505f600f54115b156128b15761284a606461283c600f5488612ef690919063ffffffff16565b612f6d90919063ffffffff16565b9050600f546011548261285d919061405b565b61286791906140c9565b60155f8282546128779190613b08565b92505081905550600f546010548261288f919061405b565b61289991906140c9565b60165f8282546128a99190613b08565b925050819055505b5b5f8111156128c6576128c5873083612a47565b5b80856128d291906140f9565b94505b6128e0878787612a47565b505050505b505050565b5f838311158290612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292891906133f9565b60405180910390fd5b505f838561293f91906140f9565b9050809150509392505050565b5f80828461295a9190613b08565b90508381101561299f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299690614176565b60405180910390fd5b8091505092915050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90613e2b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1a90613eb9565b60405180910390fd5b612b2e838383612fb6565b612b9781604051806060016040528060268152602001614400602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ea9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c26815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461294c90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cc391906135c9565b60405180910390a3505050565b5f612cda30610ea8565b90505f601654601554612ced9190613b08565b90505f80831480612cfd57505f82145b15612d0a57505050612ef4565b5f1515600e60019054906101000a900460ff16151503612d51576014600c54612d33919061405b565b831115612d4c576014600c54612d49919061405b565b92505b612d5d565b612d5a30610ea8565b92505b5f60028360155486612d6f919061405b565b612d7991906140c9565b612d8391906140c9565b90505f612d998286612fbb90919063ffffffff16565b90505f479050612da882613004565b5f612dbc8247612fbb90919063ffffffff16565b90505f612de687612dd860165485612ef690919063ffffffff16565b612f6d90919063ffffffff16565b90505f8183612df591906140f9565b90505f6015819055505f6016819055505f86118015612e1357505f81115b15612e6057612e228682613237565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051612e5793929190614194565b60405180910390a15b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612ea590613943565b5f6040518083038185875af1925050503d805f8114612edf576040519150601f19603f3d011682016040523d82523d5f602084013e612ee4565b606091505b5050809750505050505050505050505b565b5f808303612f06575f9050612f67565b5f8284612f13919061405b565b9050828482612f2291906140c9565b14612f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5990614239565b60405180910390fd5b809150505b92915050565b5f612fae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061330e565b905092915050565b505050565b5f612ffc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ea565b905092915050565b5f600267ffffffffffffffff8111156130205761301f614257565b5b60405190808252806020026020018201604052801561304e5781602001602082028036833780820191505090505b50905030815f8151811061306557613064614284565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613108573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061312c91906142c5565b816001815181106131405761313f614284565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131a5307f000000000000000000000000000000000000000000000000000000000000000084611e07565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016132069594939291906143a7565b5f604051808303815f87803b15801561321d575f80fd5b505af115801561322f573d5f803e3d5ffd5b505050505050565b613262307f000000000000000000000000000000000000000000000000000000000000000084611e07565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016132c696959493929190613bdc565b60606040518083038185885af11580156132e2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906133079190613c4f565b5050505050565b5f8083118290613354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334b91906133f9565b60405180910390fd5b505f838561336291906140c9565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133a657808201518184015260208101905061338b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6133cb8261336f565b6133d58185613379565b93506133e5818560208601613389565b6133ee816133b1565b840191505092915050565b5f6020820190508181035f83015261341181846133c1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134468261341d565b9050919050565b6134568161343c565b8114613460575f80fd5b50565b5f813590506134718161344d565b92915050565b5f819050919050565b61348981613477565b8114613493575f80fd5b50565b5f813590506134a481613480565b92915050565b5f80604083850312156134c0576134bf613419565b5b5f6134cd85828601613463565b92505060206134de85828601613496565b9150509250929050565b5f8115159050919050565b6134fc816134e8565b82525050565b5f6020820190506135155f8301846134f3565b92915050565b5f602082840312156135305761352f613419565b5b5f61353d84828501613463565b91505092915050565b5f819050919050565b5f61356961356461355f8461341d565b613546565b61341d565b9050919050565b5f61357a8261354f565b9050919050565b5f61358b82613570565b9050919050565b61359b81613581565b82525050565b5f6020820190506135b45f830184613592565b92915050565b6135c381613477565b82525050565b5f6020820190506135dc5f8301846135ba565b92915050565b5f805f606084860312156135f9576135f8613419565b5b5f61360686828701613463565b935050602061361786828701613463565b925050604061362886828701613496565b9150509250925092565b5f60ff82169050919050565b61364781613632565b82525050565b5f6020820190506136605f83018461363e565b92915050565b61366f8161343c565b82525050565b5f6020820190506136885f830184613666565b92915050565b613697816134e8565b81146136a1575f80fd5b50565b5f813590506136b28161368e565b92915050565b5f80604083850312156136ce576136cd613419565b5b5f6136db85828601613463565b92505060206136ec858286016136a4565b9150509250929050565b5f805f806080858703121561370e5761370d613419565b5b5f61371b87828801613496565b945050602061372c87828801613496565b935050604061373d87828801613496565b925050606061374e87828801613496565b91505092959194509250565b5f6020828403121561376f5761376e613419565b5b5f61377c848285016136a4565b91505092915050565b5f806040838503121561379b5761379a613419565b5b5f6137a885828601613463565b92505060206137b985828601613463565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061380757607f821691505b60208210810361381a576138196137c3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613854602083613379565b915061385f82613820565b602082019050919050565b5f6020820190508181035f83015261388181613848565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138e2602283613379565b91506138ed82613888565b604082019050919050565b5f6020820190508181035f83015261390f816138d6565b9050919050565b5f81905092915050565b50565b5f61392e5f83613916565b915061393982613920565b5f82019050919050565b5f61394d82613923565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f61398b601b83613379565b915061399682613957565b602082019050919050565b5f6020820190508181035f8301526139b88161397f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613a19603983613379565b9150613a24826139bf565b604082019050919050565b5f6020820190508181035f830152613a4681613a0d565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613aa7602483613379565b9150613ab282613a4d565b604082019050919050565b5f6020820190508181035f830152613ad481613a9b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b1282613477565b9150613b1d83613477565b9250828201905080821115613b3557613b34613adb565b5b92915050565b7f5461782063616e6e6f7420626520686967686572207468656e203330250000005f82015250565b5f613b6f601d83613379565b9150613b7a82613b3b565b602082019050919050565b5f6020820190508181035f830152613b9c81613b63565b9050919050565b5f819050919050565b5f613bc6613bc1613bbc84613ba3565b613546565b613477565b9050919050565b613bd681613bac565b82525050565b5f60c082019050613bef5f830189613666565b613bfc60208301886135ba565b613c096040830187613bcd565b613c166060830186613bcd565b613c236080830185613666565b613c3060a08301846135ba565b979650505050505050565b5f81519050613c4981613480565b92915050565b5f805f60608486031215613c6657613c65613419565b5b5f613c7386828701613c3b565b9350506020613c8486828701613c3b565b9250506040613c9586828701613c3b565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613cf9602483613379565b9150613d0482613c9f565b604082019050919050565b5f6020820190508181035f830152613d2681613ced565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d87602283613379565b9150613d9282613d2d565b604082019050919050565b5f6020820190508181035f830152613db481613d7b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e15602583613379565b9150613e2082613dbb565b604082019050919050565b5f6020820190508181035f830152613e4281613e09565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ea3602383613379565b9150613eae82613e49565b604082019050919050565b5f6020820190508181035f830152613ed081613e97565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613f31603583613379565b9150613f3c82613ed7565b604082019050919050565b5f6020820190508181035f830152613f5e81613f25565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613f99601383613379565b9150613fa482613f65565b602082019050919050565b5f6020820190508181035f830152613fc681613f8d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614027603683613379565b915061403282613fcd565b604082019050919050565b5f6020820190508181035f8301526140548161401b565b9050919050565b5f61406582613477565b915061407083613477565b925082820261407e81613477565b9150828204841483151761409557614094613adb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140d382613477565b91506140de83613477565b9250826140ee576140ed61409c565b5b828204905092915050565b5f61410382613477565b915061410e83613477565b925082820390508181111561412657614125613adb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614160601b83613379565b915061416b8261412c565b602082019050919050565b5f6020820190508181035f83015261418d81614154565b9050919050565b5f6060820190506141a75f8301866135ba565b6141b460208301856135ba565b6141c160408301846135ba565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614223602183613379565b915061422e826141c9565b604082019050919050565b5f6020820190508181035f83015261425081614217565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506142bf8161344d565b92915050565b5f602082840312156142da576142d9613419565b5b5f6142e7848285016142b1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6143228161343c565b82525050565b5f6143338383614319565b60208301905092915050565b5f602082019050919050565b5f614355826142f0565b61435f81856142fa565b935061436a8361430a565b805f5b8381101561439a5781516143818882614328565b975061438c8361433f565b92505060018101905061436d565b5085935050505092915050565b5f60a0820190506143ba5f8301886135ba565b6143c76020830187613bcd565b81810360408301526143d9818661434b565b90506143e86060830185613666565b6143f560808301846135ba565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220571e88dd334ff0c1c871b023c5a076c4f58422095c252284c57aeb8b4c3df52164736f6c63430008140033
Deployed Bytecode
0x60806040526004361061025f575f3560e01c80637571336a11610143578063ab2f65ee116100b5578063c024666811610079578063c0246668146108d6578063c3f70b52146108fe578063c408c24514610928578063dd62ed3e1461093e578063df6f93be1461097a578063f2fde38b146109a457610266565b8063ab2f65ee146107f6578063b62496f51461081e578063b69ef8a81461085a578063b7c0375f14610884578063be857504146108ac57610266565b80639a7a23d6116101075780639a7a23d6146106ee5780639ee2e924146107165780639fccce321461072c578063a457c2d714610756578063a9059cbb14610792578063aa8ae02d146107ce57610266565b80637571336a1461062057806385033762146106485780638da5cb5b14610670578063945674fe1461069a57806395d89b41146106c457610266565b806323b872dd116101dc57806349bd5a5e116101a057806349bd5a5e146105145780634fbee1931461053e5780635de0f2a01461057a5780636c7e15c9146105a457806370a08231146105ce578063715018a61461060a57610266565b806323b872dd1461041e578063313ce5671461045a578063395093511461048457806346469afb146104c057806348d79155146104ea57610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631a8145bb146103a05780631bff7898146103ca57806322eb6631146103f457610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109cc565b60405161028b91906133f9565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906134aa565b610a5c565b6040516102c79190613502565b60405180910390f35b3480156102db575f80fd5b506102e4610a79565b6040516102f19190613502565b60405180910390f35b348015610305575f80fd5b5061030e610a8b565b005b34801561031b575f80fd5b506103366004803603810190610331919061351b565b610c34565b6040516103439190613502565b60405180910390f35b348015610357575f80fd5b50610360610c51565b60405161036d91906135a1565b60405180910390f35b348015610381575f80fd5b5061038a610c75565b60405161039791906135c9565b60405180910390f35b3480156103ab575f80fd5b506103b4610c7e565b6040516103c191906135c9565b60405180910390f35b3480156103d5575f80fd5b506103de610c84565b6040516103eb91906135c9565b60405180910390f35b3480156103ff575f80fd5b50610408610c8a565b60405161041591906135c9565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f91906135e2565b610c90565b6040516104519190613502565b60405180910390f35b348015610465575f80fd5b5061046e610d64565b60405161047b919061364d565b60405180910390f35b34801561048f575f80fd5b506104aa60048036038101906104a591906134aa565b610d6c565b6040516104b79190613502565b60405180910390f35b3480156104cb575f80fd5b506104d4610e1a565b6040516104e191906135c9565b60405180910390f35b3480156104f5575f80fd5b506104fe610e20565b60405161050b91906135c9565b60405180910390f35b34801561051f575f80fd5b50610528610e26565b6040516105359190613675565b60405180910390f35b348015610549575f80fd5b50610564600480360381019061055f919061351b565b610e4a565b6040516105719190613502565b60405180910390f35b348015610585575f80fd5b5061058e610e9c565b60405161059b91906135c9565b60405180910390f35b3480156105af575f80fd5b506105b8610ea2565b6040516105c591906135c9565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef919061351b565b610ea8565b60405161060191906135c9565b60405180910390f35b348015610615575f80fd5b5061061e610eed565b005b34801561062b575f80fd5b50610646600480360381019061064191906136b8565b611040565b005b348015610653575f80fd5b5061066e6004803603810190610669919061351b565b61112e565b005b34801561067b575f80fd5b50610684611282565b6040516106919190613675565b60405180910390f35b3480156106a5575f80fd5b506106ae6112aa565b6040516106bb9190613502565b60405180910390f35b3480156106cf575f80fd5b506106d86112bd565b6040516106e591906133f9565b60405180910390f35b3480156106f9575f80fd5b50610714600480360381019061070f91906136b8565b61134d565b005b348015610721575f80fd5b5061072a61147f565b005b348015610737575f80fd5b50610740611592565b60405161074d91906135c9565b60405180910390f35b348015610761575f80fd5b5061077c600480360381019061077791906134aa565b611598565b6040516107899190613502565b60405180910390f35b34801561079d575f80fd5b506107b860048036038101906107b391906134aa565b611660565b6040516107c59190613502565b60405180910390f35b3480156107d9575f80fd5b506107f460048036038101906107ef91906136f6565b61167d565b005b348015610801575f80fd5b5061081c6004803603810190610817919061375a565b6117b6565b005b348015610829575f80fd5b50610844600480360381019061083f919061351b565b611868565b6040516108519190613502565b60405180910390f35b348015610865575f80fd5b5061086e611885565b60405161087b91906135c9565b60405180910390f35b34801561088f575f80fd5b506108aa60048036038101906108a5919061375a565b61188b565b005b3480156108b7575f80fd5b506108c061193e565b6040516108cd91906135c9565b60405180910390f35b3480156108e1575f80fd5b506108fc60048036038101906108f791906136b8565b611944565b005b348015610909575f80fd5b50610912611a80565b60405161091f91906135c9565b60405180910390f35b348015610933575f80fd5b5061093c611a86565b005b348015610949575f80fd5b50610964600480360381019061095f9190613785565b611c24565b60405161097191906135c9565b60405180910390f35b348015610985575f80fd5b5061098e611ca6565b60405161099b91906135c9565b60405180910390f35b3480156109af575f80fd5b506109ca60048036038101906109c5919061351b565b611cac565b005b6060600380546109db906137f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a07906137f0565b8015610a525780601f10610a2957610100808354040283529160200191610a52565b820191905f5260205f20905b815481529060010190602001808311610a3557829003601f168201915b5050505050905090565b5f610a6f610a68611e00565b8484611e07565b6001905092915050565b600e5f9054906101000a900460ff1681565b610a93611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b189061386a565b60405180910390fd5b5f4790505f8111610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e906138f8565b60405180910390fd5b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610bad90613943565b5f6040518083038185875af1925050503d805f8114610be7576040519150601f19603f3d011682016040523d82523d5f602084013e610bec565b606091505b5050905080610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c27906139a1565b60405180910390fd5b5050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b60155481565b60125481565b60135481565b5f610c9c848484611fca565b610d5984610ca8611e00565b610d54856040518060600160405280602881526020016144266028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d0b611e00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ea9092919063ffffffff16565b611e07565b600190509392505050565b5f6012905090565b5f610e10610d78611e00565b84610e0b8560015f610d88611e00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461294c90919063ffffffff16565b611e07565b6001905092915050565b600f5481565b600d5481565b7f0000000000000000000000001c99c92a7f7695188f578aee1a0610abeb5f430381565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600c5481565b60105481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ef5611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a9061386a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611048611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061386a565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611136611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb9061386a565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60019054906101000a900460ff1681565b6060600480546112cc906137f0565b80601f01602080910402602001604051908101604052809291908181526020018280546112f8906137f0565b80156113435780601f1061131a57610100808354040283529160200191611343565b820191905f5260205f20905b81548152906001019060200180831161132657829003601f168201915b5050505050905090565b611355611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da9061386a565b60405180910390fd5b7f0000000000000000000000001c99c92a7f7695188f578aee1a0610abeb5f430373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890613a2f565b60405180910390fd5b61147b82826129a9565b5050565b611487611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c9061386a565b60405180910390fd5b5f61151f30610ea8565b90505f8111611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90613abd565b60405180910390fd5b61158f30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611fca565b50565b60165481565b5f6116566115a4611e00565b846116518560405180606001604052806025815260200161444e6025913960015f6115cd611e00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ea9092919063ffffffff16565b611e07565b6001905092915050565b5f61167361166c611e00565b8484611fca565b6001905092915050565b611685611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a9061386a565b60405180910390fd5b83601081905550816011819055506011546010546117319190613b08565b600f8190555082601381905550806014819055506014546013546117559190613b08565b601281905550601e600f54111580156117715750601e60125411155b6117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a790613b85565b60405180910390fd5b50505050565b6117be611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118439061386a565b60405180910390fd5b80600e5f6101000a81548160ff02191690831515021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60095481565b611893611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611921576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119189061386a565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b60145481565b61194c611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d19061386a565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a749190613502565b60405180910390a25050565b600b5481565b611a8e611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b139061386a565b60405180910390fd5b5f4790505f611b2a30610ea8565b9050611b57307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83611e07565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611bdc96959493929190613bdc565b60606040518083038185885af1158015611bf8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c1d9190613c4f565b5050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b611cb4611e00565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d399061386a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90613d0f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90613d9d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbd91906135c9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90613e2b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613eb9565b60405180910390fd5b5f81036120bd576120b883835f612a47565b6128e5565b600e5f9054906101000a900460ff16156124b1576120d9611282565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121475750612117611282565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561217f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121d1575060085f9054906101000a900460ff16155b156124b057601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612273575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561231a57600b548111156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490613f47565b60405180910390fd5b600d546122c983610ea8565b826122d49190613b08565b1115612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230c90613faf565b60405180910390fd5b6124af565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156123b7575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561240657600b54811115612401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f89061403d565b60405180910390fd5b6124ae565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166124ad57600d5461246083610ea8565b8261246b9190613b08565b11156124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a390613faf565b60405180910390fd5b5b5b5b5b5b5f6124bb30610ea8565b90505f600c5482101590508080156124df575060085f9054906101000a900460ff16155b80156125325750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612585575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156125d8575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561261957600160085f6101000a81548160ff0219169083151502179055506125ff612cd0565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126c7575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156126d0575f90505b5f81156128d557601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561272e57505f601254115b156127c65761275b606461274d60125488612ef690919063ffffffff16565b612f6d90919063ffffffff16565b90506012546014548261276e919061405b565b61277891906140c9565b60155f8282546127889190613b08565b92505081905550601254601354826127a0919061405b565b6127aa91906140c9565b60165f8282546127ba9190613b08565b925050819055506128b2565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561281d57505f600f54115b156128b15761284a606461283c600f5488612ef690919063ffffffff16565b612f6d90919063ffffffff16565b9050600f546011548261285d919061405b565b61286791906140c9565b60155f8282546128779190613b08565b92505081905550600f546010548261288f919061405b565b61289991906140c9565b60165f8282546128a99190613b08565b925050819055505b5b5f8111156128c6576128c5873083612a47565b5b80856128d291906140f9565b94505b6128e0878787612a47565b505050505b505050565b5f838311158290612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292891906133f9565b60405180910390fd5b505f838561293f91906140f9565b9050809150509392505050565b5f80828461295a9190613b08565b90508381101561299f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299690614176565b60405180910390fd5b8091505092915050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90613e2b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1a90613eb9565b60405180910390fd5b612b2e838383612fb6565b612b9781604051806060016040528060268152602001614400602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ea9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c26815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461294c90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cc391906135c9565b60405180910390a3505050565b5f612cda30610ea8565b90505f601654601554612ced9190613b08565b90505f80831480612cfd57505f82145b15612d0a57505050612ef4565b5f1515600e60019054906101000a900460ff16151503612d51576014600c54612d33919061405b565b831115612d4c576014600c54612d49919061405b565b92505b612d5d565b612d5a30610ea8565b92505b5f60028360155486612d6f919061405b565b612d7991906140c9565b612d8391906140c9565b90505f612d998286612fbb90919063ffffffff16565b90505f479050612da882613004565b5f612dbc8247612fbb90919063ffffffff16565b90505f612de687612dd860165485612ef690919063ffffffff16565b612f6d90919063ffffffff16565b90505f8183612df591906140f9565b90505f6015819055505f6016819055505f86118015612e1357505f81115b15612e6057612e228682613237565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051612e5793929190614194565b60405180910390a15b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612ea590613943565b5f6040518083038185875af1925050503d805f8114612edf576040519150601f19603f3d011682016040523d82523d5f602084013e612ee4565b606091505b5050809750505050505050505050505b565b5f808303612f06575f9050612f67565b5f8284612f13919061405b565b9050828482612f2291906140c9565b14612f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5990614239565b60405180910390fd5b809150505b92915050565b5f612fae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061330e565b905092915050565b505050565b5f612ffc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ea565b905092915050565b5f600267ffffffffffffffff8111156130205761301f614257565b5b60405190808252806020026020018201604052801561304e5781602001602082028036833780820191505090505b50905030815f8151811061306557613064614284565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613108573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061312c91906142c5565b816001815181106131405761313f614284565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131a5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e07565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016132069594939291906143a7565b5f604051808303815f87803b15801561321d575f80fd5b505af115801561322f573d5f803e3d5ffd5b505050505050565b613262307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e07565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016132c696959493929190613bdc565b60606040518083038185885af11580156132e2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906133079190613c4f565b5050505050565b5f8083118290613354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334b91906133f9565b60405180910390fd5b505f838561336291906140c9565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133a657808201518184015260208101905061338b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6133cb8261336f565b6133d58185613379565b93506133e5818560208601613389565b6133ee816133b1565b840191505092915050565b5f6020820190508181035f83015261341181846133c1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134468261341d565b9050919050565b6134568161343c565b8114613460575f80fd5b50565b5f813590506134718161344d565b92915050565b5f819050919050565b61348981613477565b8114613493575f80fd5b50565b5f813590506134a481613480565b92915050565b5f80604083850312156134c0576134bf613419565b5b5f6134cd85828601613463565b92505060206134de85828601613496565b9150509250929050565b5f8115159050919050565b6134fc816134e8565b82525050565b5f6020820190506135155f8301846134f3565b92915050565b5f602082840312156135305761352f613419565b5b5f61353d84828501613463565b91505092915050565b5f819050919050565b5f61356961356461355f8461341d565b613546565b61341d565b9050919050565b5f61357a8261354f565b9050919050565b5f61358b82613570565b9050919050565b61359b81613581565b82525050565b5f6020820190506135b45f830184613592565b92915050565b6135c381613477565b82525050565b5f6020820190506135dc5f8301846135ba565b92915050565b5f805f606084860312156135f9576135f8613419565b5b5f61360686828701613463565b935050602061361786828701613463565b925050604061362886828701613496565b9150509250925092565b5f60ff82169050919050565b61364781613632565b82525050565b5f6020820190506136605f83018461363e565b92915050565b61366f8161343c565b82525050565b5f6020820190506136885f830184613666565b92915050565b613697816134e8565b81146136a1575f80fd5b50565b5f813590506136b28161368e565b92915050565b5f80604083850312156136ce576136cd613419565b5b5f6136db85828601613463565b92505060206136ec858286016136a4565b9150509250929050565b5f805f806080858703121561370e5761370d613419565b5b5f61371b87828801613496565b945050602061372c87828801613496565b935050604061373d87828801613496565b925050606061374e87828801613496565b91505092959194509250565b5f6020828403121561376f5761376e613419565b5b5f61377c848285016136a4565b91505092915050565b5f806040838503121561379b5761379a613419565b5b5f6137a885828601613463565b92505060206137b985828601613463565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061380757607f821691505b60208210810361381a576138196137c3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613854602083613379565b915061385f82613820565b602082019050919050565b5f6020820190508181035f83015261388181613848565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138e2602283613379565b91506138ed82613888565b604082019050919050565b5f6020820190508181035f83015261390f816138d6565b9050919050565b5f81905092915050565b50565b5f61392e5f83613916565b915061393982613920565b5f82019050919050565b5f61394d82613923565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f61398b601b83613379565b915061399682613957565b602082019050919050565b5f6020820190508181035f8301526139b88161397f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613a19603983613379565b9150613a24826139bf565b604082019050919050565b5f6020820190508181035f830152613a4681613a0d565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613aa7602483613379565b9150613ab282613a4d565b604082019050919050565b5f6020820190508181035f830152613ad481613a9b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b1282613477565b9150613b1d83613477565b9250828201905080821115613b3557613b34613adb565b5b92915050565b7f5461782063616e6e6f7420626520686967686572207468656e203330250000005f82015250565b5f613b6f601d83613379565b9150613b7a82613b3b565b602082019050919050565b5f6020820190508181035f830152613b9c81613b63565b9050919050565b5f819050919050565b5f613bc6613bc1613bbc84613ba3565b613546565b613477565b9050919050565b613bd681613bac565b82525050565b5f60c082019050613bef5f830189613666565b613bfc60208301886135ba565b613c096040830187613bcd565b613c166060830186613bcd565b613c236080830185613666565b613c3060a08301846135ba565b979650505050505050565b5f81519050613c4981613480565b92915050565b5f805f60608486031215613c6657613c65613419565b5b5f613c7386828701613c3b565b9350506020613c8486828701613c3b565b9250506040613c9586828701613c3b565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613cf9602483613379565b9150613d0482613c9f565b604082019050919050565b5f6020820190508181035f830152613d2681613ced565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d87602283613379565b9150613d9282613d2d565b604082019050919050565b5f6020820190508181035f830152613db481613d7b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e15602583613379565b9150613e2082613dbb565b604082019050919050565b5f6020820190508181035f830152613e4281613e09565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ea3602383613379565b9150613eae82613e49565b604082019050919050565b5f6020820190508181035f830152613ed081613e97565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613f31603583613379565b9150613f3c82613ed7565b604082019050919050565b5f6020820190508181035f830152613f5e81613f25565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613f99601383613379565b9150613fa482613f65565b602082019050919050565b5f6020820190508181035f830152613fc681613f8d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614027603683613379565b915061403282613fcd565b604082019050919050565b5f6020820190508181035f8301526140548161401b565b9050919050565b5f61406582613477565b915061407083613477565b925082820261407e81613477565b9150828204841483151761409557614094613adb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140d382613477565b91506140de83613477565b9250826140ee576140ed61409c565b5b828204905092915050565b5f61410382613477565b915061410e83613477565b925082820390508181111561412657614125613adb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614160601b83613379565b915061416b8261412c565b602082019050919050565b5f6020820190508181035f83015261418d81614154565b9050919050565b5f6060820190506141a75f8301866135ba565b6141b460208301856135ba565b6141c160408301846135ba565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614223602183613379565b915061422e826141c9565b604082019050919050565b5f6020820190508181035f83015261425081614217565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506142bf8161344d565b92915050565b5f602082840312156142da576142d9613419565b5b5f6142e7848285016142b1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6143228161343c565b82525050565b5f6143338383614319565b60208301905092915050565b5f602082019050919050565b5f614355826142f0565b61435f81856142fa565b935061436a8361430a565b805f5b8381101561439a5781516143818882614328565b975061438c8361433f565b92505060018101905061436d565b5085935050505092915050565b5f60a0820190506143ba5f8301886135ba565b6143c76020830187613bcd565b81810360408301526143d9818661434b565b90506143e86060830185613666565b6143f560808301846135ba565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220571e88dd334ff0c1c871b023c5a076c4f58422095c252284c57aeb8b4c3df52164736f6c63430008140033
Deployed Bytecode Sourcemap
17501:12543:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4764:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5678:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17969:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21917:311;;;;;;;;;;;;;:::i;:::-;;18542:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17650:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5085:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18251:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18150:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18184:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5855:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4984:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6218:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18052:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17928:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17708:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24174:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17886:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18085:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5201:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10745:148;;;;;;;;;;;;;:::i;:::-;;22714:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24000:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10531:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18006:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4872:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23549:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22236:256;;;;;;;;;;;;;:::i;:::-;;18291:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6444:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5336:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22870:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22500:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18765:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17786:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22596:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18216:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23358:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17850:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21372:537;;;;;;;;;;;;;:::i;:::-;;5519:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18116:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10901:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4764:100;4818:13;4851:5;4844:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4764:100;:::o;5678:169::-;5761:4;5778:39;5787:12;:10;:12::i;:::-;5801:7;5810:6;5778:8;:39::i;:::-;5835:4;5828:11;;5678:169;;;;:::o;17969:30::-;;;;;;;;;;;;;:::o;21917:311::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21973:18:::1;21994:21;21973:42;;22047:1;22034:10;:14;22026:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22099:12;22124:9;;;;;;;;;;;22116:23;;22147:10;22116:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22098:64;;;22181:7;22173:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21962:266;;21917:311::o:0;18542:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17650:51::-;;;:::o;5085:108::-;5146:7;5173:12;;5166:19;;5085:108;:::o;18251:33::-;;;;:::o;18150:27::-;;;;:::o;18184:25::-;;;;:::o;5855:355::-;5995:4;6012:36;6022:6;6030:9;6041:6;6012:9;:36::i;:::-;6059:121;6068:6;6076:12;:10;:12::i;:::-;6090:89;6128:6;6090:89;;;;;;;;;;;;;;;;;:11;:19;6102:6;6090:19;;;;;;;;;;;;;;;:33;6110:12;:10;:12::i;:::-;6090:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6059:8;:121::i;:::-;6198:4;6191:11;;5855:355;;;;;:::o;4984:93::-;5042:5;5067:2;5060:9;;4984:93;:::o;6218:218::-;6306:4;6323:83;6332:12;:10;:12::i;:::-;6346:7;6355:50;6394:10;6355:11;:25;6367:12;:10;:12::i;:::-;6355:25;;;;;;;;;;;;;;;:34;6381:7;6355:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6323:8;:83::i;:::-;6424:4;6417:11;;6218:218;;;;:::o;18052:26::-;;;;:::o;17928:31::-;;;;:::o;17708:38::-;;;:::o;24174:125::-;24239:4;24263:19;:28;24283:7;24263:28;;;;;;;;;;;;;;;;;;;;;;;;;24256:35;;24174:125;;;:::o;17886:35::-;;;;:::o;18085:24::-;;;;:::o;5201:127::-;5275:7;5302:9;:18;5312:7;5302:18;;;;;;;;;;;;;;;;5295:25;;5201:127;;;:::o;10745:148::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10852:1:::1;10815:40;;10836:6;;;;;;;;;;;10815:40;;;;;;;;;;;;10883:1;10866:6;;:19;;;;;;;;;;;;;;;;;;10745:148::o:0;22714:144::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22846:4:::1;22804:31;:39;22836:6;22804:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22714:144:::0;;:::o;24000:166::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24113:9:::1;;;;;;;;;;;24082:41;;24099:12;24082:41;;;;;;;;;;;;24146:12;24134:9;;:24;;;;;;;;;;;;;;;;;;24000:166:::0;:::o;10531:79::-;10569:7;10596:6;;;;;;;;;;;10589:13;;10531:79;:::o;18006:37::-;;;;;;;;;;;;;:::o;4872:104::-;4928:13;4961:7;4954:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4872:104;:::o;23549:245::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23656:13:::1;23648:21;;:4;:21;;::::0;23640:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23745:41;23774:4;23780:5;23745:28;:41::i;:::-;23549:245:::0;;:::o;22236:256::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22301:20:::1;22324:24;22342:4;22324:9;:24::i;:::-;22301:47;;22382:1;22367:12;:16;22359:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22435:49;22453:4;22460:9;;;;;;;;;;;22471:12;22435:9;:49::i;:::-;22290:202;22236:256::o:0;18291:27::-;;;;:::o;6444:269::-;6537:4;6554:129;6563:12;:10;:12::i;:::-;6577:7;6586:96;6625:15;6586:96;;;;;;;;;;;;;;;;;:11;:25;6598:12;:10;:12::i;:::-;6586:25;;;;;;;;;;;;;;;:34;6612:7;6586:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6554:8;:129::i;:::-;6701:4;6694:11;;6444:269;;;;:::o;5336:175::-;5422:4;5439:42;5449:12;:10;:12::i;:::-;5463:9;5474:6;5439:9;:42::i;:::-;5499:4;5492:11;;5336:175;;;;:::o;22870:480::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23054:7:::1;23042:9;:19;;;;23084:7;23072:9;:19;;;;23128:9;;23116;;:21;;;;:::i;:::-;23102:11;:35;;;;23161:8;23148:10;:21;;;;23193:8;23180:10;:21;;;;23240:10;;23227;;:23;;;;:::i;:::-;23212:12;:38;;;;23284:2;23269:11;;:17;;:39;;;;;23306:2;23290:12;;:18;;23269:39;23261:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22870:480:::0;;;;:::o;22500:87::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22574:5:::1;22560:11;;:19;;;;;;;;;;;;;;;;;;22500:87:::0;:::o;18765:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17786:22::-;;;;:::o;22596:109::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22690:7:::1;22670:17;;:27;;;;;;;;;;;;;;;;;;22596:109:::0;:::o;18216:25::-;;;;:::o;23358:182::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23474:8:::1;23443:19;:28;23463:7;23443:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23514:7;23498:34;;;23523:8;23498:34;;;;;;:::i;:::-;;;;;;;;23358:182:::0;;:::o;17850:29::-;;;;:::o;21372:537::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21435:17:::1;21455:21;21435:41;;21487:19;21509:24;21527:4;21509:9;:24::i;:::-;21487:46;;21564:62;21581:4;21596:15;21614:11;21564:8;:62::i;:::-;21639:15;:31;;;21678:9;21711:4;21731:11;21761:1;21808::::0;21851:9:::1;;;;;;;;;;;21875:15;21639:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21414:495;;21372:537::o:0;5519:151::-;5608:7;5635:11;:18;5647:5;5635:18;;;;;;;;;;;;;;;:27;5654:7;5635:27;;;;;;;;;;;;;;;;5628:34;;5519:151;;;;:::o;18116:24::-;;;;:::o;10901:169::-;10668:12;:10;:12::i;:::-;10658:22;;:6;;;;;;;;;;;:22;;;10650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11025:8:::1;10996:38;;11017:6;;;;;;;;;;;10996:38;;;;;;;;;;;;11054:8;11045:6;;:17;;;;;;;;;;;;;;;;;;10901:169:::0;:::o;117:98::-;170:7;197:10;190:17;;117:98;:::o;8120:381::-;8273:1;8256:19;;:5;:19;;;8248:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8354:1;8335:21;;:7;:21;;;8327:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8439:6;8409:11;:18;8421:5;8409:18;;;;;;;;;;;;;;;:27;8428:7;8409:27;;;;;;;;;;;;;;;:36;;;;8477:7;8461:32;;8470:5;8461:32;;;8486:6;8461:32;;;;;;:::i;:::-;;;;;;;;8120:381;;;:::o;24308:3112::-;24456:1;24440:18;;:4;:18;;;24432:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24533:1;24519:16;;:2;:16;;;24511:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24600:1;24590:6;:11;24587:92;;24618:28;24634:4;24640:2;24644:1;24618:15;:28::i;:::-;24661:7;;24587:92;24695:11;;;;;;;;;;;24692:1083;;;24752:7;:5;:7::i;:::-;24744:15;;:4;:15;;;;:49;;;;;24786:7;:5;:7::i;:::-;24780:13;;:2;:13;;;;24744:49;:86;;;;;24828:1;24814:16;;:2;:16;;;;24744:86;:128;;;;;24865:6;24851:21;;:2;:21;;;;24744:128;:160;;;;;24894:10;;;;;;;;;;;24893:11;24744:160;24722:1042;;;24988:25;:31;25014:4;24988:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25024:31;:35;25056:2;25024:35;;;;;;;;;;;;;;;;;;;;;;;;;25023:36;24988:71;24984:765;;;25106:14;;25096:6;:24;;25088:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25239:16;;25222:13;25232:2;25222:9;:13::i;:::-;25213:6;:22;;;;:::i;:::-;:42;;25205:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;24984:765;;;25358:25;:29;25384:2;25358:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25392:31;:37;25424:4;25392:37;;;;;;;;;;;;;;;;;;;;;;;;;25391:38;25358:71;25354:395;;;25476:14;;25466:6;:24;;25458:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25354:395;;;25596:31;:35;25628:2;25596:35;;;;;;;;;;;;;;;;;;;;;;;;;25592:157;;25689:16;;25672:13;25682:2;25672:9;:13::i;:::-;25663:6;:22;;;;:::i;:::-;:42;;25655:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25592:157;25354:395;24984:765;24722:1042;24692:1083;25788:28;25819:24;25837:4;25819:9;:24::i;:::-;25788:55;;25857:12;25896:20;;25872;:44;;25857:59;;25948:7;:35;;;;;25973:10;;;;;;;;;;;25972:11;25948:35;:84;;;;;26001:25;:31;26027:4;26001:31;;;;;;;;;;;;;;;;;;;;;;;;;26000:32;25948:84;:127;;;;;26050:19;:25;26070:4;26050:25;;;;;;;;;;;;;;;;;;;;;;;;;26049:26;25948:127;:168;;;;;26093:19;:23;26113:2;26093:23;;;;;;;;;;;;;;;;;;;;;;;;;26092:24;25948:168;25930:306;;;26156:4;26143:10;;:17;;;;;;;;;;;;;;;;;;26178:10;:8;:10::i;:::-;26219:5;26206:10;;:18;;;;;;;;;;;;;;;;;;25930:306;26249:12;26265:10;;;;;;;;;;;26264:11;26249:26;;26377:19;:25;26397:4;26377:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26406:19;:23;26426:2;26406:23;;;;;;;;;;;;;;;;;;;;;;;;;26377:52;26374:99;;;26456:5;26446:15;;26374:99;26486:12;26590:7;26587:779;;;26641:25;:29;26667:2;26641:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;26689:1;26674:12;;:16;26641:49;26637:576;;;26717:33;26746:3;26717:24;26728:12;;26717:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26710:40;;26811:12;;26798:10;;26791:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26769:18;;:54;;;;;;;:::i;:::-;;;;;;;;26878:12;;26865:10;;26858:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26842:12;;:48;;;;;;;:::i;:::-;;;;;;;;26637:576;;;26951:25;:31;26977:4;26951:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27000:1;26986:11;;:15;26951:50;26948:265;;;27029:32;27057:3;27029:23;27040:11;;27029:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27022:39;;27121:11;;27109:9;;27102:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27080:18;;:52;;;;;;;:::i;:::-;;;;;;;;27186:11;;27174:9;;27167:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27151:12;;:46;;;;;;;:::i;:::-;;;;;;;;26948:265;26637:576;27240:1;27233:4;:8;27230:93;;;27265:42;27281:4;27295;27302;27265:15;:42::i;:::-;27230:93;27350:4;27340:14;;;;;:::i;:::-;;;26587:779;27379:33;27395:4;27401:2;27405:6;27379:15;:33::i;:::-;24421:2999;;;;24308:3112;;;;:::o;9008:193::-;9094:7;9127:1;9122;:6;;9130:12;9114:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9154:9;9170:1;9166;:5;;;;:::i;:::-;9154:17;;9192:1;9185:8;;;9008:193;;;;;:::o;8674:182::-;8732:7;8752:9;8768:1;8764;:5;;;;:::i;:::-;8752:17;;8793:1;8788;:6;;8780:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8847:1;8840:8;;;8674:182;;;;:::o;23803:189::-;23920:5;23886:25;:31;23912:4;23886:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23978:5;23944:40;;23972:4;23944:40;;;;;;;;;;;;23803:189;;:::o;6721:575::-;6879:1;6861:20;;:6;:20;;;6853:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6963:1;6942:23;;:9;:23;;;6934:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7019:47;7040:6;7048:9;7059:6;7019:20;:47::i;:::-;7100:71;7122:6;7100:71;;;;;;;;;;;;;;;;;:9;:17;7110:6;7100:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7080:9;:17;7090:6;7080:17;;;;;;;;;;;;;;;:91;;;;7205:32;7230:6;7205:9;:20;7215:9;7205:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7182:9;:20;7192:9;7182:20;;;;;;;;;;;;;;;:55;;;;7270:9;7253:35;;7262:6;7253:35;;;7281:6;7253:35;;;;;;:::i;:::-;;;;;;;;6721:575;;;:::o;28564:1477::-;28603:23;28629:24;28647:4;28629:9;:24::i;:::-;28603:50;;28664:25;28713:12;;28692:18;;:33;;;;:::i;:::-;28664:61;;28736:12;28784:1;28765:15;:20;:46;;;;28810:1;28789:17;:22;28765:46;28762:60;;;28814:7;;;;;28762:60;28859:5;28838:26;;:17;;;;;;;;;;;:26;;;28835:254;;28924:2;28901:20;;:25;;;;:::i;:::-;28883:15;:43;28880:125;;;28987:2;28964:20;;:25;;;;:::i;:::-;28946:43;;28880:125;28835:254;;;29053:24;29071:4;29053:9;:24::i;:::-;29035:42;;28835:254;29161:23;29246:1;29226:17;29205:18;;29187:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;29161:86;;29258:26;29287:36;29307:15;29287;:19;;:36;;;;:::i;:::-;29258:65;;29337:25;29365:21;29337:49;;29400:36;29417:18;29400:16;:36::i;:::-;29451:18;29472:44;29498:17;29472:21;:25;;:44;;;;:::i;:::-;29451:65;;29530:17;29550:51;29583:17;29550:28;29565:12;;29550:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;29530:71;;29612:23;29651:9;29638:10;:22;;;;:::i;:::-;29612:48;;29698:1;29677:18;:22;;;;29725:1;29710:12;:16;;;;29761:1;29743:15;:19;:42;;;;;29784:1;29766:15;:19;29743:42;29740:210;;;29801:46;29814:15;29831;29801:12;:46::i;:::-;29867:71;29882:18;29902:15;29919:18;;29867:71;;;;;;;;:::i;:::-;;;;;;;;29740:210;29984:9;;;;;;;;;;;29976:23;;30007:21;29976:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29963:70;;;;;28592:1449;;;;;;;;;28564:1477;:::o;9209:254::-;9267:7;9298:1;9293;:6;9289:47;;9323:1;9316:8;;;;9289:47;9349:9;9365:1;9361;:5;;;;:::i;:::-;9349:17;;9394:1;9389;9385;:5;;;;:::i;:::-;:10;9377:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9454:1;9447:8;;;9209:254;;;;;:::o;9471:132::-;9529:7;9556:39;9560:1;9563;9556:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9549:46;;9471:132;;;;:::o;8509:125::-;;;;:::o;8864:136::-;8922:7;8949:43;8953:1;8956;8949:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8942:50;;8864:136;;;;:::o;27429:597::-;27558:21;27596:1;27582:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27558:40;;27627:4;27609;27614:1;27609:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27653:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27643:4;27648:1;27643:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27689:62;27706:4;27721:15;27739:11;27689:8;:62::i;:::-;27791:15;:66;;;27872:11;27898:1;27942:4;27969;27989:15;27791:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27484:542;27429:597;:::o;28035:520::-;28183:62;28200:4;28215:15;28233:11;28183:8;:62::i;:::-;28289:15;:31;;;28328:9;28361:4;28381:11;28407:1;28450;28501:4;28521:15;28289:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28035:520;;:::o;9611:279::-;9697:7;9729:1;9725;:5;9732:12;9717:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9756:9;9772:1;9768;:5;;;;:::i;:::-;9756:17;;9881:1;9874:8;;;9611:279;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:86::-;5771:7;5811:4;5804:5;5800:16;5789:27;;5736:86;;;:::o;5828:112::-;5911:22;5927:5;5911:22;:::i;:::-;5906:3;5899:35;5828:112;;:::o;5946:214::-;6035:4;6073:2;6062:9;6058:18;6050:26;;6086:67;6150:1;6139:9;6135:17;6126:6;6086:67;:::i;:::-;5946:214;;;;:::o;6166:118::-;6253:24;6271:5;6253:24;:::i;:::-;6248:3;6241:37;6166:118;;:::o;6290:222::-;6383:4;6421:2;6410:9;6406:18;6398:26;;6434:71;6502:1;6491:9;6487:17;6478:6;6434:71;:::i;:::-;6290:222;;;;:::o;6518:116::-;6588:21;6603:5;6588:21;:::i;:::-;6581:5;6578:32;6568:60;;6624:1;6621;6614:12;6568:60;6518:116;:::o;6640:133::-;6683:5;6721:6;6708:20;6699:29;;6737:30;6761:5;6737:30;:::i;:::-;6640:133;;;;:::o;6779:468::-;6844:6;6852;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7027:1;7052:53;7097:7;7088:6;7077:9;7073:22;7052:53;:::i;:::-;7042:63;;6998:117;7154:2;7180:50;7222:7;7213:6;7202:9;7198:22;7180:50;:::i;:::-;7170:60;;7125:115;6779:468;;;;;:::o;7253:765::-;7339:6;7347;7355;7363;7412:3;7400:9;7391:7;7387:23;7383:33;7380:120;;;7419:79;;:::i;:::-;7380:120;7539:1;7564:53;7609:7;7600:6;7589:9;7585:22;7564:53;:::i;:::-;7554:63;;7510:117;7666:2;7692:53;7737:7;7728:6;7717:9;7713:22;7692:53;:::i;:::-;7682:63;;7637:118;7794:2;7820:53;7865:7;7856:6;7845:9;7841:22;7820:53;:::i;:::-;7810:63;;7765:118;7922:2;7948:53;7993:7;7984:6;7973:9;7969:22;7948:53;:::i;:::-;7938:63;;7893:118;7253:765;;;;;;;:::o;8024:323::-;8080:6;8129:2;8117:9;8108:7;8104:23;8100:32;8097:119;;;8135:79;;:::i;:::-;8097:119;8255:1;8280:50;8322:7;8313:6;8302:9;8298:22;8280:50;:::i;:::-;8270:60;;8226:114;8024:323;;;;:::o;8353:474::-;8421:6;8429;8478:2;8466:9;8457:7;8453:23;8449:32;8446:119;;;8484:79;;:::i;:::-;8446:119;8604:1;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8575:117;8731:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;:::i;:::-;8747:63;;8702:118;8353:474;;;;;:::o;8833:180::-;8881:77;8878:1;8871:88;8978:4;8975:1;8968:15;9002:4;8999:1;8992:15;9019:320;9063:6;9100:1;9094:4;9090:12;9080:22;;9147:1;9141:4;9137:12;9168:18;9158:81;;9224:4;9216:6;9212:17;9202:27;;9158:81;9286:2;9278:6;9275:14;9255:18;9252:38;9249:84;;9305:18;;:::i;:::-;9249:84;9070:269;9019:320;;;:::o;9345:182::-;9485:34;9481:1;9473:6;9469:14;9462:58;9345:182;:::o;9533:366::-;9675:3;9696:67;9760:2;9755:3;9696:67;:::i;:::-;9689:74;;9772:93;9861:3;9772:93;:::i;:::-;9890:2;9885:3;9881:12;9874:19;;9533:366;;;:::o;9905:419::-;10071:4;10109:2;10098:9;10094:18;10086:26;;10158:9;10152:4;10148:20;10144:1;10133:9;10129:17;10122:47;10186:131;10312:4;10186:131;:::i;:::-;10178:139;;9905:419;;;:::o;10330:221::-;10470:34;10466:1;10458:6;10454:14;10447:58;10539:4;10534:2;10526:6;10522:15;10515:29;10330:221;:::o;10557:366::-;10699:3;10720:67;10784:2;10779:3;10720:67;:::i;:::-;10713:74;;10796:93;10885:3;10796:93;:::i;:::-;10914:2;10909:3;10905:12;10898:19;;10557:366;;;:::o;10929:419::-;11095:4;11133:2;11122:9;11118:18;11110:26;;11182:9;11176:4;11172:20;11168:1;11157:9;11153:17;11146:47;11210:131;11336:4;11210:131;:::i;:::-;11202:139;;10929:419;;;:::o;11354:147::-;11455:11;11492:3;11477:18;;11354:147;;;;:::o;11507:114::-;;:::o;11627:398::-;11786:3;11807:83;11888:1;11883:3;11807:83;:::i;:::-;11800:90;;11899:93;11988:3;11899:93;:::i;:::-;12017:1;12012:3;12008:11;12001:18;;11627:398;;;:::o;12031:379::-;12215:3;12237:147;12380:3;12237:147;:::i;:::-;12230:154;;12401:3;12394:10;;12031:379;;;:::o;12416:177::-;12556:29;12552:1;12544:6;12540:14;12533:53;12416:177;:::o;12599:366::-;12741:3;12762:67;12826:2;12821:3;12762:67;:::i;:::-;12755:74;;12838:93;12927:3;12838:93;:::i;:::-;12956:2;12951:3;12947:12;12940:19;;12599:366;;;:::o;12971:419::-;13137:4;13175:2;13164:9;13160:18;13152:26;;13224:9;13218:4;13214:20;13210:1;13199:9;13195:17;13188:47;13252:131;13378:4;13252:131;:::i;:::-;13244:139;;12971:419;;;:::o;13396:244::-;13536:34;13532:1;13524:6;13520:14;13513:58;13605:27;13600:2;13592:6;13588:15;13581:52;13396:244;:::o;13646:366::-;13788:3;13809:67;13873:2;13868:3;13809:67;:::i;:::-;13802:74;;13885:93;13974:3;13885:93;:::i;:::-;14003:2;13998:3;13994:12;13987:19;;13646:366;;;:::o;14018:419::-;14184:4;14222:2;14211:9;14207:18;14199:26;;14271:9;14265:4;14261:20;14257:1;14246:9;14242:17;14235:47;14299:131;14425:4;14299:131;:::i;:::-;14291:139;;14018:419;;;:::o;14443:223::-;14583:34;14579:1;14571:6;14567:14;14560:58;14652:6;14647:2;14639:6;14635:15;14628:31;14443:223;:::o;14672:366::-;14814:3;14835:67;14899:2;14894:3;14835:67;:::i;:::-;14828:74;;14911:93;15000:3;14911:93;:::i;:::-;15029:2;15024:3;15020:12;15013:19;;14672:366;;;:::o;15044:419::-;15210:4;15248:2;15237:9;15233:18;15225:26;;15297:9;15291:4;15287:20;15283:1;15272:9;15268:17;15261:47;15325:131;15451:4;15325:131;:::i;:::-;15317:139;;15044:419;;;:::o;15469:180::-;15517:77;15514:1;15507:88;15614:4;15611:1;15604:15;15638:4;15635:1;15628:15;15655:191;15695:3;15714:20;15732:1;15714:20;:::i;:::-;15709:25;;15748:20;15766:1;15748:20;:::i;:::-;15743:25;;15791:1;15788;15784:9;15777:16;;15812:3;15809:1;15806:10;15803:36;;;15819:18;;:::i;:::-;15803:36;15655:191;;;;:::o;15852:179::-;15992:31;15988:1;15980:6;15976:14;15969:55;15852:179;:::o;16037:366::-;16179:3;16200:67;16264:2;16259:3;16200:67;:::i;:::-;16193:74;;16276:93;16365:3;16276:93;:::i;:::-;16394:2;16389:3;16385:12;16378:19;;16037:366;;;:::o;16409:419::-;16575:4;16613:2;16602:9;16598:18;16590:26;;16662:9;16656:4;16652:20;16648:1;16637:9;16633:17;16626:47;16690:131;16816:4;16690:131;:::i;:::-;16682:139;;16409:419;;;:::o;16834:85::-;16879:7;16908:5;16897:16;;16834:85;;;:::o;16925:158::-;16983:9;17016:61;17034:42;17043:32;17069:5;17043:32;:::i;:::-;17034:42;:::i;:::-;17016:61;:::i;:::-;17003:74;;16925:158;;;:::o;17089:147::-;17184:45;17223:5;17184:45;:::i;:::-;17179:3;17172:58;17089:147;;:::o;17242:807::-;17491:4;17529:3;17518:9;17514:19;17506:27;;17543:71;17611:1;17600:9;17596:17;17587:6;17543:71;:::i;:::-;17624:72;17692:2;17681:9;17677:18;17668:6;17624:72;:::i;:::-;17706:80;17782:2;17771:9;17767:18;17758:6;17706:80;:::i;:::-;17796;17872:2;17861:9;17857:18;17848:6;17796:80;:::i;:::-;17886:73;17954:3;17943:9;17939:19;17930:6;17886:73;:::i;:::-;17969;18037:3;18026:9;18022:19;18013:6;17969:73;:::i;:::-;17242:807;;;;;;;;;:::o;18055:143::-;18112:5;18143:6;18137:13;18128:22;;18159:33;18186:5;18159:33;:::i;:::-;18055:143;;;;:::o;18204:663::-;18292:6;18300;18308;18357:2;18345:9;18336:7;18332:23;18328:32;18325:119;;;18363:79;;:::i;:::-;18325:119;18483:1;18508:64;18564:7;18555:6;18544:9;18540:22;18508:64;:::i;:::-;18498:74;;18454:128;18621:2;18647:64;18703:7;18694:6;18683:9;18679:22;18647:64;:::i;:::-;18637:74;;18592:129;18760:2;18786:64;18842:7;18833:6;18822:9;18818:22;18786:64;:::i;:::-;18776:74;;18731:129;18204:663;;;;;:::o;18873:223::-;19013:34;19009:1;19001:6;18997:14;18990:58;19082:6;19077:2;19069:6;19065:15;19058:31;18873:223;:::o;19102:366::-;19244:3;19265:67;19329:2;19324:3;19265:67;:::i;:::-;19258:74;;19341:93;19430:3;19341:93;:::i;:::-;19459:2;19454:3;19450:12;19443:19;;19102:366;;;:::o;19474:419::-;19640:4;19678:2;19667:9;19663:18;19655:26;;19727:9;19721:4;19717:20;19713:1;19702:9;19698:17;19691:47;19755:131;19881:4;19755:131;:::i;:::-;19747:139;;19474:419;;;:::o;19899:221::-;20039:34;20035:1;20027:6;20023:14;20016:58;20108:4;20103:2;20095:6;20091:15;20084:29;19899:221;:::o;20126:366::-;20268:3;20289:67;20353:2;20348:3;20289:67;:::i;:::-;20282:74;;20365:93;20454:3;20365:93;:::i;:::-;20483:2;20478:3;20474:12;20467:19;;20126:366;;;:::o;20498:419::-;20664:4;20702:2;20691:9;20687:18;20679:26;;20751:9;20745:4;20741:20;20737:1;20726:9;20722:17;20715:47;20779:131;20905:4;20779:131;:::i;:::-;20771:139;;20498:419;;;:::o;20923:224::-;21063:34;21059:1;21051:6;21047:14;21040:58;21132:7;21127:2;21119:6;21115:15;21108:32;20923:224;:::o;21153:366::-;21295:3;21316:67;21380:2;21375:3;21316:67;:::i;:::-;21309:74;;21392:93;21481:3;21392:93;:::i;:::-;21510:2;21505:3;21501:12;21494:19;;21153:366;;;:::o;21525:419::-;21691:4;21729:2;21718:9;21714:18;21706:26;;21778:9;21772:4;21768:20;21764:1;21753:9;21749:17;21742:47;21806:131;21932:4;21806:131;:::i;:::-;21798:139;;21525:419;;;:::o;21950:222::-;22090:34;22086:1;22078:6;22074:14;22067:58;22159:5;22154:2;22146:6;22142:15;22135:30;21950:222;:::o;22178:366::-;22320:3;22341:67;22405:2;22400:3;22341:67;:::i;:::-;22334:74;;22417:93;22506:3;22417:93;:::i;:::-;22535:2;22530:3;22526:12;22519:19;;22178:366;;;:::o;22550:419::-;22716:4;22754:2;22743:9;22739:18;22731:26;;22803:9;22797:4;22793:20;22789:1;22778:9;22774:17;22767:47;22831:131;22957:4;22831:131;:::i;:::-;22823:139;;22550:419;;;:::o;22975:240::-;23115:34;23111:1;23103:6;23099:14;23092:58;23184:23;23179:2;23171:6;23167:15;23160:48;22975:240;:::o;23221:366::-;23363:3;23384:67;23448:2;23443:3;23384:67;:::i;:::-;23377:74;;23460:93;23549:3;23460:93;:::i;:::-;23578:2;23573:3;23569:12;23562:19;;23221:366;;;:::o;23593:419::-;23759:4;23797:2;23786:9;23782:18;23774:26;;23846:9;23840:4;23836:20;23832:1;23821:9;23817:17;23810:47;23874:131;24000:4;23874:131;:::i;:::-;23866:139;;23593:419;;;:::o;24018:169::-;24158:21;24154:1;24146:6;24142:14;24135:45;24018:169;:::o;24193:366::-;24335:3;24356:67;24420:2;24415:3;24356:67;:::i;:::-;24349:74;;24432:93;24521:3;24432:93;:::i;:::-;24550:2;24545:3;24541:12;24534:19;;24193:366;;;:::o;24565:419::-;24731:4;24769:2;24758:9;24754:18;24746:26;;24818:9;24812:4;24808:20;24804:1;24793:9;24789:17;24782:47;24846:131;24972:4;24846:131;:::i;:::-;24838:139;;24565:419;;;:::o;24990:241::-;25130:34;25126:1;25118:6;25114:14;25107:58;25199:24;25194:2;25186:6;25182:15;25175:49;24990:241;:::o;25237:366::-;25379:3;25400:67;25464:2;25459:3;25400:67;:::i;:::-;25393:74;;25476:93;25565:3;25476:93;:::i;:::-;25594:2;25589:3;25585:12;25578:19;;25237:366;;;:::o;25609:419::-;25775:4;25813:2;25802:9;25798:18;25790:26;;25862:9;25856:4;25852:20;25848:1;25837:9;25833:17;25826:47;25890:131;26016:4;25890:131;:::i;:::-;25882:139;;25609:419;;;:::o;26034:410::-;26074:7;26097:20;26115:1;26097:20;:::i;:::-;26092:25;;26131:20;26149:1;26131:20;:::i;:::-;26126:25;;26186:1;26183;26179:9;26208:30;26226:11;26208:30;:::i;:::-;26197:41;;26387:1;26378:7;26374:15;26371:1;26368:22;26348:1;26341:9;26321:83;26298:139;;26417:18;;:::i;:::-;26298:139;26082:362;26034:410;;;;:::o;26450:180::-;26498:77;26495:1;26488:88;26595:4;26592:1;26585:15;26619:4;26616:1;26609:15;26636:185;26676:1;26693:20;26711:1;26693:20;:::i;:::-;26688:25;;26727:20;26745:1;26727:20;:::i;:::-;26722:25;;26766:1;26756:35;;26771:18;;:::i;:::-;26756:35;26813:1;26810;26806:9;26801:14;;26636:185;;;;:::o;26827:194::-;26867:4;26887:20;26905:1;26887:20;:::i;:::-;26882:25;;26921:20;26939:1;26921:20;:::i;:::-;26916:25;;26965:1;26962;26958:9;26950:17;;26989:1;26983:4;26980:11;26977:37;;;26994:18;;:::i;:::-;26977:37;26827:194;;;;:::o;27027:177::-;27167:29;27163:1;27155:6;27151:14;27144:53;27027:177;:::o;27210:366::-;27352:3;27373:67;27437:2;27432:3;27373:67;:::i;:::-;27366:74;;27449:93;27538:3;27449:93;:::i;:::-;27567:2;27562:3;27558:12;27551:19;;27210:366;;;:::o;27582:419::-;27748:4;27786:2;27775:9;27771:18;27763:26;;27835:9;27829:4;27825:20;27821:1;27810:9;27806:17;27799:47;27863:131;27989:4;27863:131;:::i;:::-;27855:139;;27582:419;;;:::o;28007:442::-;28156:4;28194:2;28183:9;28179:18;28171:26;;28207:71;28275:1;28264:9;28260:17;28251:6;28207:71;:::i;:::-;28288:72;28356:2;28345:9;28341:18;28332:6;28288:72;:::i;:::-;28370;28438:2;28427:9;28423:18;28414:6;28370:72;:::i;:::-;28007:442;;;;;;:::o;28455:220::-;28595:34;28591:1;28583:6;28579:14;28572:58;28664:3;28659:2;28651:6;28647:15;28640:28;28455:220;:::o;28681:366::-;28823:3;28844:67;28908:2;28903:3;28844:67;:::i;:::-;28837:74;;28920:93;29009:3;28920:93;:::i;:::-;29038:2;29033:3;29029:12;29022:19;;28681:366;;;:::o;29053:419::-;29219:4;29257:2;29246:9;29242:18;29234:26;;29306:9;29300:4;29296:20;29292:1;29281:9;29277:17;29270:47;29334:131;29460:4;29334:131;:::i;:::-;29326:139;;29053:419;;;:::o;29478:180::-;29526:77;29523:1;29516:88;29623:4;29620:1;29613:15;29647:4;29644:1;29637:15;29664:180;29712:77;29709:1;29702:88;29809:4;29806:1;29799:15;29833:4;29830:1;29823:15;29850:143;29907:5;29938:6;29932:13;29923:22;;29954:33;29981:5;29954:33;:::i;:::-;29850:143;;;;:::o;29999:351::-;30069:6;30118:2;30106:9;30097:7;30093:23;30089:32;30086:119;;;30124:79;;:::i;:::-;30086:119;30244:1;30269:64;30325:7;30316:6;30305:9;30301:22;30269:64;:::i;:::-;30259:74;;30215:128;29999:351;;;;:::o;30356:114::-;30423:6;30457:5;30451:12;30441:22;;30356:114;;;:::o;30476:184::-;30575:11;30609:6;30604:3;30597:19;30649:4;30644:3;30640:14;30625:29;;30476:184;;;;:::o;30666:132::-;30733:4;30756:3;30748:11;;30786:4;30781:3;30777:14;30769:22;;30666:132;;;:::o;30804:108::-;30881:24;30899:5;30881:24;:::i;:::-;30876:3;30869:37;30804:108;;:::o;30918:179::-;30987:10;31008:46;31050:3;31042:6;31008:46;:::i;:::-;31086:4;31081:3;31077:14;31063:28;;30918:179;;;;:::o;31103:113::-;31173:4;31205;31200:3;31196:14;31188:22;;31103:113;;;:::o;31252:732::-;31371:3;31400:54;31448:5;31400:54;:::i;:::-;31470:86;31549:6;31544:3;31470:86;:::i;:::-;31463:93;;31580:56;31630:5;31580:56;:::i;:::-;31659:7;31690:1;31675:284;31700:6;31697:1;31694:13;31675:284;;;31776:6;31770:13;31803:63;31862:3;31847:13;31803:63;:::i;:::-;31796:70;;31889:60;31942:6;31889:60;:::i;:::-;31879:70;;31735:224;31722:1;31719;31715:9;31710:14;;31675:284;;;31679:14;31975:3;31968:10;;31376:608;;;31252:732;;;;:::o;31990:831::-;32253:4;32291:3;32280:9;32276:19;32268:27;;32305:71;32373:1;32362:9;32358:17;32349:6;32305:71;:::i;:::-;32386:80;32462:2;32451:9;32447:18;32438:6;32386:80;:::i;:::-;32513:9;32507:4;32503:20;32498:2;32487:9;32483:18;32476:48;32541:108;32644:4;32635:6;32541:108;:::i;:::-;32533:116;;32659:72;32727:2;32716:9;32712:18;32703:6;32659:72;:::i;:::-;32741:73;32809:3;32798:9;32794:19;32785:6;32741:73;:::i;:::-;31990:831;;;;;;;;:::o
Swarm Source
ipfs://571e88dd334ff0c1c871b023c5a076c4f58422095c252284c57aeb8b4c3df521
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.