ERC-20
Overview
Max Total Supply
300,000,000 Crow
Holders
38
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,686,380.355016927577771477 CrowValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CryptCrow
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-22 */ /** Don't forget, wisdom holds the key. telegram: https://t.me/cryptcroweth twitter: https://twitter.com/CryptCrowErc20 */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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 { 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); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } 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); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(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 += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, 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 {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract CryptCrow is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public devWallet; address public lpWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = true; bool public swapEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exlcude 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 LimitsRemoved(); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event devWalletUpdated( address indexed newWallet, address indexed oldWallet ); event lpWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("CryptCrow", "Crow") { 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 _buyMarketingFee = 25; uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 25; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 0; uint256 totalSupply = 300000000 * 1e18; maxTransactionAmount = (totalSupply * 2) / 100; maxWallet = (totalSupply * 2) / 100; swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(0x4582a71650F257Ba0e0E0c894c610b839000631e); devWallet = address(0x4582a71650F257Ba0e0E0c894c610b839000631e); lpWallet = msg.sender; // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(marketingWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(marketingWallet, true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; emit LimitsRemoved(); return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } 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 updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateLPWallet(address newLPWallet) external onlyOwner { emit lpWalletUpdated(newLPWallet, lpWallet); lpWallet = newLPWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); 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 (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // 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] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } 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 lpWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } // 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 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":"LimitsRemoved","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"lpWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","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":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600c5f6101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555034801562000060575f80fd5b506040518060400160405280600981526020017f437279707443726f7700000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f43726f77000000000000000000000000000000000000000000000000000000008152508160039081620000de919062000dbc565b508060049081620000f0919062000dbc565b50505062000113620001076200063060201b60201c565b6200063760201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013e816001620006fa60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000f05565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000248573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026e919062000f05565b6040518363ffffffff1660e01b81526004016200028d92919062000f46565b6020604051808303815f875af1158015620002aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d0919062000f05565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031860a0516001620006fa60201b60201c565b6200032d60a0516001620007e160201b60201c565b5f601990505f805f601990505f805f6af8277896582678ac000000905060646002826200035b919062000f9e565b62000367919062001015565b60098190555060646002826200037e919062000f9e565b6200038a919062001015565b600b81905550612710600582620003a2919062000f9e565b620003ae919062001015565b600a8190555086600e8190555085600f8190555084601081905550601054600f54600e54620003de91906200104c565b620003ea91906200104c565b600d819055508360128190555082601381905550816014819055506014546013546012546200041a91906200104c565b6200042691906200104c565b601181905550734582a71650f257ba0e0e0c894c610b839000631e60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734582a71650f257ba0e0e0c894c610b839000631e60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000536620005286200087f60201b60201c565b6001620008a760201b60201c565b62000549306001620008a760201b60201c565b6200055e61dead6001620008a760201b60201c565b6200059260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008a760201b60201c565b620005b4620005a66200087f60201b60201c565b6001620006fa60201b60201c565b620005c7306001620006fa60201b60201c565b620005dc61dead6001620006fa60201b60201c565b6200061060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006fa60201b60201c565b620006223382620009de60201b60201c565b5050505050505050620011d5565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200070a6200063060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007306200087f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000789576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078090620010e4565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008b76200063060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008dd6200087f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000936576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092d90620010e4565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d2919062001120565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a469062001189565b60405180910390fd5b62000a625f838362000b4e60201b60201c565b8060025f82825462000a7591906200104c565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000ac991906200104c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b2f9190620011ba565b60405180910390a362000b4a5f838362000b5360201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000bd457607f821691505b60208210810362000bea5762000be962000b8f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c11565b62000c5a868362000c11565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ca462000c9e62000c988462000c72565b62000c7b565b62000c72565b9050919050565b5f819050919050565b62000cbf8362000c84565b62000cd762000cce8262000cab565b84845462000c1d565b825550505050565b5f90565b62000ced62000cdf565b62000cfa81848462000cb4565b505050565b5b8181101562000d215762000d155f8262000ce3565b60018101905062000d00565b5050565b601f82111562000d705762000d3a8162000bf0565b62000d458462000c02565b8101602085101562000d55578190505b62000d6d62000d648562000c02565b83018262000cff565b50505b505050565b5f82821c905092915050565b5f62000d925f198460080262000d75565b1980831691505092915050565b5f62000dac838362000d81565b9150826002028217905092915050565b62000dc78262000b58565b67ffffffffffffffff81111562000de35762000de262000b62565b5b62000def825462000bbc565b62000dfc82828562000d25565b5f60209050601f83116001811462000e32575f841562000e1d578287015190505b62000e29858262000d9f565b86555062000e98565b601f19841662000e428662000bf0565b5f5b8281101562000e6b5784890151825560018201915060208501945060208101905062000e44565b8683101562000e8b578489015162000e87601f89168262000d81565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ecf8262000ea4565b9050919050565b62000ee18162000ec3565b811462000eec575f80fd5b50565b5f8151905062000eff8162000ed6565b92915050565b5f6020828403121562000f1d5762000f1c62000ea0565b5b5f62000f2c8482850162000eef565b91505092915050565b62000f408162000ec3565b82525050565b5f60408201905062000f5b5f83018562000f35565b62000f6a602083018462000f35565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000faa8262000c72565b915062000fb78362000c72565b925082820262000fc78162000c72565b9150828204841483151762000fe15762000fe062000f71565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010218262000c72565b91506200102e8362000c72565b92508262001041576200104062000fe8565b5b828204905092915050565b5f620010588262000c72565b9150620010658362000c72565b925082820190508082111562001080576200107f62000f71565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620010cc60208362001086565b9150620010d98262001096565b602082019050919050565b5f6020820190508181035f830152620010fd81620010be565b9050919050565b5f8115159050919050565b6200111a8162001104565b82525050565b5f602082019050620011355f8301846200110f565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001171601f8362001086565b91506200117e826200113b565b602082019050919050565b5f6020820190508181035f830152620011a28162001163565b9050919050565b620011b48162000c72565b82525050565b5f602082019050620011cf5f830184620011a9565b92915050565b60805160a051614ba4620012215f395f818161119a015261185901525f8181610d71015281816136430152818161372201528181613749015281816137df01526138060152614ba45ff3fe608060405260043610610338575f3560e01c80638da5cb5b116101aa578063bbc0c742116100f6578063dd62ed3e11610094578063f2fde38b1161006e578063f2fde38b14610c01578063f637434214610c29578063f8b45b0514610c53578063fbc10c5514610c7d5761033f565b8063dd62ed3e14610b71578063e2f4560514610bad578063f11a24d314610bd75761033f565b8063c18bc195116100d0578063c18bc19514610ab9578063c8c8ebe414610ae1578063d257b34f14610b0b578063d85ba06314610b475761033f565b8063bbc0c74214610a3f578063c024666814610a69578063c17b5b8c14610a915761033f565b80639c3b4fdc11610163578063a457c2d71161013d578063a457c2d714610963578063a9059cbb1461099f578063aacebbe3146109db578063b62496f514610a035761033f565b80639c3b4fdc146108e55780639fccce321461090f578063a0d82dc5146109395761033f565b80638da5cb5b146107ed5780638ea5220f146108175780639213691314610841578063924de9b71461086b57806395d89b41146108935780639a7a23d6146108bd5761033f565b806349bd5a5e11610284578063715018a61161022257806375f0a874116101fc57806375f0a8741461075b5780637bce5a04146107855780638095d564146107af5780638a8c523c146107d75761033f565b8063715018a6146106f3578063751039fc146107095780637571336a146107335761033f565b80636303516c1161025e5780636303516c146106395780636a486a8e146106635780636ddd17131461068d57806370a08231146106b75761033f565b806349bd5a5e146105a95780634a62bb65146105d35780634fbee193146105fd5761033f565b80631a8145bb116102f157806323b872dd116102cb57806323b872dd146104dd57806327c8f83514610519578063313ce56714610543578063395093511461056d5761033f565b80631a8145bb146104615780631f3fed8f1461048b578063203e727e146104b55761033f565b806306fdde0314610343578063095ea7b31461036d57806310d5de53146103a95780631694505e146103e557806318160ddd1461040f5780631816467f146104395761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610ca5565b604051610364919061395b565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e9190613a0c565b610d35565b6040516103a09190613a64565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613a7d565b610d52565b6040516103dc9190613a64565b60405180910390f35b3480156103f0575f80fd5b506103f9610d6f565b6040516104069190613b03565b60405180910390f35b34801561041a575f80fd5b50610423610d93565b6040516104309190613b2b565b60405180910390f35b348015610444575f80fd5b5061045f600480360381019061045a9190613a7d565b610d9c565b005b34801561046c575f80fd5b50610475610ed6565b6040516104829190613b2b565b60405180910390f35b348015610496575f80fd5b5061049f610edc565b6040516104ac9190613b2b565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190613b44565b610ee2565b005b3480156104e8575f80fd5b5061050360048036038101906104fe9190613b6f565b610ff1565b6040516105109190613a64565b60405180910390f35b348015610524575f80fd5b5061052d6110e3565b60405161053a9190613bce565b60405180910390f35b34801561054e575f80fd5b506105576110e9565b6040516105649190613c02565b60405180910390f35b348015610578575f80fd5b50610593600480360381019061058e9190613a0c565b6110f1565b6040516105a09190613a64565b60405180910390f35b3480156105b4575f80fd5b506105bd611198565b6040516105ca9190613bce565b60405180910390f35b3480156105de575f80fd5b506105e76111bc565b6040516105f49190613a64565b60405180910390f35b348015610608575f80fd5b50610623600480360381019061061e9190613a7d565b6111ce565b6040516106309190613a64565b60405180910390f35b348015610644575f80fd5b5061064d611220565b60405161065a9190613bce565b60405180910390f35b34801561066e575f80fd5b50610677611245565b6040516106849190613b2b565b60405180910390f35b348015610698575f80fd5b506106a161124b565b6040516106ae9190613a64565b60405180910390f35b3480156106c2575f80fd5b506106dd60048036038101906106d89190613a7d565b61125e565b6040516106ea9190613b2b565b60405180910390f35b3480156106fe575f80fd5b506107076112a3565b005b348015610714575f80fd5b5061071d61132a565b60405161072a9190613a64565b60405180910390f35b34801561073e575f80fd5b5061075960048036038101906107549190613c45565b6113f3565b005b348015610766575f80fd5b5061076f6114c7565b60405161077c9190613bce565b60405180910390f35b348015610790575f80fd5b506107996114ec565b6040516107a69190613b2b565b60405180910390f35b3480156107ba575f80fd5b506107d560048036038101906107d09190613c83565b6114f2565b005b3480156107e2575f80fd5b506107eb6115ab565b005b3480156107f8575f80fd5b5061080161165f565b60405161080e9190613bce565b60405180910390f35b348015610822575f80fd5b5061082b611687565b6040516108389190613bce565b60405180910390f35b34801561084c575f80fd5b506108556116ac565b6040516108629190613b2b565b60405180910390f35b348015610876575f80fd5b50610891600480360381019061088c9190613cd3565b6116b2565b005b34801561089e575f80fd5b506108a761174b565b6040516108b4919061395b565b60405180910390f35b3480156108c8575f80fd5b506108e360048036038101906108de9190613c45565b6117db565b005b3480156108f0575f80fd5b506108f96118f3565b6040516109069190613b2b565b60405180910390f35b34801561091a575f80fd5b506109236118f9565b6040516109309190613b2b565b60405180910390f35b348015610944575f80fd5b5061094d6118ff565b60405161095a9190613b2b565b60405180910390f35b34801561096e575f80fd5b5061098960048036038101906109849190613a0c565b611905565b6040516109969190613a64565b60405180910390f35b3480156109aa575f80fd5b506109c560048036038101906109c09190613a0c565b6119eb565b6040516109d29190613a64565b60405180910390f35b3480156109e6575f80fd5b50610a0160048036038101906109fc9190613a7d565b611a08565b005b348015610a0e575f80fd5b50610a296004803603810190610a249190613a7d565b611b42565b604051610a369190613a64565b60405180910390f35b348015610a4a575f80fd5b50610a53611b5f565b604051610a609190613a64565b60405180910390f35b348015610a74575f80fd5b50610a8f6004803603810190610a8a9190613c45565b611b72565b005b348015610a9c575f80fd5b50610ab76004803603810190610ab29190613c83565b611c94565b005b348015610ac4575f80fd5b50610adf6004803603810190610ada9190613b44565b611d4d565b005b348015610aec575f80fd5b50610af5611e5c565b604051610b029190613b2b565b60405180910390f35b348015610b16575f80fd5b50610b316004803603810190610b2c9190613b44565b611e62565b604051610b3e9190613a64565b60405180910390f35b348015610b52575f80fd5b50610b5b611fb6565b604051610b689190613b2b565b60405180910390f35b348015610b7c575f80fd5b50610b976004803603810190610b929190613cfe565b611fbc565b604051610ba49190613b2b565b60405180910390f35b348015610bb8575f80fd5b50610bc161203e565b604051610bce9190613b2b565b60405180910390f35b348015610be2575f80fd5b50610beb612044565b604051610bf89190613b2b565b60405180910390f35b348015610c0c575f80fd5b50610c276004803603810190610c229190613a7d565b61204a565b005b348015610c34575f80fd5b50610c3d612140565b604051610c4a9190613b2b565b60405180910390f35b348015610c5e575f80fd5b50610c67612146565b604051610c749190613b2b565b60405180910390f35b348015610c88575f80fd5b50610ca36004803603810190610c9e9190613a7d565b61214c565b005b606060038054610cb490613d69565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce090613d69565b8015610d2b5780601f10610d0257610100808354040283529160200191610d2b565b820191905f5260205f20905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b5f610d48610d41612286565b848461228d565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610da4612286565b73ffffffffffffffffffffffffffffffffffffffff16610dc261165f565b73ffffffffffffffffffffffffffffffffffffffff1614610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613de3565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60155481565b610eea612286565b73ffffffffffffffffffffffffffffffffffffffff16610f0861165f565b73ffffffffffffffffffffffffffffffffffffffff1614610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5590613de3565b60405180910390fd5b670de0b6b3a76400006103e86001610f74610d93565b610f7e9190613e2e565b610f889190613e9c565b610f929190613e9c565b811015610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb90613f3c565b60405180910390fd5b670de0b6b3a764000081610fe89190613e2e565b60098190555050565b5f610ffd848484612450565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f611044612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba90613fca565b60405180910390fd5b6110d7856110cf612286565b85840361228d565b60019150509392505050565b61dead81565b5f6012905090565b5f61118e6110fd612286565b848460015f61110a612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111899190613fe8565b61228d565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112ab612286565b73ffffffffffffffffffffffffffffffffffffffff166112c961165f565b73ffffffffffffffffffffffffffffffffffffffff161461131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690613de3565b60405180910390fd5b6113285f612ee0565b565b5f611333612286565b73ffffffffffffffffffffffffffffffffffffffff1661135161165f565b73ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90613de3565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b6113fb612286565b73ffffffffffffffffffffffffffffffffffffffff1661141961165f565b73ffffffffffffffffffffffffffffffffffffffff161461146f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146690613de3565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6114fa612286565b73ffffffffffffffffffffffffffffffffffffffff1661151861165f565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590613de3565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546115969190613fe8565b6115a09190613fe8565b600d81905550505050565b6115b3612286565b73ffffffffffffffffffffffffffffffffffffffff166115d161165f565b73ffffffffffffffffffffffffffffffffffffffff1614611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90613de3565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6116ba612286565b73ffffffffffffffffffffffffffffffffffffffff166116d861165f565b73ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590613de3565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461175a90613d69565b80601f016020809104026020016040519081016040528092919081815260200182805461178690613d69565b80156117d15780601f106117a8576101008083540402835291602001916117d1565b820191905f5260205f20905b8154815290600101906020018083116117b457829003601f168201915b5050505050905090565b6117e3612286565b73ffffffffffffffffffffffffffffffffffffffff1661180161165f565b73ffffffffffffffffffffffffffffffffffffffff1614611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90613de3565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dc9061408b565b60405180910390fd5b6118ef8282612fa3565b5050565b60105481565b60175481565b60145481565b5f8060015f611912612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c390614119565b60405180910390fd5b6119e06119d7612286565b8585840361228d565b600191505092915050565b5f6119fe6119f7612286565b8484612450565b6001905092915050565b611a10612286565b73ffffffffffffffffffffffffffffffffffffffff16611a2e61165f565b73ffffffffffffffffffffffffffffffffffffffff1614611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b90613de3565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611b7a612286565b73ffffffffffffffffffffffffffffffffffffffff16611b9861165f565b73ffffffffffffffffffffffffffffffffffffffff1614611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590613de3565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c889190613a64565b60405180910390a25050565b611c9c612286565b73ffffffffffffffffffffffffffffffffffffffff16611cba61165f565b73ffffffffffffffffffffffffffffffffffffffff1614611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0790613de3565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254611d389190613fe8565b611d429190613fe8565b601181905550505050565b611d55612286565b73ffffffffffffffffffffffffffffffffffffffff16611d7361165f565b73ffffffffffffffffffffffffffffffffffffffff1614611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc090613de3565b60405180910390fd5b670de0b6b3a76400006103e86005611ddf610d93565b611de99190613e2e565b611df39190613e9c565b611dfd9190613e9c565b811015611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e36906141a7565b60405180910390fd5b670de0b6b3a764000081611e539190613e2e565b600b8190555050565b60095481565b5f611e6b612286565b73ffffffffffffffffffffffffffffffffffffffff16611e8961165f565b73ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed690613de3565b60405180910390fd5b620186a06001611eed610d93565b611ef79190613e2e565b611f019190613e9c565b821015611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90614235565b60405180910390fd5b6103e86005611f50610d93565b611f5a9190613e2e565b611f649190613e9c565b821115611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d906142c3565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b600f5481565b612052612286565b73ffffffffffffffffffffffffffffffffffffffff1661207061165f565b73ffffffffffffffffffffffffffffffffffffffff16146120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90613de3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90614351565b60405180910390fd5b61213d81612ee0565b50565b60135481565b600b5481565b612154612286565b73ffffffffffffffffffffffffffffffffffffffff1661217261165f565b73ffffffffffffffffffffffffffffffffffffffff16146121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf90613de3565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f2906143df565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123609061446d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124439190613b2b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b5906144fb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252390614589565b60405180910390fd5b5f81036125435761253e83835f613041565b612edb565b600c5f9054906101000a900460ff1615612a275761255f61165f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125cd575061259d61165f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561260557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561263f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126585750600560149054906101000a900460ff16155b15612a2657600c60019054906101000a900460ff1661274c5760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061270c575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61274b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612742906145f1565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127e9575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561289057600954811115612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a9061467f565b60405180910390fd5b600b5461283f8361125e565b8261284a9190613fe8565b111561288b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612882906146e7565b60405180910390fd5b612a25565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292d575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561297c57600954811115612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e90614775565b60405180910390fd5b612a24565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612a2357600b546129d68361125e565b826129e19190613fe8565b1115612a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a19906146e7565b60405180910390fd5b5b5b5b5b5b5f612a313061125e565b90505f600a548210159050808015612a555750600c60029054906101000a900460ff165b8015612a6e5750600560149054906101000a900460ff16155b8015612ac15750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b14575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b67575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612baa576001600560146101000a81548160ff021916908315150217905550612b8f6132b6565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c59575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c62575f90505b5f8115612ecb57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612cc057505f601154115b15612d8a57612ced6064612cdf6011548861355d90919063ffffffff16565b61357290919063ffffffff16565b905060115460135482612d009190613e2e565b612d0a9190613e9c565b60165f828254612d1a9190613fe8565b9250508190555060115460145482612d329190613e2e565b612d3c9190613e9c565b60175f828254612d4c9190613fe8565b9250508190555060115460125482612d649190613e2e565b612d6e9190613e9c565b60155f828254612d7e9190613fe8565b92505081905550612ea8565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612de157505f600d54115b15612ea757612e0e6064612e00600d548861355d90919063ffffffff16565b61357290919063ffffffff16565b9050600d54600f5482612e219190613e2e565b612e2b9190613e9c565b60165f828254612e3b9190613fe8565b92505081905550600d5460105482612e539190613e2e565b612e5d9190613e9c565b60175f828254612e6d9190613fe8565b92505081905550600d54600e5482612e859190613e2e565b612e8f9190613e9c565b60155f828254612e9f9190613fe8565b925050819055505b5b5f811115612ebc57612ebb873083613041565b5b8085612ec89190614793565b94505b612ed6878787613041565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a6906144fb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361311d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311490614589565b60405180910390fd5b613128838383613587565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156131ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a290614836565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132399190613fe8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161329d9190613b2b565b60405180910390a36132b084848461358c565b50505050565b5f6132c03061125e565b90505f6017546015546016546132d69190613fe8565b6132e09190613fe8565b90505f808314806132f057505f82145b156132fd5750505061355b565b5f6002836016548661330f9190613e2e565b6133199190613e9c565b6133239190613e9c565b90505f613339828661359190919063ffffffff16565b90505f479050613348826135a6565b5f61335c824761359190919063ffffffff16565b90505f613386876133786015548561355d90919063ffffffff16565b61357290919063ffffffff16565b90505f6133b0886133a26017548661355d90919063ffffffff16565b61357290919063ffffffff16565b90505f8183856133c09190614793565b6133ca9190614793565b90505f6016819055505f6015819055505f60178190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161342690614881565b5f6040518083038185875af1925050503d805f8114613460576040519150601f19603f3d011682016040523d82523d5f602084013e613465565b606091505b5050809850505f8711801561347957505f81115b156134c65761348887826137d9565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826016546040516134bd93929190614895565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161350b90614881565b5f6040518083038185875af1925050503d805f8114613545576040519150601f19603f3d011682016040523d82523d5f602084013e61354a565b606091505b505080985050505050505050505050505b565b5f818361356a9190613e2e565b905092915050565b5f818361357f9190613e9c565b905092915050565b505050565b505050565b5f818361359e9190614793565b905092915050565b5f600267ffffffffffffffff8111156135c2576135c16148ca565b5b6040519080825280602002602001820160405280156135f05781602001602082028036833780820191505090505b50905030815f81518110613607576136066148f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ce9190614938565b816001815181106136e2576136e16148f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613747307f00000000000000000000000000000000000000000000000000000000000000008461228d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016137a8959493929190614a53565b5f604051808303815f87803b1580156137bf575f80fd5b505af11580156137d1573d5f803e3d5ffd5b505050505050565b613804307f00000000000000000000000000000000000000000000000000000000000000008461228d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161388996959493929190614aab565b60606040518083038185885af11580156138a5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906138ca9190614b1e565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156139085780820151818401526020810190506138ed565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61392d826138d1565b61393781856138db565b93506139478185602086016138eb565b61395081613913565b840191505092915050565b5f6020820190508181035f8301526139738184613923565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6139a88261397f565b9050919050565b6139b88161399e565b81146139c2575f80fd5b50565b5f813590506139d3816139af565b92915050565b5f819050919050565b6139eb816139d9565b81146139f5575f80fd5b50565b5f81359050613a06816139e2565b92915050565b5f8060408385031215613a2257613a2161397b565b5b5f613a2f858286016139c5565b9250506020613a40858286016139f8565b9150509250929050565b5f8115159050919050565b613a5e81613a4a565b82525050565b5f602082019050613a775f830184613a55565b92915050565b5f60208284031215613a9257613a9161397b565b5b5f613a9f848285016139c5565b91505092915050565b5f819050919050565b5f613acb613ac6613ac18461397f565b613aa8565b61397f565b9050919050565b5f613adc82613ab1565b9050919050565b5f613aed82613ad2565b9050919050565b613afd81613ae3565b82525050565b5f602082019050613b165f830184613af4565b92915050565b613b25816139d9565b82525050565b5f602082019050613b3e5f830184613b1c565b92915050565b5f60208284031215613b5957613b5861397b565b5b5f613b66848285016139f8565b91505092915050565b5f805f60608486031215613b8657613b8561397b565b5b5f613b93868287016139c5565b9350506020613ba4868287016139c5565b9250506040613bb5868287016139f8565b9150509250925092565b613bc88161399e565b82525050565b5f602082019050613be15f830184613bbf565b92915050565b5f60ff82169050919050565b613bfc81613be7565b82525050565b5f602082019050613c155f830184613bf3565b92915050565b613c2481613a4a565b8114613c2e575f80fd5b50565b5f81359050613c3f81613c1b565b92915050565b5f8060408385031215613c5b57613c5a61397b565b5b5f613c68858286016139c5565b9250506020613c7985828601613c31565b9150509250929050565b5f805f60608486031215613c9a57613c9961397b565b5b5f613ca7868287016139f8565b9350506020613cb8868287016139f8565b9250506040613cc9868287016139f8565b9150509250925092565b5f60208284031215613ce857613ce761397b565b5b5f613cf584828501613c31565b91505092915050565b5f8060408385031215613d1457613d1361397b565b5b5f613d21858286016139c5565b9250506020613d32858286016139c5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d8057607f821691505b602082108103613d9357613d92613d3c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613dcd6020836138db565b9150613dd882613d99565b602082019050919050565b5f6020820190508181035f830152613dfa81613dc1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e38826139d9565b9150613e43836139d9565b9250828202613e51816139d9565b91508282048414831517613e6857613e67613e01565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ea6826139d9565b9150613eb1836139d9565b925082613ec157613ec0613e6f565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613f26602f836138db565b9150613f3182613ecc565b604082019050919050565b5f6020820190508181035f830152613f5381613f1a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613fb46028836138db565b9150613fbf82613f5a565b604082019050919050565b5f6020820190508181035f830152613fe181613fa8565b9050919050565b5f613ff2826139d9565b9150613ffd836139d9565b925082820190508082111561401557614014613e01565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6140756039836138db565b91506140808261401b565b604082019050919050565b5f6020820190508181035f8301526140a281614069565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6141036025836138db565b915061410e826140a9565b604082019050919050565b5f6020820190508181035f830152614130816140f7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6141916024836138db565b915061419c82614137565b604082019050919050565b5f6020820190508181035f8301526141be81614185565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61421f6035836138db565b915061422a826141c5565b604082019050919050565b5f6020820190508181035f83015261424c81614213565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6142ad6034836138db565b91506142b882614253565b604082019050919050565b5f6020820190508181035f8301526142da816142a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61433b6026836138db565b9150614346826142e1565b604082019050919050565b5f6020820190508181035f8301526143688161432f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143c96024836138db565b91506143d48261436f565b604082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144576022836138db565b9150614462826143fd565b604082019050919050565b5f6020820190508181035f8301526144848161444b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6144e56025836138db565b91506144f08261448b565b604082019050919050565b5f6020820190508181035f830152614512816144d9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6145736023836138db565b915061457e82614519565b604082019050919050565b5f6020820190508181035f8301526145a081614567565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6145db6016836138db565b91506145e6826145a7565b602082019050919050565b5f6020820190508181035f830152614608816145cf565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6146696035836138db565b91506146748261460f565b604082019050919050565b5f6020820190508181035f8301526146968161465d565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6146d16013836138db565b91506146dc8261469d565b602082019050919050565b5f6020820190508181035f8301526146fe816146c5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61475f6036836138db565b915061476a82614705565b604082019050919050565b5f6020820190508181035f83015261478c81614753565b9050919050565b5f61479d826139d9565b91506147a8836139d9565b92508282039050818111156147c0576147bf613e01565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6148206026836138db565b915061482b826147c6565b604082019050919050565b5f6020820190508181035f83015261484d81614814565b9050919050565b5f81905092915050565b50565b5f61486c5f83614854565b91506148778261485e565b5f82019050919050565b5f61488b82614861565b9150819050919050565b5f6060820190506148a85f830186613b1c565b6148b56020830185613b1c565b6148c26040830184613b1c565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614932816139af565b92915050565b5f6020828403121561494d5761494c61397b565b5b5f61495a84828501614924565b91505092915050565b5f819050919050565b5f61498661498161497c84614963565b613aa8565b6139d9565b9050919050565b6149968161496c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149ce8161399e565b82525050565b5f6149df83836149c5565b60208301905092915050565b5f602082019050919050565b5f614a018261499c565b614a0b81856149a6565b9350614a16836149b6565b805f5b83811015614a46578151614a2d88826149d4565b9750614a38836149eb565b925050600181019050614a19565b5085935050505092915050565b5f60a082019050614a665f830188613b1c565b614a73602083018761498d565b8181036040830152614a8581866149f7565b9050614a946060830185613bbf565b614aa16080830184613b1c565b9695505050505050565b5f60c082019050614abe5f830189613bbf565b614acb6020830188613b1c565b614ad8604083018761498d565b614ae5606083018661498d565b614af26080830185613bbf565b614aff60a0830184613b1c565b979650505050505050565b5f81519050614b18816139e2565b92915050565b5f805f60608486031215614b3557614b3461397b565b5b5f614b4286828701614b0a565b9350506020614b5386828701614b0a565b9250506040614b6486828701614b0a565b915050925092509256fea26469706673582212202db2a9a5a2d266546ea3377a2091b2ff26965af5d35151f0d0edbdc8dba0df2c64736f6c63430008140033
Deployed Bytecode
0x608060405260043610610338575f3560e01c80638da5cb5b116101aa578063bbc0c742116100f6578063dd62ed3e11610094578063f2fde38b1161006e578063f2fde38b14610c01578063f637434214610c29578063f8b45b0514610c53578063fbc10c5514610c7d5761033f565b8063dd62ed3e14610b71578063e2f4560514610bad578063f11a24d314610bd75761033f565b8063c18bc195116100d0578063c18bc19514610ab9578063c8c8ebe414610ae1578063d257b34f14610b0b578063d85ba06314610b475761033f565b8063bbc0c74214610a3f578063c024666814610a69578063c17b5b8c14610a915761033f565b80639c3b4fdc11610163578063a457c2d71161013d578063a457c2d714610963578063a9059cbb1461099f578063aacebbe3146109db578063b62496f514610a035761033f565b80639c3b4fdc146108e55780639fccce321461090f578063a0d82dc5146109395761033f565b80638da5cb5b146107ed5780638ea5220f146108175780639213691314610841578063924de9b71461086b57806395d89b41146108935780639a7a23d6146108bd5761033f565b806349bd5a5e11610284578063715018a61161022257806375f0a874116101fc57806375f0a8741461075b5780637bce5a04146107855780638095d564146107af5780638a8c523c146107d75761033f565b8063715018a6146106f3578063751039fc146107095780637571336a146107335761033f565b80636303516c1161025e5780636303516c146106395780636a486a8e146106635780636ddd17131461068d57806370a08231146106b75761033f565b806349bd5a5e146105a95780634a62bb65146105d35780634fbee193146105fd5761033f565b80631a8145bb116102f157806323b872dd116102cb57806323b872dd146104dd57806327c8f83514610519578063313ce56714610543578063395093511461056d5761033f565b80631a8145bb146104615780631f3fed8f1461048b578063203e727e146104b55761033f565b806306fdde0314610343578063095ea7b31461036d57806310d5de53146103a95780631694505e146103e557806318160ddd1461040f5780631816467f146104395761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610ca5565b604051610364919061395b565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e9190613a0c565b610d35565b6040516103a09190613a64565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613a7d565b610d52565b6040516103dc9190613a64565b60405180910390f35b3480156103f0575f80fd5b506103f9610d6f565b6040516104069190613b03565b60405180910390f35b34801561041a575f80fd5b50610423610d93565b6040516104309190613b2b565b60405180910390f35b348015610444575f80fd5b5061045f600480360381019061045a9190613a7d565b610d9c565b005b34801561046c575f80fd5b50610475610ed6565b6040516104829190613b2b565b60405180910390f35b348015610496575f80fd5b5061049f610edc565b6040516104ac9190613b2b565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190613b44565b610ee2565b005b3480156104e8575f80fd5b5061050360048036038101906104fe9190613b6f565b610ff1565b6040516105109190613a64565b60405180910390f35b348015610524575f80fd5b5061052d6110e3565b60405161053a9190613bce565b60405180910390f35b34801561054e575f80fd5b506105576110e9565b6040516105649190613c02565b60405180910390f35b348015610578575f80fd5b50610593600480360381019061058e9190613a0c565b6110f1565b6040516105a09190613a64565b60405180910390f35b3480156105b4575f80fd5b506105bd611198565b6040516105ca9190613bce565b60405180910390f35b3480156105de575f80fd5b506105e76111bc565b6040516105f49190613a64565b60405180910390f35b348015610608575f80fd5b50610623600480360381019061061e9190613a7d565b6111ce565b6040516106309190613a64565b60405180910390f35b348015610644575f80fd5b5061064d611220565b60405161065a9190613bce565b60405180910390f35b34801561066e575f80fd5b50610677611245565b6040516106849190613b2b565b60405180910390f35b348015610698575f80fd5b506106a161124b565b6040516106ae9190613a64565b60405180910390f35b3480156106c2575f80fd5b506106dd60048036038101906106d89190613a7d565b61125e565b6040516106ea9190613b2b565b60405180910390f35b3480156106fe575f80fd5b506107076112a3565b005b348015610714575f80fd5b5061071d61132a565b60405161072a9190613a64565b60405180910390f35b34801561073e575f80fd5b5061075960048036038101906107549190613c45565b6113f3565b005b348015610766575f80fd5b5061076f6114c7565b60405161077c9190613bce565b60405180910390f35b348015610790575f80fd5b506107996114ec565b6040516107a69190613b2b565b60405180910390f35b3480156107ba575f80fd5b506107d560048036038101906107d09190613c83565b6114f2565b005b3480156107e2575f80fd5b506107eb6115ab565b005b3480156107f8575f80fd5b5061080161165f565b60405161080e9190613bce565b60405180910390f35b348015610822575f80fd5b5061082b611687565b6040516108389190613bce565b60405180910390f35b34801561084c575f80fd5b506108556116ac565b6040516108629190613b2b565b60405180910390f35b348015610876575f80fd5b50610891600480360381019061088c9190613cd3565b6116b2565b005b34801561089e575f80fd5b506108a761174b565b6040516108b4919061395b565b60405180910390f35b3480156108c8575f80fd5b506108e360048036038101906108de9190613c45565b6117db565b005b3480156108f0575f80fd5b506108f96118f3565b6040516109069190613b2b565b60405180910390f35b34801561091a575f80fd5b506109236118f9565b6040516109309190613b2b565b60405180910390f35b348015610944575f80fd5b5061094d6118ff565b60405161095a9190613b2b565b60405180910390f35b34801561096e575f80fd5b5061098960048036038101906109849190613a0c565b611905565b6040516109969190613a64565b60405180910390f35b3480156109aa575f80fd5b506109c560048036038101906109c09190613a0c565b6119eb565b6040516109d29190613a64565b60405180910390f35b3480156109e6575f80fd5b50610a0160048036038101906109fc9190613a7d565b611a08565b005b348015610a0e575f80fd5b50610a296004803603810190610a249190613a7d565b611b42565b604051610a369190613a64565b60405180910390f35b348015610a4a575f80fd5b50610a53611b5f565b604051610a609190613a64565b60405180910390f35b348015610a74575f80fd5b50610a8f6004803603810190610a8a9190613c45565b611b72565b005b348015610a9c575f80fd5b50610ab76004803603810190610ab29190613c83565b611c94565b005b348015610ac4575f80fd5b50610adf6004803603810190610ada9190613b44565b611d4d565b005b348015610aec575f80fd5b50610af5611e5c565b604051610b029190613b2b565b60405180910390f35b348015610b16575f80fd5b50610b316004803603810190610b2c9190613b44565b611e62565b604051610b3e9190613a64565b60405180910390f35b348015610b52575f80fd5b50610b5b611fb6565b604051610b689190613b2b565b60405180910390f35b348015610b7c575f80fd5b50610b976004803603810190610b929190613cfe565b611fbc565b604051610ba49190613b2b565b60405180910390f35b348015610bb8575f80fd5b50610bc161203e565b604051610bce9190613b2b565b60405180910390f35b348015610be2575f80fd5b50610beb612044565b604051610bf89190613b2b565b60405180910390f35b348015610c0c575f80fd5b50610c276004803603810190610c229190613a7d565b61204a565b005b348015610c34575f80fd5b50610c3d612140565b604051610c4a9190613b2b565b60405180910390f35b348015610c5e575f80fd5b50610c67612146565b604051610c749190613b2b565b60405180910390f35b348015610c88575f80fd5b50610ca36004803603810190610c9e9190613a7d565b61214c565b005b606060038054610cb490613d69565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce090613d69565b8015610d2b5780601f10610d0257610100808354040283529160200191610d2b565b820191905f5260205f20905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b5f610d48610d41612286565b848461228d565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610da4612286565b73ffffffffffffffffffffffffffffffffffffffff16610dc261165f565b73ffffffffffffffffffffffffffffffffffffffff1614610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613de3565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60155481565b610eea612286565b73ffffffffffffffffffffffffffffffffffffffff16610f0861165f565b73ffffffffffffffffffffffffffffffffffffffff1614610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5590613de3565b60405180910390fd5b670de0b6b3a76400006103e86001610f74610d93565b610f7e9190613e2e565b610f889190613e9c565b610f929190613e9c565b811015610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb90613f3c565b60405180910390fd5b670de0b6b3a764000081610fe89190613e2e565b60098190555050565b5f610ffd848484612450565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f611044612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba90613fca565b60405180910390fd5b6110d7856110cf612286565b85840361228d565b60019150509392505050565b61dead81565b5f6012905090565b5f61118e6110fd612286565b848460015f61110a612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111899190613fe8565b61228d565b6001905092915050565b7f00000000000000000000000039fdef50dc8bb9d657922353d1c54a502b114d4081565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112ab612286565b73ffffffffffffffffffffffffffffffffffffffff166112c961165f565b73ffffffffffffffffffffffffffffffffffffffff161461131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690613de3565b60405180910390fd5b6113285f612ee0565b565b5f611333612286565b73ffffffffffffffffffffffffffffffffffffffff1661135161165f565b73ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90613de3565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b6113fb612286565b73ffffffffffffffffffffffffffffffffffffffff1661141961165f565b73ffffffffffffffffffffffffffffffffffffffff161461146f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146690613de3565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6114fa612286565b73ffffffffffffffffffffffffffffffffffffffff1661151861165f565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590613de3565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546115969190613fe8565b6115a09190613fe8565b600d81905550505050565b6115b3612286565b73ffffffffffffffffffffffffffffffffffffffff166115d161165f565b73ffffffffffffffffffffffffffffffffffffffff1614611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90613de3565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6116ba612286565b73ffffffffffffffffffffffffffffffffffffffff166116d861165f565b73ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590613de3565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461175a90613d69565b80601f016020809104026020016040519081016040528092919081815260200182805461178690613d69565b80156117d15780601f106117a8576101008083540402835291602001916117d1565b820191905f5260205f20905b8154815290600101906020018083116117b457829003601f168201915b5050505050905090565b6117e3612286565b73ffffffffffffffffffffffffffffffffffffffff1661180161165f565b73ffffffffffffffffffffffffffffffffffffffff1614611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90613de3565b60405180910390fd5b7f00000000000000000000000039fdef50dc8bb9d657922353d1c54a502b114d4073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dc9061408b565b60405180910390fd5b6118ef8282612fa3565b5050565b60105481565b60175481565b60145481565b5f8060015f611912612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c390614119565b60405180910390fd5b6119e06119d7612286565b8585840361228d565b600191505092915050565b5f6119fe6119f7612286565b8484612450565b6001905092915050565b611a10612286565b73ffffffffffffffffffffffffffffffffffffffff16611a2e61165f565b73ffffffffffffffffffffffffffffffffffffffff1614611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b90613de3565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611b7a612286565b73ffffffffffffffffffffffffffffffffffffffff16611b9861165f565b73ffffffffffffffffffffffffffffffffffffffff1614611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590613de3565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c889190613a64565b60405180910390a25050565b611c9c612286565b73ffffffffffffffffffffffffffffffffffffffff16611cba61165f565b73ffffffffffffffffffffffffffffffffffffffff1614611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0790613de3565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254611d389190613fe8565b611d429190613fe8565b601181905550505050565b611d55612286565b73ffffffffffffffffffffffffffffffffffffffff16611d7361165f565b73ffffffffffffffffffffffffffffffffffffffff1614611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc090613de3565b60405180910390fd5b670de0b6b3a76400006103e86005611ddf610d93565b611de99190613e2e565b611df39190613e9c565b611dfd9190613e9c565b811015611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e36906141a7565b60405180910390fd5b670de0b6b3a764000081611e539190613e2e565b600b8190555050565b60095481565b5f611e6b612286565b73ffffffffffffffffffffffffffffffffffffffff16611e8961165f565b73ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed690613de3565b60405180910390fd5b620186a06001611eed610d93565b611ef79190613e2e565b611f019190613e9c565b821015611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90614235565b60405180910390fd5b6103e86005611f50610d93565b611f5a9190613e2e565b611f649190613e9c565b821115611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d906142c3565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b600f5481565b612052612286565b73ffffffffffffffffffffffffffffffffffffffff1661207061165f565b73ffffffffffffffffffffffffffffffffffffffff16146120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90613de3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90614351565b60405180910390fd5b61213d81612ee0565b50565b60135481565b600b5481565b612154612286565b73ffffffffffffffffffffffffffffffffffffffff1661217261165f565b73ffffffffffffffffffffffffffffffffffffffff16146121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf90613de3565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f2906143df565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123609061446d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124439190613b2b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b5906144fb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252390614589565b60405180910390fd5b5f81036125435761253e83835f613041565b612edb565b600c5f9054906101000a900460ff1615612a275761255f61165f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125cd575061259d61165f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561260557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561263f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126585750600560149054906101000a900460ff16155b15612a2657600c60019054906101000a900460ff1661274c5760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061270c575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61274b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612742906145f1565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127e9575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561289057600954811115612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a9061467f565b60405180910390fd5b600b5461283f8361125e565b8261284a9190613fe8565b111561288b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612882906146e7565b60405180910390fd5b612a25565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292d575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561297c57600954811115612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e90614775565b60405180910390fd5b612a24565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612a2357600b546129d68361125e565b826129e19190613fe8565b1115612a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a19906146e7565b60405180910390fd5b5b5b5b5b5b5f612a313061125e565b90505f600a548210159050808015612a555750600c60029054906101000a900460ff165b8015612a6e5750600560149054906101000a900460ff16155b8015612ac15750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b14575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b67575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612baa576001600560146101000a81548160ff021916908315150217905550612b8f6132b6565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c59575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c62575f90505b5f8115612ecb57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612cc057505f601154115b15612d8a57612ced6064612cdf6011548861355d90919063ffffffff16565b61357290919063ffffffff16565b905060115460135482612d009190613e2e565b612d0a9190613e9c565b60165f828254612d1a9190613fe8565b9250508190555060115460145482612d329190613e2e565b612d3c9190613e9c565b60175f828254612d4c9190613fe8565b9250508190555060115460125482612d649190613e2e565b612d6e9190613e9c565b60155f828254612d7e9190613fe8565b92505081905550612ea8565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612de157505f600d54115b15612ea757612e0e6064612e00600d548861355d90919063ffffffff16565b61357290919063ffffffff16565b9050600d54600f5482612e219190613e2e565b612e2b9190613e9c565b60165f828254612e3b9190613fe8565b92505081905550600d5460105482612e539190613e2e565b612e5d9190613e9c565b60175f828254612e6d9190613fe8565b92505081905550600d54600e5482612e859190613e2e565b612e8f9190613e9c565b60155f828254612e9f9190613fe8565b925050819055505b5b5f811115612ebc57612ebb873083613041565b5b8085612ec89190614793565b94505b612ed6878787613041565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a6906144fb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361311d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311490614589565b60405180910390fd5b613128838383613587565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156131ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a290614836565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132399190613fe8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161329d9190613b2b565b60405180910390a36132b084848461358c565b50505050565b5f6132c03061125e565b90505f6017546015546016546132d69190613fe8565b6132e09190613fe8565b90505f808314806132f057505f82145b156132fd5750505061355b565b5f6002836016548661330f9190613e2e565b6133199190613e9c565b6133239190613e9c565b90505f613339828661359190919063ffffffff16565b90505f479050613348826135a6565b5f61335c824761359190919063ffffffff16565b90505f613386876133786015548561355d90919063ffffffff16565b61357290919063ffffffff16565b90505f6133b0886133a26017548661355d90919063ffffffff16565b61357290919063ffffffff16565b90505f8183856133c09190614793565b6133ca9190614793565b90505f6016819055505f6015819055505f60178190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161342690614881565b5f6040518083038185875af1925050503d805f8114613460576040519150601f19603f3d011682016040523d82523d5f602084013e613465565b606091505b5050809850505f8711801561347957505f81115b156134c65761348887826137d9565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826016546040516134bd93929190614895565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161350b90614881565b5f6040518083038185875af1925050503d805f8114613545576040519150601f19603f3d011682016040523d82523d5f602084013e61354a565b606091505b505080985050505050505050505050505b565b5f818361356a9190613e2e565b905092915050565b5f818361357f9190613e9c565b905092915050565b505050565b505050565b5f818361359e9190614793565b905092915050565b5f600267ffffffffffffffff8111156135c2576135c16148ca565b5b6040519080825280602002602001820160405280156135f05781602001602082028036833780820191505090505b50905030815f81518110613607576136066148f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ce9190614938565b816001815181106136e2576136e16148f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613747307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461228d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016137a8959493929190614a53565b5f604051808303815f87803b1580156137bf575f80fd5b505af11580156137d1573d5f803e3d5ffd5b505050505050565b613804307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461228d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161388996959493929190614aab565b60606040518083038185885af11580156138a5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906138ca9190614b1e565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156139085780820151818401526020810190506138ed565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61392d826138d1565b61393781856138db565b93506139478185602086016138eb565b61395081613913565b840191505092915050565b5f6020820190508181035f8301526139738184613923565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6139a88261397f565b9050919050565b6139b88161399e565b81146139c2575f80fd5b50565b5f813590506139d3816139af565b92915050565b5f819050919050565b6139eb816139d9565b81146139f5575f80fd5b50565b5f81359050613a06816139e2565b92915050565b5f8060408385031215613a2257613a2161397b565b5b5f613a2f858286016139c5565b9250506020613a40858286016139f8565b9150509250929050565b5f8115159050919050565b613a5e81613a4a565b82525050565b5f602082019050613a775f830184613a55565b92915050565b5f60208284031215613a9257613a9161397b565b5b5f613a9f848285016139c5565b91505092915050565b5f819050919050565b5f613acb613ac6613ac18461397f565b613aa8565b61397f565b9050919050565b5f613adc82613ab1565b9050919050565b5f613aed82613ad2565b9050919050565b613afd81613ae3565b82525050565b5f602082019050613b165f830184613af4565b92915050565b613b25816139d9565b82525050565b5f602082019050613b3e5f830184613b1c565b92915050565b5f60208284031215613b5957613b5861397b565b5b5f613b66848285016139f8565b91505092915050565b5f805f60608486031215613b8657613b8561397b565b5b5f613b93868287016139c5565b9350506020613ba4868287016139c5565b9250506040613bb5868287016139f8565b9150509250925092565b613bc88161399e565b82525050565b5f602082019050613be15f830184613bbf565b92915050565b5f60ff82169050919050565b613bfc81613be7565b82525050565b5f602082019050613c155f830184613bf3565b92915050565b613c2481613a4a565b8114613c2e575f80fd5b50565b5f81359050613c3f81613c1b565b92915050565b5f8060408385031215613c5b57613c5a61397b565b5b5f613c68858286016139c5565b9250506020613c7985828601613c31565b9150509250929050565b5f805f60608486031215613c9a57613c9961397b565b5b5f613ca7868287016139f8565b9350506020613cb8868287016139f8565b9250506040613cc9868287016139f8565b9150509250925092565b5f60208284031215613ce857613ce761397b565b5b5f613cf584828501613c31565b91505092915050565b5f8060408385031215613d1457613d1361397b565b5b5f613d21858286016139c5565b9250506020613d32858286016139c5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d8057607f821691505b602082108103613d9357613d92613d3c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613dcd6020836138db565b9150613dd882613d99565b602082019050919050565b5f6020820190508181035f830152613dfa81613dc1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e38826139d9565b9150613e43836139d9565b9250828202613e51816139d9565b91508282048414831517613e6857613e67613e01565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ea6826139d9565b9150613eb1836139d9565b925082613ec157613ec0613e6f565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613f26602f836138db565b9150613f3182613ecc565b604082019050919050565b5f6020820190508181035f830152613f5381613f1a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613fb46028836138db565b9150613fbf82613f5a565b604082019050919050565b5f6020820190508181035f830152613fe181613fa8565b9050919050565b5f613ff2826139d9565b9150613ffd836139d9565b925082820190508082111561401557614014613e01565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6140756039836138db565b91506140808261401b565b604082019050919050565b5f6020820190508181035f8301526140a281614069565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6141036025836138db565b915061410e826140a9565b604082019050919050565b5f6020820190508181035f830152614130816140f7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6141916024836138db565b915061419c82614137565b604082019050919050565b5f6020820190508181035f8301526141be81614185565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61421f6035836138db565b915061422a826141c5565b604082019050919050565b5f6020820190508181035f83015261424c81614213565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6142ad6034836138db565b91506142b882614253565b604082019050919050565b5f6020820190508181035f8301526142da816142a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61433b6026836138db565b9150614346826142e1565b604082019050919050565b5f6020820190508181035f8301526143688161432f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143c96024836138db565b91506143d48261436f565b604082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144576022836138db565b9150614462826143fd565b604082019050919050565b5f6020820190508181035f8301526144848161444b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6144e56025836138db565b91506144f08261448b565b604082019050919050565b5f6020820190508181035f830152614512816144d9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6145736023836138db565b915061457e82614519565b604082019050919050565b5f6020820190508181035f8301526145a081614567565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6145db6016836138db565b91506145e6826145a7565b602082019050919050565b5f6020820190508181035f830152614608816145cf565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6146696035836138db565b91506146748261460f565b604082019050919050565b5f6020820190508181035f8301526146968161465d565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6146d16013836138db565b91506146dc8261469d565b602082019050919050565b5f6020820190508181035f8301526146fe816146c5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61475f6036836138db565b915061476a82614705565b604082019050919050565b5f6020820190508181035f83015261478c81614753565b9050919050565b5f61479d826139d9565b91506147a8836139d9565b92508282039050818111156147c0576147bf613e01565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6148206026836138db565b915061482b826147c6565b604082019050919050565b5f6020820190508181035f83015261484d81614814565b9050919050565b5f81905092915050565b50565b5f61486c5f83614854565b91506148778261485e565b5f82019050919050565b5f61488b82614861565b9150819050919050565b5f6060820190506148a85f830186613b1c565b6148b56020830185613b1c565b6148c26040830184613b1c565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614932816139af565b92915050565b5f6020828403121561494d5761494c61397b565b5b5f61495a84828501614924565b91505092915050565b5f819050919050565b5f61498661498161497c84614963565b613aa8565b6139d9565b9050919050565b6149968161496c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149ce8161399e565b82525050565b5f6149df83836149c5565b60208301905092915050565b5f602082019050919050565b5f614a018261499c565b614a0b81856149a6565b9350614a16836149b6565b805f5b83811015614a46578151614a2d88826149d4565b9750614a38836149eb565b925050600181019050614a19565b5085935050505092915050565b5f60a082019050614a665f830188613b1c565b614a73602083018761498d565b8181036040830152614a8581866149f7565b9050614a946060830185613bbf565b614aa16080830184613b1c565b9695505050505050565b5f60c082019050614abe5f830189613bbf565b614acb6020830188613b1c565b614ad8604083018761498d565b614ae5606083018661498d565b614af26080830185613bbf565b614aff60a0830184613b1c565b979650505050505050565b5f81519050614b18816139e2565b92915050565b5f805f60608486031215614b3557614b3461397b565b5b5f614b4286828701614b0a565b9350506020614b5386828701614b0a565b9250506040614b6486828701614b0a565b915050925092509256fea26469706673582212202db2a9a5a2d266546ea3377a2091b2ff26965af5d35151f0d0edbdc8dba0df2c64736f6c63430008140033
Deployed Bytecode Sourcemap
12316:15267:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2681:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3595:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13465:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12395:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3002:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20551:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13249:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13209;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17818:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3772:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12498:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2901:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4272:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12453:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12805:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20716:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12658:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13064:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12884:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3118:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;803:103;;;;;;;;;;;;;:::i;:::-;;17091:152;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18365:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12590:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12957;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18736:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16927:112;;;;;;;;;;;;;:::i;:::-;;580:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12627:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13099:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18628:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2789:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19614:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13031:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13289:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13175:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4495:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3253:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20122:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13686:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12845:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19424:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19076:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18101:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12690:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17313:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12923:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3436:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12732:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12994:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;914:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13137:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12772:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20361:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2681:100;2735:13;2768:5;2761:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2681:100;:::o;3595:169::-;3678:4;3695:39;3704:12;:10;:12::i;:::-;3718:7;3727:6;3695:8;:39::i;:::-;3752:4;3745:11;;3595:169;;;;:::o;13465:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;12395:51::-;;;:::o;3002:108::-;3063:7;3090:12;;3083:19;;3002:108;:::o;20551:157::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20658:9:::1;;;;;;;;;;;20630:38;;20647:9;20630:38;;;;;;;;;;;;20691:9;20679;;:21;;;;;;;;;;;;;;;;;;20551:157:::0;:::o;13249:33::-;;;;:::o;13209:::-;;;;:::o;17818:275::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17955:4:::1;17947;17942:1;17926:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17925:26;;;;:::i;:::-;17924:35;;;;:::i;:::-;17914:6;:45;;17892:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;18078:6;18068;:17;;;;:::i;:::-;18045:20;:40;;;;17818:275:::0;:::o;3772:492::-;3912:4;3929:36;3939:6;3947:9;3958:6;3929:9;:36::i;:::-;3978:24;4005:11;:19;4017:6;4005:19;;;;;;;;;;;;;;;:33;4025:12;:10;:12::i;:::-;4005:33;;;;;;;;;;;;;;;;3978:60;;4077:6;4057:16;:26;;4049:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4164:57;4173:6;4181:12;:10;:12::i;:::-;4214:6;4195:16;:25;4164:8;:57::i;:::-;4252:4;4245:11;;;3772:492;;;;;:::o;12498:53::-;12544:6;12498:53;:::o;2901:93::-;2959:5;2984:2;2977:9;;2901:93;:::o;4272:215::-;4360:4;4377:80;4386:12;:10;:12::i;:::-;4400:7;4446:10;4409:11;:25;4421:12;:10;:12::i;:::-;4409:25;;;;;;;;;;;;;;;:34;4435:7;4409:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4377:8;:80::i;:::-;4475:4;4468:11;;4272:215;;;;:::o;12453:38::-;;;:::o;12805:33::-;;;;;;;;;;;;;:::o;20716:126::-;20782:4;20806:19;:28;20826:7;20806:28;;;;;;;;;;;;;;;;;;;;;;;;;20799:35;;20716:126;;;:::o;12658:23::-;;;;;;;;;;;;;:::o;13064:28::-;;;;:::o;12884:30::-;;;;;;;;;;;;;:::o;3118:127::-;3192:7;3219:9;:18;3229:7;3219:18;;;;;;;;;;;;;;;;3212:25;;3118:127;;;:::o;803:103::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;868:30:::1;895:1;868:18;:30::i;:::-;803:103::o:0;17091:152::-;17143:4;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17177:5:::1;17160:14;;:22;;;;;;;;;;;;;;;;;;17198:15;;;;;;;;;;17231:4;17224:11;;17091:152:::0;:::o;18365:167::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18520:4:::1;18478:31;:39;18510:6;18478:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18365:167:::0;;:::o;12590:30::-;;;;;;;;;;;;;:::o;12957:::-;;;;:::o;18736:332::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18904:13:::1;18886:15;:31;;;;18946:13;18928:15;:31;;;;18982:7;18970:9;:19;;;;19051:9;;19033:15;;19015;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;19000:12;:60;;;;18736:332:::0;;;:::o;16927:112::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16998:4:::1;16982:13;;:20;;;;;;;;;;;;;;;;;;17027:4;17013:11;;:18;;;;;;;;;;;;;;;;;;16927:112::o:0;580:87::-;626:7;653:6;;;;;;;;;;;646:13;;580:87;:::o;12627:24::-;;;;;;;;;;;;;:::o;13099:31::-;;;;:::o;18628:100::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18713:7:::1;18699:11;;:21;;;;;;;;;;;;;;;;;;18628:100:::0;:::o;2789:104::-;2845:13;2878:7;2871:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2789:104;:::o;19614:304::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19758:13:::1;19750:21;;:4;:21;;::::0;19728:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19869:41;19898:4;19904:5;19869:28;:41::i;:::-;19614:304:::0;;:::o;13031:24::-;;;;:::o;13289:27::-;;;;:::o;13175:25::-;;;;:::o;4495:413::-;4588:4;4605:24;4632:11;:25;4644:12;:10;:12::i;:::-;4632:25;;;;;;;;;;;;;;;:34;4658:7;4632:34;;;;;;;;;;;;;;;;4605:61;;4705:15;4685:16;:35;;4677:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4798:67;4807:12;:10;:12::i;:::-;4821:7;4849:15;4830:16;:34;4798:8;:67::i;:::-;4896:4;4889:11;;;4495:413;;;;:::o;3253:175::-;3339:4;3356:42;3366:12;:10;:12::i;:::-;3380:9;3391:6;3356:9;:42::i;:::-;3416:4;3409:11;;3253:175;;;;:::o;20122:231::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20282:15:::1;;;;;;;;;;;20239:59;;20262:18;20239:59;;;;;;;;;;;;20327:18;20309:15;;:36;;;;;;;;;;;;;;;;;;20122:231:::0;:::o;13686:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12845:32::-;;;;;;;;;;;;;:::o;19424:182::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19540:8:::1;19509:19;:28;19529:7;19509:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19580:7;19564:34;;;19589:8;19564:34;;;;;;:::i;:::-;;;;;;;;19424:182:::0;;:::o;19076:340::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19246:13:::1;19227:16;:32;;;;19289:13;19270:16;:32;;;;19326:7;19313:10;:20;;;;19398:10;;19379:16;;19360;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;19344:13;:64;;;;19076:340:::0;;;:::o;18101:256::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18241:4:::1;18233;18228:1;18212:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18211:26;;;;:::i;:::-;18210:35;;;;:::i;:::-;18200:6;:45;;18178:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;18342:6;18332;:17;;;;:::i;:::-;18320:9;:29;;;;18101:256:::0;:::o;12690:35::-;;;;:::o;17313:497::-;17421:4;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17500:6:::1;17495:1;17479:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17478:28;;;;:::i;:::-;17465:9;:41;;17443:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17655:4;17650:1;17634:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17633:26;;;;:::i;:::-;17620:9;:39;;17598:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;17771:9;17750:18;:30;;;;17798:4;17791:11;;17313:497:::0;;;:::o;12923:27::-;;;;:::o;3436:151::-;3525:7;3552:11;:18;3564:5;3552:18;;;;;;;;;;;;;;;:27;3571:7;3552:27;;;;;;;;;;;;;;;;3545:34;;3436:151;;;;:::o;12732:33::-;;;;:::o;12994:30::-;;;;:::o;914:201::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1023:1:::1;1003:22;;:8;:22;;::::0;995:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1079:28;1098:8;1079:18;:28::i;:::-;914:201:::0;:::o;13137:31::-;;;;:::o;12772:24::-;;;;:::o;20361:182::-;726:12;:10;:12::i;:::-;715:23;;:7;:5;:7::i;:::-;:23;;;707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20493:8:::1;;;;;;;;;;;20464:38;;20480:11;20464:38;;;;;;;;;;;;20524:11;20513:8;;:22;;;;;;;;;;;;;;;;;;20361:182:::0;:::o;233:98::-;286:7;313:10;306:17;;233:98;:::o;6064:380::-;6217:1;6200:19;;:5;:19;;;6192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6298:1;6279:21;;:7;:21;;;6271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6382:6;6352:11;:18;6364:5;6352:18;;;;;;;;;;;;;;;:27;6371:7;6352:27;;;;;;;;;;;;;;;:36;;;;6420:7;6404:32;;6413:5;6404:32;;;6429:6;6404:32;;;;;;:::i;:::-;;;;;;;;6064:380;;;:::o;20900:3924::-;21048:1;21032:18;;:4;:18;;;21024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21125:1;21111:16;;:2;:16;;;21103:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21194:1;21184:6;:11;21180:93;;21212:28;21228:4;21234:2;21238:1;21212:15;:28::i;:::-;21255:7;;21180:93;21289:14;;;;;;;;;;;21285:1694;;;21350:7;:5;:7::i;:::-;21342:15;;:4;:15;;;;:49;;;;;21384:7;:5;:7::i;:::-;21378:13;;:2;:13;;;;21342:49;:86;;;;;21426:1;21412:16;;:2;:16;;;;21342:86;:128;;;;;21463:6;21449:21;;:2;:21;;;;21342:128;:158;;;;;21492:8;;;;;;;;;;;21491:9;21342:158;21320:1648;;;21540:13;;;;;;;;;;;21535:223;;21612:19;:25;21632:4;21612:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21641:19;:23;21661:2;21641:23;;;;;;;;;;;;;;;;;;;;;;;;;21612:52;21578:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21535:223;21832:25;:31;21858:4;21832:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21889:31;:35;21921:2;21889:35;;;;;;;;;;;;;;;;;;;;;;;;;21888:36;21832:92;21806:1147;;;22011:20;;22001:6;:30;;21967:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;22219:9;;22202:13;22212:2;22202:9;:13::i;:::-;22193:6;:22;;;;:::i;:::-;:35;;22159:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21806:1147;;;22397:25;:29;22423:2;22397:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22452:31;:37;22484:4;22452:37;;;;;;;;;;;;;;;;;;;;;;;;;22451:38;22397:92;22371:582;;;22576:20;;22566:6;:30;;22532:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;22371:582;;;22733:31;:35;22765:2;22733:35;;;;;;;;;;;;;;;;;;;;;;;;;22728:225;;22853:9;;22836:13;22846:2;22836:9;:13::i;:::-;22827:6;:22;;;;:::i;:::-;:35;;22793:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22728:225;22371:582;21806:1147;21320:1648;21285:1694;22991:28;23022:24;23040:4;23022:9;:24::i;:::-;22991:55;;23059:12;23098:18;;23074:20;:42;;23059:57;;23147:7;:35;;;;;23171:11;;;;;;;;;;;23147:35;:61;;;;;23200:8;;;;;;;;;;;23199:9;23147:61;:110;;;;;23226:25;:31;23252:4;23226:31;;;;;;;;;;;;;;;;;;;;;;;;;23225:32;23147:110;:153;;;;;23275:19;:25;23295:4;23275:25;;;;;;;;;;;;;;;;;;;;;;;;;23274:26;23147:153;:194;;;;;23318:19;:23;23338:2;23318:23;;;;;;;;;;;;;;;;;;;;;;;;;23317:24;23147:194;23129:326;;;23379:4;23368:8;;:15;;;;;;;;;;;;;;;;;;23400:10;:8;:10::i;:::-;23438:5;23427:8;;:16;;;;;;;;;;;;;;;;;;23129:326;23467:12;23483:8;;;;;;;;;;;23482:9;23467:24;;23593:19;:25;23613:4;23593:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23622:19;:23;23642:2;23622:23;;;;;;;;;;;;;;;;;;;;;;;;;23593:52;23589:100;;;23672:5;23662:15;;23589:100;23701:12;23806:7;23802:969;;;23858:25;:29;23884:2;23858:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23907:1;23891:13;;:17;23858:50;23854:768;;;23936:34;23966:3;23936:25;23947:13;;23936:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23929:41;;24039:13;;24019:16;;24012:4;:23;;;;:::i;:::-;24011:41;;;;:::i;:::-;23989:18;;:63;;;;;;;:::i;:::-;;;;;;;;24109:13;;24095:10;;24088:4;:17;;;;:::i;:::-;24087:35;;;;:::i;:::-;24071:12;;:51;;;;;;;:::i;:::-;;;;;;;;24191:13;;24171:16;;24164:4;:23;;;;:::i;:::-;24163:41;;;;:::i;:::-;24141:18;;:63;;;;;;;:::i;:::-;;;;;;;;23854:768;;;24266:25;:31;24292:4;24266:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;24316:1;24301:12;;:16;24266:51;24262:360;;;24345:33;24374:3;24345:24;24356:12;;24345:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24338:40;;24446:12;;24427:15;;24420:4;:22;;;;:::i;:::-;24419:39;;;;:::i;:::-;24397:18;;:61;;;;;;;:::i;:::-;;;;;;;;24514:12;;24501:9;;24494:4;:16;;;;:::i;:::-;24493:33;;;;:::i;:::-;24477:12;;:49;;;;;;;:::i;:::-;;;;;;;;24594:12;;24575:15;;24568:4;:22;;;;:::i;:::-;24567:39;;;;:::i;:::-;24545:18;;:61;;;;;;;:::i;:::-;;;;;;;;24262:360;23854:768;24649:1;24642:4;:8;24638:91;;;24671:42;24687:4;24701;24708;24671:15;:42::i;:::-;24638:91;24755:4;24745:14;;;;;:::i;:::-;;;23802:969;24783:33;24799:4;24805:2;24809:6;24783:15;:33::i;:::-;21013:3811;;;;20900:3924;;;;:::o;1123:191::-;1197:16;1216:6;;;;;;;;;;;1197:25;;1242:8;1233:6;;:17;;;;;;;;;;;;;;;;;;1297:8;1266:40;;1287:8;1266:40;;;;;;;;;;;;1186:128;1123:191;:::o;19926:188::-;20043:5;20009:25;:31;20035:4;20009:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20100:5;20066:40;;20094:4;20066:40;;;;;;;;;;;;19926:188;;:::o;4916:733::-;5074:1;5056:20;;:6;:20;;;5048:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5158:1;5137:23;;:9;:23;;;5129:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5213:47;5234:6;5242:9;5253:6;5213:20;:47::i;:::-;5273:21;5297:9;:17;5307:6;5297:17;;;;;;;;;;;;;;;;5273:41;;5350:6;5333:13;:23;;5325:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5471:6;5455:13;:22;5435:9;:17;5445:6;5435:17;;;;;;;;;;;;;;;:42;;;;5523:6;5499:9;:20;5509:9;5499:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5564:9;5547:35;;5556:6;5547:35;;;5575:6;5547:35;;;;;;:::i;:::-;;;;;;;;5595:46;5615:6;5623:9;5634:6;5595:19;:46::i;:::-;5037:612;4916:733;;;:::o;25951:1629::-;25990:23;26016:24;26034:4;26016:9;:24::i;:::-;25990:50;;26051:25;26147:12;;26113:18;;26079;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;26051:108;;26170:12;26218:1;26199:15;:20;:46;;;;26244:1;26223:17;:22;26199:46;26195:85;;;26262:7;;;;;26195:85;26341:23;26454:1;26421:17;26386:18;;26368:15;:36;;;;:::i;:::-;26367:71;;;;:::i;:::-;:88;;;;:::i;:::-;26341:114;;26466:26;26495:36;26515:15;26495;:19;;:36;;;;:::i;:::-;26466:65;;26544:25;26572:21;26544:49;;26606:36;26623:18;26606:16;:36::i;:::-;26655:18;26676:44;26702:17;26676:21;:25;;:44;;;;:::i;:::-;26655:65;;26733:23;26759:81;26812:17;26759:34;26774:18;;26759:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26733:107;;26851:17;26871:51;26904:17;26871:28;26886:12;;26871:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;26851:71;;26935:23;26992:9;26974:15;26961:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;26935:66;;27035:1;27014:18;:22;;;;27068:1;27047:18;:22;;;;27095:1;27080:12;:16;;;;27131:9;;;;;;;;;;;27123:23;;27154:9;27123:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27109:59;;;;;27203:1;27185:15;:19;:42;;;;;27226:1;27208:15;:19;27185:42;27181:278;;;27244:46;27257:15;27274;27244:12;:46::i;:::-;27310:137;27343:18;27380:15;27414:18;;27310:137;;;;;;;;:::i;:::-;;;;;;;;27181:278;27493:15;;;;;;;;;;;27485:29;;27536:21;27485:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27471:101;;;;;25979:1601;;;;;;;;;;25951:1629;:::o;6848:98::-;6906:7;6937:1;6933;:5;;;;:::i;:::-;6926:12;;6848:98;;;;:::o;6954:::-;7012:7;7043:1;7039;:5;;;;:::i;:::-;7032:12;;6954:98;;;;:::o;6452:125::-;;;;:::o;6585:124::-;;;;:::o;6742:98::-;6800:7;6831:1;6827;:5;;;;:::i;:::-;6820:12;;6742:98;;;;:::o;24832:589::-;24958:21;24996:1;24982:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24958:40;;25027:4;25009;25014:1;25009:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25053:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25043:4;25048:1;25043:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25088:62;25105:4;25120:15;25138:11;25088:8;:62::i;:::-;25189:15;:66;;;25270:11;25296:1;25340:4;25367;25387:15;25189:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24887:534;24832:589;:::o;25429:514::-;25577:62;25594:4;25609:15;25627:11;25577:8;:62::i;:::-;25682:15;:31;;;25721:9;25754:4;25774:11;25800:1;25843;25886:8;;;;;;;;;;;25909:15;25682:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25429:514;;:::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:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:619::-;7665:6;7673;7681;7730:2;7718:9;7709:7;7705:23;7701:32;7698:119;;;7736:79;;:::i;:::-;7698:119;7856:1;7881:53;7926:7;7917:6;7906:9;7902:22;7881:53;:::i;:::-;7871:63;;7827:117;7983:2;8009:53;8054:7;8045:6;8034:9;8030:22;8009:53;:::i;:::-;7999:63;;7954:118;8111:2;8137:53;8182:7;8173:6;8162:9;8158:22;8137:53;:::i;:::-;8127:63;;8082:118;7588:619;;;;;:::o;8213:323::-;8269:6;8318:2;8306:9;8297:7;8293:23;8289:32;8286:119;;;8324:79;;:::i;:::-;8286:119;8444:1;8469:50;8511:7;8502:6;8491:9;8487:22;8469:50;:::i;:::-;8459:60;;8415:114;8213:323;;;;:::o;8542:474::-;8610:6;8618;8667:2;8655:9;8646:7;8642:23;8638:32;8635:119;;;8673:79;;:::i;:::-;8635:119;8793:1;8818:53;8863:7;8854:6;8843:9;8839:22;8818:53;:::i;:::-;8808:63;;8764:117;8920:2;8946:53;8991:7;8982:6;8971:9;8967:22;8946:53;:::i;:::-;8936:63;;8891:118;8542:474;;;;;:::o;9022:180::-;9070:77;9067:1;9060:88;9167:4;9164:1;9157:15;9191:4;9188:1;9181:15;9208:320;9252:6;9289:1;9283:4;9279:12;9269:22;;9336:1;9330:4;9326:12;9357:18;9347:81;;9413:4;9405:6;9401:17;9391:27;;9347:81;9475:2;9467:6;9464:14;9444:18;9441:38;9438:84;;9494:18;;:::i;:::-;9438:84;9259:269;9208:320;;;:::o;9534:182::-;9674:34;9670:1;9662:6;9658:14;9651:58;9534:182;:::o;9722:366::-;9864:3;9885:67;9949:2;9944:3;9885:67;:::i;:::-;9878:74;;9961:93;10050:3;9961:93;:::i;:::-;10079:2;10074:3;10070:12;10063:19;;9722:366;;;:::o;10094:419::-;10260:4;10298:2;10287:9;10283:18;10275:26;;10347:9;10341:4;10337:20;10333:1;10322:9;10318:17;10311:47;10375:131;10501:4;10375:131;:::i;:::-;10367:139;;10094:419;;;:::o;10519:180::-;10567:77;10564:1;10557:88;10664:4;10661:1;10654:15;10688:4;10685:1;10678:15;10705:410;10745:7;10768:20;10786:1;10768:20;:::i;:::-;10763:25;;10802:20;10820:1;10802:20;:::i;:::-;10797:25;;10857:1;10854;10850:9;10879:30;10897:11;10879:30;:::i;:::-;10868:41;;11058:1;11049:7;11045:15;11042:1;11039:22;11019:1;11012:9;10992:83;10969:139;;11088:18;;:::i;:::-;10969:139;10753:362;10705:410;;;;:::o;11121:180::-;11169:77;11166:1;11159:88;11266:4;11263:1;11256:15;11290:4;11287:1;11280:15;11307:185;11347:1;11364:20;11382:1;11364:20;:::i;:::-;11359:25;;11398:20;11416:1;11398:20;:::i;:::-;11393:25;;11437:1;11427:35;;11442:18;;:::i;:::-;11427:35;11484:1;11481;11477:9;11472:14;;11307:185;;;;:::o;11498:234::-;11638:34;11634:1;11626:6;11622:14;11615:58;11707:17;11702:2;11694:6;11690:15;11683:42;11498:234;:::o;11738:366::-;11880:3;11901:67;11965:2;11960:3;11901:67;:::i;:::-;11894:74;;11977:93;12066:3;11977:93;:::i;:::-;12095:2;12090:3;12086:12;12079:19;;11738:366;;;:::o;12110:419::-;12276:4;12314:2;12303:9;12299:18;12291:26;;12363:9;12357:4;12353:20;12349:1;12338:9;12334:17;12327:47;12391:131;12517:4;12391:131;:::i;:::-;12383:139;;12110:419;;;:::o;12535:227::-;12675:34;12671:1;12663:6;12659:14;12652:58;12744:10;12739:2;12731:6;12727:15;12720:35;12535:227;:::o;12768:366::-;12910:3;12931:67;12995:2;12990:3;12931:67;:::i;:::-;12924:74;;13007:93;13096:3;13007:93;:::i;:::-;13125:2;13120:3;13116:12;13109:19;;12768:366;;;:::o;13140:419::-;13306:4;13344:2;13333:9;13329:18;13321:26;;13393:9;13387:4;13383:20;13379:1;13368:9;13364:17;13357:47;13421:131;13547:4;13421:131;:::i;:::-;13413:139;;13140:419;;;:::o;13565:191::-;13605:3;13624:20;13642:1;13624:20;:::i;:::-;13619:25;;13658:20;13676:1;13658:20;:::i;:::-;13653:25;;13701:1;13698;13694:9;13687:16;;13722:3;13719:1;13716:10;13713:36;;;13729:18;;:::i;:::-;13713:36;13565:191;;;;:::o;13762:244::-;13902:34;13898:1;13890:6;13886:14;13879:58;13971:27;13966:2;13958:6;13954:15;13947:52;13762:244;:::o;14012:366::-;14154:3;14175:67;14239:2;14234:3;14175:67;:::i;:::-;14168:74;;14251:93;14340:3;14251:93;:::i;:::-;14369:2;14364:3;14360:12;14353:19;;14012:366;;;:::o;14384:419::-;14550:4;14588:2;14577:9;14573:18;14565:26;;14637:9;14631:4;14627:20;14623:1;14612:9;14608:17;14601:47;14665:131;14791:4;14665:131;:::i;:::-;14657:139;;14384:419;;;:::o;14809:224::-;14949:34;14945:1;14937:6;14933:14;14926:58;15018:7;15013:2;15005:6;15001:15;14994:32;14809:224;:::o;15039:366::-;15181:3;15202:67;15266:2;15261:3;15202:67;:::i;:::-;15195:74;;15278:93;15367:3;15278:93;:::i;:::-;15396:2;15391:3;15387:12;15380:19;;15039:366;;;:::o;15411:419::-;15577:4;15615:2;15604:9;15600:18;15592:26;;15664:9;15658:4;15654:20;15650:1;15639:9;15635:17;15628:47;15692:131;15818:4;15692:131;:::i;:::-;15684:139;;15411:419;;;:::o;15836:223::-;15976:34;15972:1;15964:6;15960:14;15953:58;16045:6;16040:2;16032:6;16028:15;16021:31;15836:223;:::o;16065:366::-;16207:3;16228:67;16292:2;16287:3;16228:67;:::i;:::-;16221:74;;16304:93;16393:3;16304:93;:::i;:::-;16422:2;16417:3;16413:12;16406:19;;16065:366;;;:::o;16437:419::-;16603:4;16641:2;16630:9;16626:18;16618:26;;16690:9;16684:4;16680:20;16676:1;16665:9;16661:17;16654:47;16718:131;16844:4;16718:131;:::i;:::-;16710:139;;16437:419;;;:::o;16862:240::-;17002:34;16998:1;16990:6;16986:14;16979:58;17071:23;17066:2;17058:6;17054:15;17047:48;16862:240;:::o;17108:366::-;17250:3;17271:67;17335:2;17330:3;17271:67;:::i;:::-;17264:74;;17347:93;17436:3;17347:93;:::i;:::-;17465:2;17460:3;17456:12;17449:19;;17108:366;;;:::o;17480:419::-;17646:4;17684:2;17673:9;17669:18;17661:26;;17733:9;17727:4;17723:20;17719:1;17708:9;17704:17;17697:47;17761:131;17887:4;17761:131;:::i;:::-;17753:139;;17480:419;;;:::o;17905:239::-;18045:34;18041:1;18033:6;18029:14;18022:58;18114:22;18109:2;18101:6;18097:15;18090:47;17905:239;:::o;18150:366::-;18292:3;18313:67;18377:2;18372:3;18313:67;:::i;:::-;18306:74;;18389:93;18478:3;18389:93;:::i;:::-;18507:2;18502:3;18498:12;18491:19;;18150:366;;;:::o;18522:419::-;18688:4;18726:2;18715:9;18711:18;18703:26;;18775:9;18769:4;18765:20;18761:1;18750:9;18746:17;18739:47;18803:131;18929:4;18803:131;:::i;:::-;18795:139;;18522:419;;;:::o;18947:225::-;19087:34;19083:1;19075:6;19071:14;19064:58;19156:8;19151:2;19143:6;19139:15;19132:33;18947:225;:::o;19178:366::-;19320:3;19341:67;19405:2;19400:3;19341:67;:::i;:::-;19334:74;;19417:93;19506:3;19417:93;:::i;:::-;19535:2;19530:3;19526:12;19519:19;;19178:366;;;:::o;19550:419::-;19716:4;19754:2;19743:9;19739:18;19731:26;;19803:9;19797:4;19793:20;19789:1;19778:9;19774:17;19767:47;19831:131;19957:4;19831:131;:::i;:::-;19823:139;;19550:419;;;:::o;19975:223::-;20115:34;20111:1;20103:6;20099:14;20092:58;20184:6;20179:2;20171:6;20167:15;20160:31;19975:223;:::o;20204:366::-;20346:3;20367:67;20431:2;20426:3;20367:67;:::i;:::-;20360:74;;20443:93;20532:3;20443:93;:::i;:::-;20561:2;20556:3;20552:12;20545:19;;20204:366;;;:::o;20576:419::-;20742:4;20780:2;20769:9;20765:18;20757:26;;20829:9;20823:4;20819:20;20815:1;20804:9;20800:17;20793:47;20857:131;20983:4;20857:131;:::i;:::-;20849:139;;20576:419;;;:::o;21001:221::-;21141:34;21137:1;21129:6;21125:14;21118:58;21210:4;21205:2;21197:6;21193:15;21186:29;21001:221;:::o;21228:366::-;21370:3;21391:67;21455:2;21450:3;21391:67;:::i;:::-;21384:74;;21467:93;21556:3;21467:93;:::i;:::-;21585:2;21580:3;21576:12;21569:19;;21228:366;;;:::o;21600:419::-;21766:4;21804:2;21793:9;21789:18;21781:26;;21853:9;21847:4;21843:20;21839:1;21828:9;21824:17;21817:47;21881:131;22007:4;21881:131;:::i;:::-;21873:139;;21600:419;;;:::o;22025:224::-;22165:34;22161:1;22153:6;22149:14;22142:58;22234:7;22229:2;22221:6;22217:15;22210:32;22025:224;:::o;22255:366::-;22397:3;22418:67;22482:2;22477:3;22418:67;:::i;:::-;22411:74;;22494:93;22583:3;22494:93;:::i;:::-;22612:2;22607:3;22603:12;22596:19;;22255:366;;;:::o;22627:419::-;22793:4;22831:2;22820:9;22816:18;22808:26;;22880:9;22874:4;22870:20;22866:1;22855:9;22851:17;22844:47;22908:131;23034:4;22908:131;:::i;:::-;22900:139;;22627:419;;;:::o;23052:222::-;23192:34;23188:1;23180:6;23176:14;23169:58;23261:5;23256:2;23248:6;23244:15;23237:30;23052:222;:::o;23280:366::-;23422:3;23443:67;23507:2;23502:3;23443:67;:::i;:::-;23436:74;;23519:93;23608:3;23519:93;:::i;:::-;23637:2;23632:3;23628:12;23621:19;;23280:366;;;:::o;23652:419::-;23818:4;23856:2;23845:9;23841:18;23833:26;;23905:9;23899:4;23895:20;23891:1;23880:9;23876:17;23869:47;23933:131;24059:4;23933:131;:::i;:::-;23925:139;;23652:419;;;:::o;24077:172::-;24217:24;24213:1;24205:6;24201:14;24194:48;24077:172;:::o;24255:366::-;24397:3;24418:67;24482:2;24477:3;24418:67;:::i;:::-;24411:74;;24494:93;24583:3;24494:93;:::i;:::-;24612:2;24607:3;24603:12;24596:19;;24255:366;;;:::o;24627:419::-;24793:4;24831:2;24820:9;24816:18;24808:26;;24880:9;24874:4;24870:20;24866:1;24855:9;24851:17;24844:47;24908:131;25034:4;24908:131;:::i;:::-;24900:139;;24627:419;;;:::o;25052:240::-;25192:34;25188:1;25180:6;25176:14;25169:58;25261:23;25256:2;25248:6;25244:15;25237:48;25052:240;:::o;25298:366::-;25440:3;25461:67;25525:2;25520:3;25461:67;:::i;:::-;25454:74;;25537:93;25626:3;25537:93;:::i;:::-;25655:2;25650:3;25646:12;25639:19;;25298:366;;;:::o;25670:419::-;25836:4;25874:2;25863:9;25859:18;25851:26;;25923:9;25917:4;25913:20;25909:1;25898:9;25894:17;25887:47;25951:131;26077:4;25951:131;:::i;:::-;25943:139;;25670:419;;;:::o;26095:169::-;26235:21;26231:1;26223:6;26219:14;26212:45;26095:169;:::o;26270:366::-;26412:3;26433:67;26497:2;26492:3;26433:67;:::i;:::-;26426:74;;26509:93;26598:3;26509:93;:::i;:::-;26627:2;26622:3;26618:12;26611:19;;26270:366;;;:::o;26642:419::-;26808:4;26846:2;26835:9;26831:18;26823:26;;26895:9;26889:4;26885:20;26881:1;26870:9;26866:17;26859:47;26923:131;27049:4;26923:131;:::i;:::-;26915:139;;26642:419;;;:::o;27067:241::-;27207:34;27203:1;27195:6;27191:14;27184:58;27276:24;27271:2;27263:6;27259:15;27252:49;27067:241;:::o;27314:366::-;27456:3;27477:67;27541:2;27536:3;27477:67;:::i;:::-;27470:74;;27553:93;27642:3;27553:93;:::i;:::-;27671:2;27666:3;27662:12;27655:19;;27314:366;;;:::o;27686:419::-;27852:4;27890:2;27879:9;27875:18;27867:26;;27939:9;27933:4;27929:20;27925:1;27914:9;27910:17;27903:47;27967:131;28093:4;27967:131;:::i;:::-;27959:139;;27686:419;;;:::o;28111:194::-;28151:4;28171:20;28189:1;28171:20;:::i;:::-;28166:25;;28205:20;28223:1;28205:20;:::i;:::-;28200:25;;28249:1;28246;28242:9;28234:17;;28273:1;28267:4;28264:11;28261:37;;;28278:18;;:::i;:::-;28261:37;28111:194;;;;:::o;28311:225::-;28451:34;28447:1;28439:6;28435:14;28428:58;28520:8;28515:2;28507:6;28503:15;28496:33;28311:225;:::o;28542:366::-;28684:3;28705:67;28769:2;28764:3;28705:67;:::i;:::-;28698:74;;28781:93;28870:3;28781:93;:::i;:::-;28899:2;28894:3;28890:12;28883:19;;28542:366;;;:::o;28914:419::-;29080:4;29118:2;29107:9;29103:18;29095:26;;29167:9;29161:4;29157:20;29153:1;29142:9;29138:17;29131:47;29195:131;29321:4;29195:131;:::i;:::-;29187:139;;28914:419;;;:::o;29339:147::-;29440:11;29477:3;29462:18;;29339:147;;;;:::o;29492:114::-;;:::o;29612:398::-;29771:3;29792:83;29873:1;29868:3;29792:83;:::i;:::-;29785:90;;29884:93;29973:3;29884:93;:::i;:::-;30002:1;29997:3;29993:11;29986:18;;29612:398;;;:::o;30016:379::-;30200:3;30222:147;30365:3;30222:147;:::i;:::-;30215:154;;30386:3;30379:10;;30016:379;;;:::o;30401:442::-;30550:4;30588:2;30577:9;30573:18;30565:26;;30601:71;30669:1;30658:9;30654:17;30645:6;30601:71;:::i;:::-;30682:72;30750:2;30739:9;30735:18;30726:6;30682:72;:::i;:::-;30764;30832:2;30821:9;30817:18;30808:6;30764:72;:::i;:::-;30401:442;;;;;;:::o;30849:180::-;30897:77;30894:1;30887:88;30994:4;30991:1;30984:15;31018:4;31015:1;31008:15;31035:180;31083:77;31080:1;31073:88;31180:4;31177:1;31170:15;31204:4;31201:1;31194:15;31221:143;31278:5;31309:6;31303:13;31294:22;;31325:33;31352:5;31325:33;:::i;:::-;31221:143;;;;:::o;31370:351::-;31440:6;31489:2;31477:9;31468:7;31464:23;31460:32;31457:119;;;31495:79;;:::i;:::-;31457:119;31615:1;31640:64;31696:7;31687:6;31676:9;31672:22;31640:64;:::i;:::-;31630:74;;31586:128;31370:351;;;;:::o;31727:85::-;31772:7;31801:5;31790:16;;31727:85;;;:::o;31818:158::-;31876:9;31909:61;31927:42;31936:32;31962:5;31936:32;:::i;:::-;31927:42;:::i;:::-;31909:61;:::i;:::-;31896:74;;31818:158;;;:::o;31982:147::-;32077:45;32116:5;32077:45;:::i;:::-;32072:3;32065:58;31982:147;;:::o;32135:114::-;32202:6;32236:5;32230:12;32220:22;;32135:114;;;:::o;32255:184::-;32354:11;32388:6;32383:3;32376:19;32428:4;32423:3;32419:14;32404:29;;32255:184;;;;:::o;32445:132::-;32512:4;32535:3;32527:11;;32565:4;32560:3;32556:14;32548:22;;32445:132;;;:::o;32583:108::-;32660:24;32678:5;32660:24;:::i;:::-;32655:3;32648:37;32583:108;;:::o;32697:179::-;32766:10;32787:46;32829:3;32821:6;32787:46;:::i;:::-;32865:4;32860:3;32856:14;32842:28;;32697:179;;;;:::o;32882:113::-;32952:4;32984;32979:3;32975:14;32967:22;;32882:113;;;:::o;33031:732::-;33150:3;33179:54;33227:5;33179:54;:::i;:::-;33249:86;33328:6;33323:3;33249:86;:::i;:::-;33242:93;;33359:56;33409:5;33359:56;:::i;:::-;33438:7;33469:1;33454:284;33479:6;33476:1;33473:13;33454:284;;;33555:6;33549:13;33582:63;33641:3;33626:13;33582:63;:::i;:::-;33575:70;;33668:60;33721:6;33668:60;:::i;:::-;33658:70;;33514:224;33501:1;33498;33494:9;33489:14;;33454:284;;;33458:14;33754:3;33747:10;;33155:608;;;33031:732;;;;:::o;33769:831::-;34032:4;34070:3;34059:9;34055:19;34047:27;;34084:71;34152:1;34141:9;34137:17;34128:6;34084:71;:::i;:::-;34165:80;34241:2;34230:9;34226:18;34217:6;34165:80;:::i;:::-;34292:9;34286:4;34282:20;34277:2;34266:9;34262:18;34255:48;34320:108;34423:4;34414:6;34320:108;:::i;:::-;34312:116;;34438:72;34506:2;34495:9;34491:18;34482:6;34438:72;:::i;:::-;34520:73;34588:3;34577:9;34573:19;34564:6;34520:73;:::i;:::-;33769:831;;;;;;;;:::o;34606:807::-;34855:4;34893:3;34882:9;34878:19;34870:27;;34907:71;34975:1;34964:9;34960:17;34951:6;34907:71;:::i;:::-;34988:72;35056:2;35045:9;35041:18;35032:6;34988:72;:::i;:::-;35070:80;35146:2;35135:9;35131:18;35122:6;35070:80;:::i;:::-;35160;35236:2;35225:9;35221:18;35212:6;35160:80;:::i;:::-;35250:73;35318:3;35307:9;35303:19;35294:6;35250:73;:::i;:::-;35333;35401:3;35390:9;35386:19;35377:6;35333:73;:::i;:::-;34606:807;;;;;;;;;:::o;35419:143::-;35476:5;35507:6;35501:13;35492:22;;35523:33;35550:5;35523:33;:::i;:::-;35419:143;;;;:::o;35568:663::-;35656:6;35664;35672;35721:2;35709:9;35700:7;35696:23;35692:32;35689:119;;;35727:79;;:::i;:::-;35689:119;35847:1;35872:64;35928:7;35919:6;35908:9;35904:22;35872:64;:::i;:::-;35862:74;;35818:128;35985:2;36011:64;36067:7;36058:6;36047:9;36043:22;36011:64;:::i;:::-;36001:74;;35956:129;36124:2;36150:64;36206:7;36197:6;36186:9;36182:22;36150:64;:::i;:::-;36140:74;;36095:129;35568:663;;;;;:::o
Swarm Source
ipfs://2db2a9a5a2d266546ea3377a2091b2ff26965af5d35151f0d0edbdc8dba0df2c
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.