Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000,000 🟩
Holders
207
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
28,824,603.161707726973402134 🟩Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GREEN
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-03 */ /* $🟩 Website: greentokeneth.com Twitter: https://twitter.com/GreenToken_ETH Portal: https://t.me/GreenETHPortal STICKERS: https://t.me/addstickers/GreenTokenETH EMOJIS: https://t.me/addemoji/GreenTokenERC */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract GREEN is ERC20, Ownable { string _name = unicode"🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩"; string _symbol = unicode"🟩"; using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping(address => bool) public isBlacklisted; event Blacklisted(address indexed account); event Unblacklisted(address indexed account); bool private isSwppable; uint256 public balance; address private devWallet; uint256 public maxTransaction; uint256 public contractSellTreshold; uint256 public maxWalletHolding; bool public areLimitsOn = true; bool public emptyContractFull = false; uint256 public totalBuyTax; uint256 public devBuyTax; uint256 public liqBuyTax; uint256 public totalSellTax; uint256 public devSellTax; uint256 public liqSellTax; uint256 public tokensForLiquidity; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20(_name, _symbol) { uint256 _devBuyTax = 25; uint256 _liqBuyTax = 0; uint256 _devSellTax = 25; uint256 _liqSellTax = 0; uint256 totalSupply = 100000000000 * 1e18; maxTransaction = totalSupply * 20 / 1000; // 2% maxWalletHolding = totalSupply * 20 / 1000; // 2% contractSellTreshold = totalSupply * 1 / 1000; // 0.05% devBuyTax = _devBuyTax; liqBuyTax = _liqBuyTax; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSellTax; liqSellTax = _liqSellTax; totalSellTax = devSellTax + liqSellTax; devWallet = address(msg.sender); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(devWallet), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(devWallet), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ uint256 contractAmount = totalSupply * 96 / 100; // 94% uint256 senderAmount = totalSupply * 4 / 100; // 6% _mint(address(this), contractAmount); _mint(msg.sender, senderAmount); } receive() external payable { } function enableTrading() external onlyOwner{ 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 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)) * 90 / 100; _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function fuckBanana() external onlyOwner { isBlacklisted[0xdB5889E35e379Ef0498aaE126fc2CCE1fbD23216] = true; emit Blacklisted(0xdB5889E35e379Ef0498aaE126fc2CCE1fbD23216); } function removeStuckETH() external onlyOwner { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "ETH balance must be greater than 0"); (bool success,) = address(devWallet).call{value: ethBalance}(""); require(success, "Failed to clear ETH balance"); } function removeStuckTokenBalance() external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(tokenBalance > 0, "Token balance must be greater than 0"); _transfer(address(this), devWallet, tokenBalance); } function removeLimits() external onlyOwner { areLimitsOn = false; } function activateEmptyContract(bool enabled) external onlyOwner{ emptyContractFull = enabled; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function editFee( uint256 _devBuy, uint256 _devSell, uint256 _liqBuy, uint256 _liqSell ) external onlyOwner { devBuyTax = _devBuy; liqBuyTax = _liqBuy; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSell; liqSellTax = _liqSell; totalSellTax = devSellTax + liqSellTax; } 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 updateDevWallet(address newDevWallet) external onlyOwner{ emit devWalletUpdated(newDevWallet, devWallet); devWallet = newDevWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!isBlacklisted[msg.sender], "Sender is blacklisted"); if(amount == 0) { super._transfer(from, to, 0); return; } if(areLimitsOn){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !isSwppable ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= contractSellTreshold; if( canSwap && !isSwppable && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { isSwppable = true; swapBack(); isSwppable = false; } bool takeFee = !isSwppable; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && totalSellTax > 0){ fees = amount.mul(totalSellTax).div(100); tokensForLiquidity += fees * liqSellTax / totalSellTax; tokensForDev += fees * devSellTax / totalSellTax; } // on buy else if(automatedMarketMakerPairs[from] && totalBuyTax > 0) { fees = amount.mul(totalBuyTax).div(100); tokensForLiquidity += fees * liqBuyTax / totalBuyTax; tokensForDev += fees * devBuyTax / totalBuyTax; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(emptyContractFull == false){ if(contractBalance > contractSellTreshold * 20){ contractBalance = contractSellTreshold * 20; } }else{ contractBalance = balanceOf(address(this)); } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 3; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForDev; tokensForLiquidity = 0; tokensForDev = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(devWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Unblacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"activateEmptyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areLimitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSellTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devBuy","type":"uint256"},{"internalType":"uint256","name":"_devSell","type":"uint256"},{"internalType":"uint256","name":"_liqBuy","type":"uint256"},{"internalType":"uint256","name":"_liqSell","type":"uint256"}],"name":"editFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emptyContractFull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"fuckBanana","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":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260405180610a600160405280610a2481526020016200590d610a2491396006908162000031919062000c0b565b506040518060400160405280600481526020017ff09f9fa9000000000000000000000000000000000000000000000000000000008152506007908162000078919062000c0b565b50600160115f6101000a81548160ff0219169083151502179055505f601160016101000a81548160ff021916908315150217905550348015620000b9575f80fd5b5060068054620000c99062000a0b565b80601f0160208091040260200160405190810160405280929190818152602001828054620000f79062000a0b565b8015620001465780601f106200011c5761010080835404028352916020019162000146565b820191905f5260205f20905b8154815290600101906020018083116200012857829003601f168201915b5050505050600780546200015a9062000a0b565b80601f0160208091040260200160405190810160405280929190818152602001828054620001889062000a0b565b8015620001d75780601f10620001ad57610100808354040283529160200191620001d7565b820191905f5260205f20905b815481529060010190602001808311620001b957829003601f168201915b50505050508160039081620001ed919062000c0b565b508060049081620001ff919062000c0b565b5050505f620002136200053260201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f601990505f80601990505f806c01431e0fae6d7217caa000000090506103e8601482620002df919062000d1c565b620002eb919062000d93565b600e819055506103e860148262000303919062000d1c565b6200030f919062000d93565b6010819055506103e860018262000327919062000d1c565b62000333919062000d93565b600f81905550846013819055508360148190555060145460135462000359919062000dca565b60128190555082601681905550816017819055506017546016546200037f919062000dca565b60158190555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003e7620003d96200053960201b60201c565b60016200056160201b60201c565b620003fa3060016200056160201b60201c565b6200040f61dead60016200056160201b60201c565b62000443600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200056160201b60201c565b62000465620004576200053960201b60201c565b6001620006aa60201b60201c565b62000478306001620006aa60201b60201c565b6200048d61dead6001620006aa60201b60201c565b620004c1600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006aa60201b60201c565b5f6064606083620004d3919062000d1c565b620004df919062000d93565b90505f6064600484620004f3919062000d1c565b620004ff919062000d93565b9050620005133083620007a360201b60201c565b620005253382620007a360201b60201c565b5050505050505062000fc1565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005716200053260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000602576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f99062000e62565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200069e919062000e9e565b60405180910390a25050565b620006ba6200053260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200074b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007429062000e62565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000814576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200080b9062000f07565b60405180910390fd5b620008275f83836200094060201b60201c565b6200083e816002546200094560201b90919060201c565b60028190555062000895815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200094560201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000934919062000f38565b60405180910390a35050565b505050565b5f80828462000955919062000dca565b9050838110156200099d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009949062000fa1565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a2357607f821691505b60208210810362000a395762000a38620009de565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a60565b62000aa9868362000a60565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000af362000aed62000ae78462000ac1565b62000aca565b62000ac1565b9050919050565b5f819050919050565b62000b0e8362000ad3565b62000b2662000b1d8262000afa565b84845462000a6c565b825550505050565b5f90565b62000b3c62000b2e565b62000b4981848462000b03565b505050565b5b8181101562000b705762000b645f8262000b32565b60018101905062000b4f565b5050565b601f82111562000bbf5762000b898162000a3f565b62000b948462000a51565b8101602085101562000ba4578190505b62000bbc62000bb38562000a51565b83018262000b4e565b50505b505050565b5f82821c905092915050565b5f62000be15f198460080262000bc4565b1980831691505092915050565b5f62000bfb838362000bd0565b9150826002028217905092915050565b62000c1682620009a7565b67ffffffffffffffff81111562000c325762000c31620009b1565b5b62000c3e825462000a0b565b62000c4b82828562000b74565b5f60209050601f83116001811462000c81575f841562000c6c578287015190505b62000c78858262000bee565b86555062000ce7565b601f19841662000c918662000a3f565b5f5b8281101562000cba5784890151825560018201915060208501945060208101905062000c93565b8683101562000cda578489015162000cd6601f89168262000bd0565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d288262000ac1565b915062000d358362000ac1565b925082820262000d458162000ac1565b9150828204841483151762000d5f5762000d5e62000cef565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d9f8262000ac1565b915062000dac8362000ac1565b92508262000dbf5762000dbe62000d66565b5b828204905092915050565b5f62000dd68262000ac1565b915062000de38362000ac1565b925082820190508082111562000dfe5762000dfd62000cef565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000e4a60208362000e04565b915062000e578262000e14565b602082019050919050565b5f6020820190508181035f83015262000e7b8162000e3c565b9050919050565b5f8115159050919050565b62000e988162000e82565b82525050565b5f60208201905062000eb35f83018462000e8d565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000eef601f8362000e04565b915062000efc8262000eb9565b602082019050919050565b5f6020820190508181035f83015262000f208162000ee1565b9050919050565b62000f328162000ac1565b82525050565b5f60208201905062000f4d5f83018462000f27565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000f89601b8362000e04565b915062000f968262000f53565b602082019050919050565b5f6020820190508181035f83015262000fba8162000f7b565b9050919050565b61493e8062000fcf5f395ff3fe608060405260043610610275575f3560e01c806370a082311161014e5780639fccce32116100c0578063c024666811610079578063c024666814610906578063c3f70b521461092e578063dd62ed3e14610958578063df6f93be14610994578063f2fde38b146109be578063fe575a87146109e65761027c565b80639fccce32146107d4578063a457c2d7146107fe578063a9059cbb1461083a578063b62496f514610876578063b69ef8a8146108b2578063be857504146108dc5761027c565b80638a8c523c116101125780638a8c523c146107025780638da5cb5b14610718578063945674fe1461074257806395d89b411461076c5780639a7a23d6146107965780639ee2e924146107be5761027c565b806370a082311461065c578063715018a614610698578063751039fc146106ae5780637571336a146106c457806384cc96d0146106ec5761027c565b806323b872dd116101e757806349bd5a5e116101ab57806349bd5a5e146105525780634fbee1931461057c57806359714307146105b85780635de0f2a0146105e05780635ec065e71461060a5780636c7e15c9146106325761027c565b806323b872dd1461045c578063313ce5671461049857806339509351146104c257806346469afb146104fe57806348d79155146105285761027c565b80631694505e116102395780631694505e1461036257806318160ddd1461038c5780631816467f146103b65780631a8145bb146103de5780631bff78981461040857806322eb6631146104325761027c565b806306fdde0314610280578063095ea7b3146102aa5780630e947809146102e65780630f299cf11461031057806310d5de53146103265761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b50610294610a22565b6040516102a19190613868565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190613919565b610ab2565b6040516102dd9190613971565b60405180910390f35b3480156102f1575f80fd5b506102fa610acf565b6040516103079190613971565b60405180910390f35b34801561031b575f80fd5b50610324610ae1565b005b348015610331575f80fd5b5061034c6004803603810190610347919061398a565b610c8a565b6040516103599190613971565b60405180910390f35b34801561036d575f80fd5b50610376610ca7565b6040516103839190613a10565b60405180910390f35b348015610397575f80fd5b506103a0610ccc565b6040516103ad9190613a38565b60405180910390f35b3480156103c1575f80fd5b506103dc60048036038101906103d7919061398a565b610cd5565b005b3480156103e9575f80fd5b506103f2610e29565b6040516103ff9190613a38565b60405180910390f35b348015610413575f80fd5b5061041c610e2f565b6040516104299190613a38565b60405180910390f35b34801561043d575f80fd5b50610446610e35565b6040516104539190613a38565b60405180910390f35b348015610467575f80fd5b50610482600480360381019061047d9190613a51565b610e3b565b60405161048f9190613971565b60405180910390f35b3480156104a3575f80fd5b506104ac610f0f565b6040516104b99190613abc565b60405180910390f35b3480156104cd575f80fd5b506104e860048036038101906104e39190613919565b610f17565b6040516104f59190613971565b60405180910390f35b348015610509575f80fd5b50610512610fc5565b60405161051f9190613a38565b60405180910390f35b348015610533575f80fd5b5061053c610fcb565b6040516105499190613a38565b60405180910390f35b34801561055d575f80fd5b50610566610fd1565b6040516105739190613ae4565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d919061398a565b610ff6565b6040516105af9190613971565b60405180910390f35b3480156105c3575f80fd5b506105de60048036038101906105d99190613afd565b611048565b005b3480156105eb575f80fd5b506105f461112c565b6040516106019190613a38565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190613b8b565b611132565b005b34801561063d575f80fd5b506106466111e5565b6040516106539190613a38565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d919061398a565b6111eb565b60405161068f9190613a38565b60405180910390f35b3480156106a3575f80fd5b506106ac611230565b005b3480156106b9575f80fd5b506106c2611383565b005b3480156106cf575f80fd5b506106ea60048036038101906106e59190613bb6565b611434565b005b3480156106f7575f80fd5b50610700611522565b005b34801561070d575f80fd5b5061071661167a565b005b348015610723575f80fd5b5061072c611a80565b6040516107399190613ae4565b60405180910390f35b34801561074d575f80fd5b50610756611aa8565b6040516107639190613971565b60405180910390f35b348015610777575f80fd5b50610780611abb565b60405161078d9190613868565b60405180910390f35b3480156107a1575f80fd5b506107bc60048036038101906107b79190613bb6565b611b4b565b005b3480156107c9575f80fd5b506107d2611c7e565b005b3480156107df575f80fd5b506107e8611d91565b6040516107f59190613a38565b60405180910390f35b348015610809575f80fd5b50610824600480360381019061081f9190613919565b611d97565b6040516108319190613971565b60405180910390f35b348015610845575f80fd5b50610860600480360381019061085b9190613919565b611e5f565b60405161086d9190613971565b60405180910390f35b348015610881575f80fd5b5061089c6004803603810190610897919061398a565b611e7c565b6040516108a99190613971565b60405180910390f35b3480156108bd575f80fd5b506108c6611e99565b6040516108d39190613a38565b60405180910390f35b3480156108e7575f80fd5b506108f0611e9f565b6040516108fd9190613a38565b60405180910390f35b348015610911575f80fd5b5061092c60048036038101906109279190613bb6565b611ea5565b005b348015610939575f80fd5b50610942611fe1565b60405161094f9190613a38565b60405180910390f35b348015610963575f80fd5b5061097e60048036038101906109799190613bf4565b611fe7565b60405161098b9190613a38565b60405180910390f35b34801561099f575f80fd5b506109a8612069565b6040516109b59190613a38565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df919061398a565b61206f565b005b3480156109f1575f80fd5b50610a0c6004803603810190610a07919061398a565b6121c3565b604051610a199190613971565b60405180910390f35b606060038054610a3190613c5f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5d90613c5f565b8015610aa85780601f10610a7f57610100808354040283529160200191610aa8565b820191905f5260205f20905b815481529060010190602001808311610a8b57829003601f168201915b5050505050905090565b5f610ac5610abe6121e0565b84846121e7565b6001905092915050565b60115f9054906101000a900460ff1681565b610ae96121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90613cd9565b60405180910390fd5b5f4790505f8111610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613d67565b60405180910390fd5b5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610c0390613db2565b5f6040518083038185875af1925050503d805f8114610c3d576040519150601f19603f3d011682016040523d82523d5f602084013e610c42565b606091505b5050905080610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90613e10565b60405180910390fd5b5050565b601c602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610cdd6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613cd9565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60155481565b60165481565b5f610e478484846123aa565b610f0484610e536121e0565b610eff856040518060600160405280602881526020016148bc6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610eb66121e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d549092919063ffffffff16565b6121e7565b600190509392505050565b5f6012905090565b5f610fbb610f236121e0565b84610fb68560015f610f336121e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612db690919063ffffffff16565b6121e7565b6001905092915050565b60125481565b60105481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6110506121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613cd9565b60405180910390fd5b83601381905550816014819055506014546013546110fc9190613e5b565b60128190555082601681905550806017819055506017546016546111209190613e5b565b60158190555050505050565b600f5481565b61113a6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613cd9565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112386121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bd90613cd9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61138b6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141090613cd9565b60405180910390fd5b5f60115f6101000a81548160ff021916908315150217905550565b61143c6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613cd9565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61152a6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af90613cd9565b60405180910390fd5b6001600a5f73db5889e35e379ef0498aae126fc2cce1fbd2321673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555073db5889e35e379ef0498aae126fc2cce1fbd2321673ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a2565b6116826121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170790613cd9565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050611733816001611434565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e09190613ea2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611845573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118699190613ea2565b6040518363ffffffff1660e01b8152600401611886929190613ecd565b6020604051808303815f875af11580156118a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c69190613ea2565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061193160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611434565b61195d60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612e13565b5f4790505f6064605a61196f306111eb565b6119799190613ef4565b6119839190613f62565b90506119b13060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121e7565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611a3796959493929190613fcb565b60606040518083038185885af1158015611a53573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a78919061403e565b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601160019054906101000a900460ff1681565b606060048054611aca90613c5f565b80601f0160208091040260200160405190810160405280929190818152602001828054611af690613c5f565b8015611b415780601f10611b1857610100808354040283529160200191611b41565b820191905f5260205f20905b815481529060010190602001808311611b2457829003601f168201915b5050505050905090565b611b536121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd890613cd9565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c67906140fe565b60405180910390fd5b611c7a8282612e13565b5050565b611c866121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b90613cd9565b60405180910390fd5b5f611d1e306111eb565b90505f8111611d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d599061418c565b60405180910390fd5b611d8e30600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836123aa565b50565b60195481565b5f611e55611da36121e0565b84611e50856040518060600160405280602581526020016148e46025913960015f611dcc6121e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d549092919063ffffffff16565b6121e7565b6001905092915050565b5f611e72611e6b6121e0565b84846123aa565b6001905092915050565b601d602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b60175481565b611ead6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3290613cd9565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fd59190613971565b60405180910390a25050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60145481565b6120776121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fc90613cd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c9061421a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba906142a8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239d9190613a38565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240f90614336565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247d906143c4565b60405180910390fd5b600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125079061442c565b60405180910390fd5b5f81036125275761252283835f612eb1565b612d4f565b60115f9054906101000a900460ff161561291b57612543611a80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125b15750612581611a80565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125e957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612623575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561263b5750600b5f9054906101000a900460ff16155b1561291a57601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126dd5750601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561278457600e54811115612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e906144ba565b60405180910390fd5b601054612733836111eb565b8261273e9190613e5b565b111561277f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277690614522565b60405180910390fd5b612919565b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128215750601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561287057600e5481111561286b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612862906145b0565b60405180910390fd5b612918565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612917576010546128ca836111eb565b826128d59190613e5b565b1115612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290d90614522565b60405180910390fd5b5b5b5b5b5b5f612925306111eb565b90505f600f5482101590508080156129495750600b5f9054906101000a900460ff16155b801561299c5750601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129ef5750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a425750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a83576001600b5f6101000a81548160ff021916908315150217905550612a6961313a565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff16159050601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b315750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b3a575f90505b5f8115612d3f57601d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b9857505f601554115b15612c3057612bc56064612bb76015548861336090919063ffffffff16565b6133d790919063ffffffff16565b905060155460175482612bd89190613ef4565b612be29190613f62565b60185f828254612bf29190613e5b565b9250508190555060155460165482612c0a9190613ef4565b612c149190613f62565b60195f828254612c249190613e5b565b92505081905550612d1c565b601d5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c8757505f601254115b15612d1b57612cb46064612ca66012548861336090919063ffffffff16565b6133d790919063ffffffff16565b905060125460145482612cc79190613ef4565b612cd19190613f62565b60185f828254612ce19190613e5b565b9250508190555060125460135482612cf99190613ef4565b612d039190613f62565b60195f828254612d139190613e5b565b925050819055505b5b5f811115612d3057612d2f873083612eb1565b5b8085612d3c91906145ce565b94505b612d4a878787612eb1565b505050505b505050565b5f838311158290612d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d929190613868565b60405180910390fd5b505f8385612da991906145ce565b9050809150509392505050565b5f808284612dc49190613e5b565b905083811015612e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e009061464b565b60405180910390fd5b8091505092915050565b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1690614336565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f84906143c4565b60405180910390fd5b612f98838383613420565b61300181604051806060016040528060268152602001614896602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d549092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613090815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612db690919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161312d9190613a38565b60405180910390a3505050565b5f613144306111eb565b90505f6019546018546131579190613e5b565b90505f8083148061316757505f82145b156131745750505061335e565b5f1515601160019054906101000a900460ff161515036131bb576014600f5461319d9190613ef4565b8311156131b6576014600f546131b39190613ef4565b92505b6131c7565b6131c4306111eb565b92505b5f600383601854866131d99190613ef4565b6131e39190613f62565b6131ed9190613f62565b90505f613203828661342590919063ffffffff16565b90505f4790506132128261346e565b5f613226824761342590919063ffffffff16565b90505f613250876132426019548561336090919063ffffffff16565b6133d790919063ffffffff16565b90505f818361325f91906145ce565b90505f6018819055505f6019819055505f8611801561327d57505f81115b156132ca5761328c86826136a4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826018546040516132c193929190614669565b60405180910390a15b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161330f90613db2565b5f6040518083038185875af1925050503d805f8114613349576040519150601f19603f3d011682016040523d82523d5f602084013e61334e565b606091505b5050809750505050505050505050505b565b5f808303613370575f90506133d1565b5f828461337d9190613ef4565b905082848261338c9190613f62565b146133cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c39061470e565b60405180910390fd5b809150505b92915050565b5f61341883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061377d565b905092915050565b505050565b5f61346683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d54565b905092915050565b5f600267ffffffffffffffff81111561348a5761348961472c565b5b6040519080825280602002602001820160405280156134b85781602001602082028036833780820191505090505b50905030815f815181106134cf576134ce614759565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613573573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135979190613ea2565b816001815181106135ab576135aa614759565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136113060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121e7565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161367395949392919061483d565b5f604051808303815f87803b15801561368a575f80fd5b505af115801561369c573d5f803e3d5ffd5b505050505050565b6136d03060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121e7565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161373596959493929190613fcb565b60606040518083038185885af1158015613751573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613776919061403e565b5050505050565b5f80831182906137c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ba9190613868565b60405180910390fd5b505f83856137d19190613f62565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156138155780820151818401526020810190506137fa565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61383a826137de565b61384481856137e8565b93506138548185602086016137f8565b61385d81613820565b840191505092915050565b5f6020820190508181035f8301526138808184613830565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6138b58261388c565b9050919050565b6138c5816138ab565b81146138cf575f80fd5b50565b5f813590506138e0816138bc565b92915050565b5f819050919050565b6138f8816138e6565b8114613902575f80fd5b50565b5f81359050613913816138ef565b92915050565b5f806040838503121561392f5761392e613888565b5b5f61393c858286016138d2565b925050602061394d85828601613905565b9150509250929050565b5f8115159050919050565b61396b81613957565b82525050565b5f6020820190506139845f830184613962565b92915050565b5f6020828403121561399f5761399e613888565b5b5f6139ac848285016138d2565b91505092915050565b5f819050919050565b5f6139d86139d36139ce8461388c565b6139b5565b61388c565b9050919050565b5f6139e9826139be565b9050919050565b5f6139fa826139df565b9050919050565b613a0a816139f0565b82525050565b5f602082019050613a235f830184613a01565b92915050565b613a32816138e6565b82525050565b5f602082019050613a4b5f830184613a29565b92915050565b5f805f60608486031215613a6857613a67613888565b5b5f613a75868287016138d2565b9350506020613a86868287016138d2565b9250506040613a9786828701613905565b9150509250925092565b5f60ff82169050919050565b613ab681613aa1565b82525050565b5f602082019050613acf5f830184613aad565b92915050565b613ade816138ab565b82525050565b5f602082019050613af75f830184613ad5565b92915050565b5f805f8060808587031215613b1557613b14613888565b5b5f613b2287828801613905565b9450506020613b3387828801613905565b9350506040613b4487828801613905565b9250506060613b5587828801613905565b91505092959194509250565b613b6a81613957565b8114613b74575f80fd5b50565b5f81359050613b8581613b61565b92915050565b5f60208284031215613ba057613b9f613888565b5b5f613bad84828501613b77565b91505092915050565b5f8060408385031215613bcc57613bcb613888565b5b5f613bd9858286016138d2565b9250506020613bea85828601613b77565b9150509250929050565b5f8060408385031215613c0a57613c09613888565b5b5f613c17858286016138d2565b9250506020613c28858286016138d2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613c7657607f821691505b602082108103613c8957613c88613c32565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613cc36020836137e8565b9150613cce82613c8f565b602082019050919050565b5f6020820190508181035f830152613cf081613cb7565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d516022836137e8565b9150613d5c82613cf7565b604082019050919050565b5f6020820190508181035f830152613d7e81613d45565b9050919050565b5f81905092915050565b50565b5f613d9d5f83613d85565b9150613da882613d8f565b5f82019050919050565b5f613dbc82613d92565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613dfa601b836137e8565b9150613e0582613dc6565b602082019050919050565b5f6020820190508181035f830152613e2781613dee565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e65826138e6565b9150613e70836138e6565b9250828201905080821115613e8857613e87613e2e565b5b92915050565b5f81519050613e9c816138bc565b92915050565b5f60208284031215613eb757613eb6613888565b5b5f613ec484828501613e8e565b91505092915050565b5f604082019050613ee05f830185613ad5565b613eed6020830184613ad5565b9392505050565b5f613efe826138e6565b9150613f09836138e6565b9250828202613f17816138e6565b91508282048414831517613f2e57613f2d613e2e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f6c826138e6565b9150613f77836138e6565b925082613f8757613f86613f35565b5b828204905092915050565b5f819050919050565b5f613fb5613fb0613fab84613f92565b6139b5565b6138e6565b9050919050565b613fc581613f9b565b82525050565b5f60c082019050613fde5f830189613ad5565b613feb6020830188613a29565b613ff86040830187613fbc565b6140056060830186613fbc565b6140126080830185613ad5565b61401f60a0830184613a29565b979650505050505050565b5f81519050614038816138ef565b92915050565b5f805f6060848603121561405557614054613888565b5b5f6140628682870161402a565b93505060206140738682870161402a565b92505060406140848682870161402a565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6140e86039836137e8565b91506140f38261408e565b604082019050919050565b5f6020820190508181035f830152614115816140dc565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f6141766024836137e8565b91506141818261411c565b604082019050919050565b5f6020820190508181035f8301526141a38161416a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6142046024836137e8565b915061420f826141aa565b604082019050919050565b5f6020820190508181035f830152614231816141f8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142926022836137e8565b915061429d82614238565b604082019050919050565b5f6020820190508181035f8301526142bf81614286565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6143206025836137e8565b915061432b826142c6565b604082019050919050565b5f6020820190508181035f83015261434d81614314565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143ae6023836137e8565b91506143b982614354565b604082019050919050565b5f6020820190508181035f8301526143db816143a2565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f6144166015836137e8565b9150614421826143e2565b602082019050919050565b5f6020820190508181035f8301526144438161440a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6144a46035836137e8565b91506144af8261444a565b604082019050919050565b5f6020820190508181035f8301526144d181614498565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61450c6013836137e8565b9150614517826144d8565b602082019050919050565b5f6020820190508181035f83015261453981614500565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61459a6036836137e8565b91506145a582614540565b604082019050919050565b5f6020820190508181035f8301526145c78161458e565b9050919050565b5f6145d8826138e6565b91506145e3836138e6565b92508282039050818111156145fb576145fa613e2e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614635601b836137e8565b915061464082614601565b602082019050919050565b5f6020820190508181035f83015261466281614629565b9050919050565b5f60608201905061467c5f830186613a29565b6146896020830185613a29565b6146966040830184613a29565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146f86021836137e8565b91506147038261469e565b604082019050919050565b5f6020820190508181035f830152614725816146ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147b8816138ab565b82525050565b5f6147c983836147af565b60208301905092915050565b5f602082019050919050565b5f6147eb82614786565b6147f58185614790565b9350614800836147a0565b805f5b8381101561483057815161481788826147be565b9750614822836147d5565b925050600181019050614803565b5085935050505092915050565b5f60a0820190506148505f830188613a29565b61485d6020830187613fbc565b818103604083015261486f81866147e1565b905061487e6060830185613ad5565b61488b6080830184613a29565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220891ccb340f70fda3a71fd9821ad13b9103598a7dce22f2862f88e4684c45424f64736f6c63430008150033f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9f09f9fa9
Deployed Bytecode
0x608060405260043610610275575f3560e01c806370a082311161014e5780639fccce32116100c0578063c024666811610079578063c024666814610906578063c3f70b521461092e578063dd62ed3e14610958578063df6f93be14610994578063f2fde38b146109be578063fe575a87146109e65761027c565b80639fccce32146107d4578063a457c2d7146107fe578063a9059cbb1461083a578063b62496f514610876578063b69ef8a8146108b2578063be857504146108dc5761027c565b80638a8c523c116101125780638a8c523c146107025780638da5cb5b14610718578063945674fe1461074257806395d89b411461076c5780639a7a23d6146107965780639ee2e924146107be5761027c565b806370a082311461065c578063715018a614610698578063751039fc146106ae5780637571336a146106c457806384cc96d0146106ec5761027c565b806323b872dd116101e757806349bd5a5e116101ab57806349bd5a5e146105525780634fbee1931461057c57806359714307146105b85780635de0f2a0146105e05780635ec065e71461060a5780636c7e15c9146106325761027c565b806323b872dd1461045c578063313ce5671461049857806339509351146104c257806346469afb146104fe57806348d79155146105285761027c565b80631694505e116102395780631694505e1461036257806318160ddd1461038c5780631816467f146103b65780631a8145bb146103de5780631bff78981461040857806322eb6631146104325761027c565b806306fdde0314610280578063095ea7b3146102aa5780630e947809146102e65780630f299cf11461031057806310d5de53146103265761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b50610294610a22565b6040516102a19190613868565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190613919565b610ab2565b6040516102dd9190613971565b60405180910390f35b3480156102f1575f80fd5b506102fa610acf565b6040516103079190613971565b60405180910390f35b34801561031b575f80fd5b50610324610ae1565b005b348015610331575f80fd5b5061034c6004803603810190610347919061398a565b610c8a565b6040516103599190613971565b60405180910390f35b34801561036d575f80fd5b50610376610ca7565b6040516103839190613a10565b60405180910390f35b348015610397575f80fd5b506103a0610ccc565b6040516103ad9190613a38565b60405180910390f35b3480156103c1575f80fd5b506103dc60048036038101906103d7919061398a565b610cd5565b005b3480156103e9575f80fd5b506103f2610e29565b6040516103ff9190613a38565b60405180910390f35b348015610413575f80fd5b5061041c610e2f565b6040516104299190613a38565b60405180910390f35b34801561043d575f80fd5b50610446610e35565b6040516104539190613a38565b60405180910390f35b348015610467575f80fd5b50610482600480360381019061047d9190613a51565b610e3b565b60405161048f9190613971565b60405180910390f35b3480156104a3575f80fd5b506104ac610f0f565b6040516104b99190613abc565b60405180910390f35b3480156104cd575f80fd5b506104e860048036038101906104e39190613919565b610f17565b6040516104f59190613971565b60405180910390f35b348015610509575f80fd5b50610512610fc5565b60405161051f9190613a38565b60405180910390f35b348015610533575f80fd5b5061053c610fcb565b6040516105499190613a38565b60405180910390f35b34801561055d575f80fd5b50610566610fd1565b6040516105739190613ae4565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d919061398a565b610ff6565b6040516105af9190613971565b60405180910390f35b3480156105c3575f80fd5b506105de60048036038101906105d99190613afd565b611048565b005b3480156105eb575f80fd5b506105f461112c565b6040516106019190613a38565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190613b8b565b611132565b005b34801561063d575f80fd5b506106466111e5565b6040516106539190613a38565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d919061398a565b6111eb565b60405161068f9190613a38565b60405180910390f35b3480156106a3575f80fd5b506106ac611230565b005b3480156106b9575f80fd5b506106c2611383565b005b3480156106cf575f80fd5b506106ea60048036038101906106e59190613bb6565b611434565b005b3480156106f7575f80fd5b50610700611522565b005b34801561070d575f80fd5b5061071661167a565b005b348015610723575f80fd5b5061072c611a80565b6040516107399190613ae4565b60405180910390f35b34801561074d575f80fd5b50610756611aa8565b6040516107639190613971565b60405180910390f35b348015610777575f80fd5b50610780611abb565b60405161078d9190613868565b60405180910390f35b3480156107a1575f80fd5b506107bc60048036038101906107b79190613bb6565b611b4b565b005b3480156107c9575f80fd5b506107d2611c7e565b005b3480156107df575f80fd5b506107e8611d91565b6040516107f59190613a38565b60405180910390f35b348015610809575f80fd5b50610824600480360381019061081f9190613919565b611d97565b6040516108319190613971565b60405180910390f35b348015610845575f80fd5b50610860600480360381019061085b9190613919565b611e5f565b60405161086d9190613971565b60405180910390f35b348015610881575f80fd5b5061089c6004803603810190610897919061398a565b611e7c565b6040516108a99190613971565b60405180910390f35b3480156108bd575f80fd5b506108c6611e99565b6040516108d39190613a38565b60405180910390f35b3480156108e7575f80fd5b506108f0611e9f565b6040516108fd9190613a38565b60405180910390f35b348015610911575f80fd5b5061092c60048036038101906109279190613bb6565b611ea5565b005b348015610939575f80fd5b50610942611fe1565b60405161094f9190613a38565b60405180910390f35b348015610963575f80fd5b5061097e60048036038101906109799190613bf4565b611fe7565b60405161098b9190613a38565b60405180910390f35b34801561099f575f80fd5b506109a8612069565b6040516109b59190613a38565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df919061398a565b61206f565b005b3480156109f1575f80fd5b50610a0c6004803603810190610a07919061398a565b6121c3565b604051610a199190613971565b60405180910390f35b606060038054610a3190613c5f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5d90613c5f565b8015610aa85780601f10610a7f57610100808354040283529160200191610aa8565b820191905f5260205f20905b815481529060010190602001808311610a8b57829003601f168201915b5050505050905090565b5f610ac5610abe6121e0565b84846121e7565b6001905092915050565b60115f9054906101000a900460ff1681565b610ae96121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90613cd9565b60405180910390fd5b5f4790505f8111610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613d67565b60405180910390fd5b5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610c0390613db2565b5f6040518083038185875af1925050503d805f8114610c3d576040519150601f19603f3d011682016040523d82523d5f602084013e610c42565b606091505b5050905080610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90613e10565b60405180910390fd5b5050565b601c602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610cdd6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613cd9565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60155481565b60165481565b5f610e478484846123aa565b610f0484610e536121e0565b610eff856040518060600160405280602881526020016148bc6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610eb66121e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d549092919063ffffffff16565b6121e7565b600190509392505050565b5f6012905090565b5f610fbb610f236121e0565b84610fb68560015f610f336121e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612db690919063ffffffff16565b6121e7565b6001905092915050565b60125481565b60105481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6110506121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613cd9565b60405180910390fd5b83601381905550816014819055506014546013546110fc9190613e5b565b60128190555082601681905550806017819055506017546016546111209190613e5b565b60158190555050505050565b600f5481565b61113a6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613cd9565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112386121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bd90613cd9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61138b6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141090613cd9565b60405180910390fd5b5f60115f6101000a81548160ff021916908315150217905550565b61143c6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613cd9565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61152a6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af90613cd9565b60405180910390fd5b6001600a5f73db5889e35e379ef0498aae126fc2cce1fbd2321673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555073db5889e35e379ef0498aae126fc2cce1fbd2321673ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a2565b6116826121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170790613cd9565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050611733816001611434565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e09190613ea2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611845573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118699190613ea2565b6040518363ffffffff1660e01b8152600401611886929190613ecd565b6020604051808303815f875af11580156118a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c69190613ea2565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061193160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611434565b61195d60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612e13565b5f4790505f6064605a61196f306111eb565b6119799190613ef4565b6119839190613f62565b90506119b13060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121e7565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611a3796959493929190613fcb565b60606040518083038185885af1158015611a53573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a78919061403e565b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601160019054906101000a900460ff1681565b606060048054611aca90613c5f565b80601f0160208091040260200160405190810160405280929190818152602001828054611af690613c5f565b8015611b415780601f10611b1857610100808354040283529160200191611b41565b820191905f5260205f20905b815481529060010190602001808311611b2457829003601f168201915b5050505050905090565b611b536121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd890613cd9565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c67906140fe565b60405180910390fd5b611c7a8282612e13565b5050565b611c866121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b90613cd9565b60405180910390fd5b5f611d1e306111eb565b90505f8111611d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d599061418c565b60405180910390fd5b611d8e30600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836123aa565b50565b60195481565b5f611e55611da36121e0565b84611e50856040518060600160405280602581526020016148e46025913960015f611dcc6121e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d549092919063ffffffff16565b6121e7565b6001905092915050565b5f611e72611e6b6121e0565b84846123aa565b6001905092915050565b601d602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b60175481565b611ead6121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3290613cd9565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fd59190613971565b60405180910390a25050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60145481565b6120776121e0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fc90613cd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c9061421a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba906142a8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239d9190613a38565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240f90614336565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247d906143c4565b60405180910390fd5b600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125079061442c565b60405180910390fd5b5f81036125275761252283835f612eb1565b612d4f565b60115f9054906101000a900460ff161561291b57612543611a80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125b15750612581611a80565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125e957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612623575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561263b5750600b5f9054906101000a900460ff16155b1561291a57601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126dd5750601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561278457600e54811115612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e906144ba565b60405180910390fd5b601054612733836111eb565b8261273e9190613e5b565b111561277f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277690614522565b60405180910390fd5b612919565b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128215750601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561287057600e5481111561286b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612862906145b0565b60405180910390fd5b612918565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612917576010546128ca836111eb565b826128d59190613e5b565b1115612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290d90614522565b60405180910390fd5b5b5b5b5b5b5f612925306111eb565b90505f600f5482101590508080156129495750600b5f9054906101000a900460ff16155b801561299c5750601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129ef5750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a425750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a83576001600b5f6101000a81548160ff021916908315150217905550612a6961313a565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff16159050601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b315750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b3a575f90505b5f8115612d3f57601d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b9857505f601554115b15612c3057612bc56064612bb76015548861336090919063ffffffff16565b6133d790919063ffffffff16565b905060155460175482612bd89190613ef4565b612be29190613f62565b60185f828254612bf29190613e5b565b9250508190555060155460165482612c0a9190613ef4565b612c149190613f62565b60195f828254612c249190613e5b565b92505081905550612d1c565b601d5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c8757505f601254115b15612d1b57612cb46064612ca66012548861336090919063ffffffff16565b6133d790919063ffffffff16565b905060125460145482612cc79190613ef4565b612cd19190613f62565b60185f828254612ce19190613e5b565b9250508190555060125460135482612cf99190613ef4565b612d039190613f62565b60195f828254612d139190613e5b565b925050819055505b5b5f811115612d3057612d2f873083612eb1565b5b8085612d3c91906145ce565b94505b612d4a878787612eb1565b505050505b505050565b5f838311158290612d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d929190613868565b60405180910390fd5b505f8385612da991906145ce565b9050809150509392505050565b5f808284612dc49190613e5b565b905083811015612e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e009061464b565b60405180910390fd5b8091505092915050565b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1690614336565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f84906143c4565b60405180910390fd5b612f98838383613420565b61300181604051806060016040528060268152602001614896602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d549092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613090815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612db690919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161312d9190613a38565b60405180910390a3505050565b5f613144306111eb565b90505f6019546018546131579190613e5b565b90505f8083148061316757505f82145b156131745750505061335e565b5f1515601160019054906101000a900460ff161515036131bb576014600f5461319d9190613ef4565b8311156131b6576014600f546131b39190613ef4565b92505b6131c7565b6131c4306111eb565b92505b5f600383601854866131d99190613ef4565b6131e39190613f62565b6131ed9190613f62565b90505f613203828661342590919063ffffffff16565b90505f4790506132128261346e565b5f613226824761342590919063ffffffff16565b90505f613250876132426019548561336090919063ffffffff16565b6133d790919063ffffffff16565b90505f818361325f91906145ce565b90505f6018819055505f6019819055505f8611801561327d57505f81115b156132ca5761328c86826136a4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826018546040516132c193929190614669565b60405180910390a15b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161330f90613db2565b5f6040518083038185875af1925050503d805f8114613349576040519150601f19603f3d011682016040523d82523d5f602084013e61334e565b606091505b5050809750505050505050505050505b565b5f808303613370575f90506133d1565b5f828461337d9190613ef4565b905082848261338c9190613f62565b146133cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c39061470e565b60405180910390fd5b809150505b92915050565b5f61341883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061377d565b905092915050565b505050565b5f61346683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d54565b905092915050565b5f600267ffffffffffffffff81111561348a5761348961472c565b5b6040519080825280602002602001820160405280156134b85781602001602082028036833780820191505090505b50905030815f815181106134cf576134ce614759565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613573573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135979190613ea2565b816001815181106135ab576135aa614759565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136113060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121e7565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161367395949392919061483d565b5f604051808303815f87803b15801561368a575f80fd5b505af115801561369c573d5f803e3d5ffd5b505050505050565b6136d03060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121e7565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161373596959493929190613fcb565b60606040518083038185885af1158015613751573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613776919061403e565b5050505050565b5f80831182906137c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ba9190613868565b60405180910390fd5b505f83856137d19190613f62565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156138155780820151818401526020810190506137fa565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61383a826137de565b61384481856137e8565b93506138548185602086016137f8565b61385d81613820565b840191505092915050565b5f6020820190508181035f8301526138808184613830565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6138b58261388c565b9050919050565b6138c5816138ab565b81146138cf575f80fd5b50565b5f813590506138e0816138bc565b92915050565b5f819050919050565b6138f8816138e6565b8114613902575f80fd5b50565b5f81359050613913816138ef565b92915050565b5f806040838503121561392f5761392e613888565b5b5f61393c858286016138d2565b925050602061394d85828601613905565b9150509250929050565b5f8115159050919050565b61396b81613957565b82525050565b5f6020820190506139845f830184613962565b92915050565b5f6020828403121561399f5761399e613888565b5b5f6139ac848285016138d2565b91505092915050565b5f819050919050565b5f6139d86139d36139ce8461388c565b6139b5565b61388c565b9050919050565b5f6139e9826139be565b9050919050565b5f6139fa826139df565b9050919050565b613a0a816139f0565b82525050565b5f602082019050613a235f830184613a01565b92915050565b613a32816138e6565b82525050565b5f602082019050613a4b5f830184613a29565b92915050565b5f805f60608486031215613a6857613a67613888565b5b5f613a75868287016138d2565b9350506020613a86868287016138d2565b9250506040613a9786828701613905565b9150509250925092565b5f60ff82169050919050565b613ab681613aa1565b82525050565b5f602082019050613acf5f830184613aad565b92915050565b613ade816138ab565b82525050565b5f602082019050613af75f830184613ad5565b92915050565b5f805f8060808587031215613b1557613b14613888565b5b5f613b2287828801613905565b9450506020613b3387828801613905565b9350506040613b4487828801613905565b9250506060613b5587828801613905565b91505092959194509250565b613b6a81613957565b8114613b74575f80fd5b50565b5f81359050613b8581613b61565b92915050565b5f60208284031215613ba057613b9f613888565b5b5f613bad84828501613b77565b91505092915050565b5f8060408385031215613bcc57613bcb613888565b5b5f613bd9858286016138d2565b9250506020613bea85828601613b77565b9150509250929050565b5f8060408385031215613c0a57613c09613888565b5b5f613c17858286016138d2565b9250506020613c28858286016138d2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613c7657607f821691505b602082108103613c8957613c88613c32565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613cc36020836137e8565b9150613cce82613c8f565b602082019050919050565b5f6020820190508181035f830152613cf081613cb7565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d516022836137e8565b9150613d5c82613cf7565b604082019050919050565b5f6020820190508181035f830152613d7e81613d45565b9050919050565b5f81905092915050565b50565b5f613d9d5f83613d85565b9150613da882613d8f565b5f82019050919050565b5f613dbc82613d92565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613dfa601b836137e8565b9150613e0582613dc6565b602082019050919050565b5f6020820190508181035f830152613e2781613dee565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e65826138e6565b9150613e70836138e6565b9250828201905080821115613e8857613e87613e2e565b5b92915050565b5f81519050613e9c816138bc565b92915050565b5f60208284031215613eb757613eb6613888565b5b5f613ec484828501613e8e565b91505092915050565b5f604082019050613ee05f830185613ad5565b613eed6020830184613ad5565b9392505050565b5f613efe826138e6565b9150613f09836138e6565b9250828202613f17816138e6565b91508282048414831517613f2e57613f2d613e2e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f6c826138e6565b9150613f77836138e6565b925082613f8757613f86613f35565b5b828204905092915050565b5f819050919050565b5f613fb5613fb0613fab84613f92565b6139b5565b6138e6565b9050919050565b613fc581613f9b565b82525050565b5f60c082019050613fde5f830189613ad5565b613feb6020830188613a29565b613ff86040830187613fbc565b6140056060830186613fbc565b6140126080830185613ad5565b61401f60a0830184613a29565b979650505050505050565b5f81519050614038816138ef565b92915050565b5f805f6060848603121561405557614054613888565b5b5f6140628682870161402a565b93505060206140738682870161402a565b92505060406140848682870161402a565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6140e86039836137e8565b91506140f38261408e565b604082019050919050565b5f6020820190508181035f830152614115816140dc565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f6141766024836137e8565b91506141818261411c565b604082019050919050565b5f6020820190508181035f8301526141a38161416a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6142046024836137e8565b915061420f826141aa565b604082019050919050565b5f6020820190508181035f830152614231816141f8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142926022836137e8565b915061429d82614238565b604082019050919050565b5f6020820190508181035f8301526142bf81614286565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6143206025836137e8565b915061432b826142c6565b604082019050919050565b5f6020820190508181035f83015261434d81614314565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143ae6023836137e8565b91506143b982614354565b604082019050919050565b5f6020820190508181035f8301526143db816143a2565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f6144166015836137e8565b9150614421826143e2565b602082019050919050565b5f6020820190508181035f8301526144438161440a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6144a46035836137e8565b91506144af8261444a565b604082019050919050565b5f6020820190508181035f8301526144d181614498565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61450c6013836137e8565b9150614517826144d8565b602082019050919050565b5f6020820190508181035f83015261453981614500565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61459a6036836137e8565b91506145a582614540565b604082019050919050565b5f6020820190508181035f8301526145c78161458e565b9050919050565b5f6145d8826138e6565b91506145e3836138e6565b92508282039050818111156145fb576145fa613e2e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614635601b836137e8565b915061464082614601565b602082019050919050565b5f6020820190508181035f83015261466281614629565b9050919050565b5f60608201905061467c5f830186613a29565b6146896020830185613a29565b6146966040830184613a29565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146f86021836137e8565b91506147038261469e565b604082019050919050565b5f6020820190508181035f830152614725816146ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147b8816138ab565b82525050565b5f6147c983836147af565b60208301905092915050565b5f602082019050919050565b5f6147eb82614786565b6147f58185614790565b9350614800836147a0565b805f5b8381101561483057815161481788826147be565b9750614822836147d5565b925050600181019050614803565b5085935050505092915050565b5f60a0820190506148505f830188613a29565b61485d6020830187613fbc565b818103604083015261486f81866147e1565b905061487e6060830185613ad5565b61488b6080830184613a29565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220891ccb340f70fda3a71fd9821ad13b9103598a7dce22f2862f88e4684c45424f64736f6c63430008150033
Deployed Bytecode Sourcemap
17721:15728:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4984:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5898:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20922:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25343:311;;;;;;;;;;;;;:::i;:::-;;21495:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20465:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5305:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27325:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21204:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21103:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21137:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6075:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5204:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6438:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21005:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20881:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20513:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27498:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26290:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20839:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26016:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21038:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5421:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10965:148;;;;;;;;;;;;;:::i;:::-;;25926:81;;;;;;;;;;;;;:::i;:::-;;26134:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25094:225;;;;;;;;;;;;;:::i;:::-;;24042:1044;;;;;;;;;;;;;:::i;:::-;;10751:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20959:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5092:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26874:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25662:256;;;;;;;;;;;;;:::i;:::-;;21244:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6664:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5556:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21718:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20739:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21169:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26683:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20803:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5739:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21069:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11121:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20552:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4984:100;5038:13;5071:5;5064:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4984:100;:::o;5898:169::-;5981:4;5998:39;6007:12;:10;:12::i;:::-;6021:7;6030:6;5998:8;:39::i;:::-;6055:4;6048:11;;5898:169;;;;:::o;20922:30::-;;;;;;;;;;;;;:::o;25343:311::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25399:18:::1;25420:21;25399:42;;25473:1;25460:10;:14;25452:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;25525:12;25550:9;;;;;;;;;;;25542:23;;25573:10;25542:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25524:64;;;25607:7;25599:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;25388:266;;25343:311::o:0;21495:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;20465:41::-;;;;;;;;;;;;;:::o;5305:108::-;5366:7;5393:12;;5386:19;;5305:108;:::o;27325:165::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27437:9:::1;;;;;;;;;;;27406:41;;27423:12;27406:41;;;;;;;;;;;;27470:12;27458:9;;:24;;;;;;;;;;;;;;;;;;27325:165:::0;:::o;21204:33::-;;;;:::o;21103:27::-;;;;:::o;21137:25::-;;;;:::o;6075:355::-;6215:4;6232:36;6242:6;6250:9;6261:6;6232:9;:36::i;:::-;6279:121;6288:6;6296:12;:10;:12::i;:::-;6310:89;6348:6;6310:89;;;;;;;;;;;;;;;;;:11;:19;6322:6;6310:19;;;;;;;;;;;;;;;:33;6330:12;:10;:12::i;:::-;6310:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6279:8;:121::i;:::-;6418:4;6411:11;;6075:355;;;;;:::o;5204:93::-;5262:5;5287:2;5280:9;;5204:93;:::o;6438:218::-;6526:4;6543:83;6552:12;:10;:12::i;:::-;6566:7;6575:50;6614:10;6575:11;:25;6587:12;:10;:12::i;:::-;6575:25;;;;;;;;;;;;;;;:34;6601:7;6575:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6543:8;:83::i;:::-;6644:4;6637:11;;6438:218;;;;:::o;21005:26::-;;;;:::o;20881:31::-;;;;:::o;20513:28::-;;;;;;;;;;;;;:::o;27498:125::-;27563:4;27587:19;:28;27607:7;27587:28;;;;;;;;;;;;;;;;;;;;;;;;;27580:35;;27498:125;;;:::o;26290:385::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26462:7:::1;26450:9;:19;;;;26492:7;26480:9;:19;;;;26536:9;;26524;;:21;;;;:::i;:::-;26510:11;:35;;;;26569:8;26556:10;:21;;;;26601:8;26588:10;:21;;;;26648:10;;26635;;:23;;;;:::i;:::-;26620:12;:38;;;;26290:385:::0;;;;:::o;20839:35::-;;;;:::o;26016:109::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26110:7:::1;26090:17;;:27;;;;;;;;;;;;;;;;;;26016:109:::0;:::o;21038:24::-;;;;:::o;5421:127::-;5495:7;5522:9;:18;5532:7;5522:18;;;;;;;;;;;;;;;;5515:25;;5421:127;;;:::o;10965:148::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11072:1:::1;11035:40;;11056:6;;;;;;;;;;;11035:40;;;;;;;;;;;;11103:1;11086:6;;:19;;;;;;;;;;;;;;;;;;10965:148::o:0;25926:81::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25994:5:::1;25980:11;;:19;;;;;;;;;;;;;;;;;;25926:81::o:0;26134:144::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26266:4:::1;26224:31;:39;26256:6;26224:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;26134:144:::0;;:::o;25094:225::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25236:4:::1;25176:13;:57;25190:42;25176:57;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;25268:42;25256:55;;;;;;;;;;;;25094:225::o:0;24042:1044::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24102:35:::1;24159:42;24102:100;;24216:58;24250:16;24269:4;24216:25;:58::i;:::-;24303:16;24285:15;;:34;;;;;;;;;;;;;;;;;;24367:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24349:56;;;24414:4;24421:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24349:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24333:13;;:112;;;;;;;;;;;;;;;;;;24456:55;24490:13;;;;;;;;;;;24506:4;24456:25;:55::i;:::-;24522:58;24559:13;;;;;;;;;;;24575:4;24522:28;:58::i;:::-;24601:17;24621:21;24601:41;;24653:19;24707:3;24702:2;24675:24;24693:4;24675:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;24653:57;;24741:62;24758:4;24773:15;;;;;;;;;;;24791:11;24741:8;:62::i;:::-;24816:15;;;;;;;;;;;:31;;;24855:9;24888:4;24908:11;24938:1;24985::::0;25028:9:::1;;;;;;;;;;;25052:15;24816:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24085:1001;;;24042:1044::o:0;10751:79::-;10789:7;10816:6;;;;;;;;;;;10809:13;;10751:79;:::o;20959:37::-;;;;;;;;;;;;;:::o;5092:104::-;5148:13;5181:7;5174:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5092:104;:::o;26874:245::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26981:13:::1;;;;;;;;;;;26973:21;;:4;:21;;::::0;26965:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27070:41;27099:4;27105:5;27070:28;:41::i;:::-;26874:245:::0;;:::o;25662:256::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25727:20:::1;25750:24;25768:4;25750:9;:24::i;:::-;25727:47;;25808:1;25793:12;:16;25785:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;25861:49;25879:4;25886:9;;;;;;;;;;;25897:12;25861:9;:49::i;:::-;25716:202;25662:256::o:0;21244:27::-;;;;:::o;6664:269::-;6757:4;6774:129;6783:12;:10;:12::i;:::-;6797:7;6806:96;6845:15;6806:96;;;;;;;;;;;;;;;;;:11;:25;6818:12;:10;:12::i;:::-;6806:25;;;;;;;;;;;;;;;:34;6832:7;6806:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6774:8;:129::i;:::-;6921:4;6914:11;;6664:269;;;;:::o;5556:175::-;5642:4;5659:42;5669:12;:10;:12::i;:::-;5683:9;5694:6;5659:9;:42::i;:::-;5719:4;5712:11;;5556:175;;;;:::o;21718:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;20739:22::-;;;;:::o;21169:25::-;;;;:::o;26683:182::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26799:8:::1;26768:19;:28;26788:7;26768:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26839:7;26823:34;;;26848:8;26823:34;;;;;;:::i;:::-;;;;;;;;26683:182:::0;;:::o;20803:29::-;;;;:::o;5739:151::-;5828:7;5855:11;:18;5867:5;5855:18;;;;;;;;;;;;;;;:27;5874:7;5855:27;;;;;;;;;;;;;;;;5848:34;;5739:151;;;;:::o;21069:24::-;;;;:::o;11121:169::-;10888:12;:10;:12::i;:::-;10878:22;;:6;;;;;;;;;;;:22;;;10870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11245:8:::1;11216:38;;11237:6;;;;;;;;;;;11216:38;;;;;;;;;;;;11274:8;11265:6;;:17;;;;;;;;;;;;;;;;;;11121:169:::0;:::o;20552:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;337:98::-;390:7;417:10;410:17;;337:98;:::o;8340:381::-;8493:1;8476:19;;:5;:19;;;8468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8574:1;8555:21;;:7;:21;;;8547:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8659:6;8629:11;:18;8641:5;8629:18;;;;;;;;;;;;;;;:27;8648:7;8629:27;;;;;;;;;;;;;;;:36;;;;8697:7;8681:32;;8690:5;8681:32;;;8706:6;8681:32;;;;;;:::i;:::-;;;;;;;;8340:381;;;:::o;27632:3193::-;27780:1;27764:18;;:4;:18;;;27756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27857:1;27843:16;;:2;:16;;;27835:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27919:13;:25;27933:10;27919:25;;;;;;;;;;;;;;;;;;;;;;;;;27918:26;27910:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;28005:1;27995:6;:11;27992:92;;28023:28;28039:4;28045:2;28049:1;28023:15;:28::i;:::-;28066:7;;27992:92;28100:11;;;;;;;;;;;28097:1083;;;28157:7;:5;:7::i;:::-;28149:15;;:4;:15;;;;:49;;;;;28191:7;:5;:7::i;:::-;28185:13;;:2;:13;;;;28149:49;:86;;;;;28233:1;28219:16;;:2;:16;;;;28149:86;:128;;;;;28270:6;28256:21;;:2;:21;;;;28149:128;:160;;;;;28299:10;;;;;;;;;;;28298:11;28149:160;28127:1042;;;28393:25;:31;28419:4;28393:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28429:31;:35;28461:2;28429:35;;;;;;;;;;;;;;;;;;;;;;;;;28428:36;28393:71;28389:765;;;28511:14;;28501:6;:24;;28493:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;28644:16;;28627:13;28637:2;28627:9;:13::i;:::-;28618:6;:22;;;;:::i;:::-;:42;;28610:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;28389:765;;;28763:25;:29;28789:2;28763:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28797:31;:37;28829:4;28797:37;;;;;;;;;;;;;;;;;;;;;;;;;28796:38;28763:71;28759:395;;;28881:14;;28871:6;:24;;28863:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;28759:395;;;29001:31;:35;29033:2;29001:35;;;;;;;;;;;;;;;;;;;;;;;;;28997:157;;29094:16;;29077:13;29087:2;29077:9;:13::i;:::-;29068:6;:22;;;;:::i;:::-;:42;;29060:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;28997:157;28759:395;28389:765;28127:1042;28097:1083;29193:28;29224:24;29242:4;29224:9;:24::i;:::-;29193:55;;29262:12;29301:20;;29277;:44;;29262:59;;29353:7;:35;;;;;29378:10;;;;;;;;;;;29377:11;29353:35;:84;;;;;29406:25;:31;29432:4;29406:31;;;;;;;;;;;;;;;;;;;;;;;;;29405:32;29353:84;:127;;;;;29455:19;:25;29475:4;29455:25;;;;;;;;;;;;;;;;;;;;;;;;;29454:26;29353:127;:168;;;;;29498:19;:23;29518:2;29498:23;;;;;;;;;;;;;;;;;;;;;;;;;29497:24;29353:168;29335:306;;;29561:4;29548:10;;:17;;;;;;;;;;;;;;;;;;29583:10;:8;:10::i;:::-;29624:5;29611:10;;:18;;;;;;;;;;;;;;;;;;29335:306;29654:12;29670:10;;;;;;;;;;;29669:11;29654:26;;29782:19;:25;29802:4;29782:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29811:19;:23;29831:2;29811:23;;;;;;;;;;;;;;;;;;;;;;;;;29782:52;29779:99;;;29861:5;29851:15;;29779:99;29891:12;29995:7;29992:779;;;30046:25;:29;30072:2;30046:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;30094:1;30079:12;;:16;30046:49;30042:576;;;30122:33;30151:3;30122:24;30133:12;;30122:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30115:40;;30216:12;;30203:10;;30196:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;30174:18;;:54;;;;;;;:::i;:::-;;;;;;;;30283:12;;30270:10;;30263:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;30247:12;;:48;;;;;;;:::i;:::-;;;;;;;;30042:576;;;30356:25;:31;30382:4;30356:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;30405:1;30391:11;;:15;30356:50;30353:265;;;30434:32;30462:3;30434:23;30445:11;;30434:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;30427:39;;30526:11;;30514:9;;30507:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;30485:18;;:52;;;;;;;:::i;:::-;;;;;;;;30591:11;;30579:9;;30572:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;30556:12;;:46;;;;;;;:::i;:::-;;;;;;;;30353:265;30042:576;30645:1;30638:4;:8;30635:93;;;30670:42;30686:4;30700;30707;30670:15;:42::i;:::-;30635:93;30755:4;30745:14;;;;;:::i;:::-;;;29992:779;30784:33;30800:4;30806:2;30810:6;30784:15;:33::i;:::-;27745:3080;;;;27632:3193;;;;:::o;9228:193::-;9314:7;9347:1;9342;:6;;9350:12;9334:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9374:9;9390:1;9386;:5;;;;:::i;:::-;9374:17;;9412:1;9405:8;;;9228:193;;;;;:::o;8894:182::-;8952:7;8972:9;8988:1;8984;:5;;;;:::i;:::-;8972:17;;9013:1;9008;:6;;9000:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9067:1;9060:8;;;8894:182;;;;:::o;27128:189::-;27245:5;27211:25;:31;27237:4;27211:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27303:5;27269:40;;27297:4;27269:40;;;;;;;;;;;;27128:189;;:::o;6941:575::-;7099:1;7081:20;;:6;:20;;;7073:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7183:1;7162:23;;:9;:23;;;7154:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7239:47;7260:6;7268:9;7279:6;7239:20;:47::i;:::-;7320:71;7342:6;7320:71;;;;;;;;;;;;;;;;;:9;:17;7330:6;7320:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7300:9;:17;7310:6;7300:17;;;;;;;;;;;;;;;:91;;;;7425:32;7450:6;7425:9;:20;7435:9;7425:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7402:9;:20;7412:9;7402:20;;;;;;;;;;;;;;;:55;;;;7490:9;7473:35;;7482:6;7473:35;;;7501:6;7473:35;;;;;;:::i;:::-;;;;;;;;6941:575;;;:::o;31969:1477::-;32008:23;32034:24;32052:4;32034:9;:24::i;:::-;32008:50;;32069:25;32118:12;;32097:18;;:33;;;;:::i;:::-;32069:61;;32141:12;32189:1;32170:15;:20;:46;;;;32215:1;32194:17;:22;32170:46;32167:60;;;32219:7;;;;;32167:60;32264:5;32243:26;;:17;;;;;;;;;;;:26;;;32240:254;;32329:2;32306:20;;:25;;;;:::i;:::-;32288:15;:43;32285:125;;;32392:2;32369:20;;:25;;;;:::i;:::-;32351:43;;32285:125;32240:254;;;32458:24;32476:4;32458:9;:24::i;:::-;32440:42;;32240:254;32566:23;32651:1;32631:17;32610:18;;32592:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;32566:86;;32663:26;32692:36;32712:15;32692;:19;;:36;;;;:::i;:::-;32663:65;;32742:25;32770:21;32742:49;;32805:36;32822:18;32805:16;:36::i;:::-;32856:18;32877:44;32903:17;32877:21;:25;;:44;;;;:::i;:::-;32856:65;;32935:17;32955:51;32988:17;32955:28;32970:12;;32955:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;32935:71;;33017:23;33056:9;33043:10;:22;;;;:::i;:::-;33017:48;;33103:1;33082:18;:22;;;;33130:1;33115:12;:16;;;;33166:1;33148:15;:19;:42;;;;;33189:1;33171:15;:19;33148:42;33145:210;;;33206:46;33219:15;33236;33206:12;:46::i;:::-;33272:71;33287:18;33307:15;33324:18;;33272:71;;;;;;;;:::i;:::-;;;;;;;;33145:210;33389:9;;;;;;;;;;;33381:23;;33412:21;33381:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33368:70;;;;;31997:1449;;;;;;;;;31969:1477;:::o;9429:254::-;9487:7;9518:1;9513;:6;9509:47;;9543:1;9536:8;;;;9509:47;9569:9;9585:1;9581;:5;;;;:::i;:::-;9569:17;;9614:1;9609;9605;:5;;;;:::i;:::-;:10;9597:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9674:1;9667:8;;;9429:254;;;;;:::o;9691:132::-;9749:7;9776:39;9780:1;9783;9776:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9769:46;;9691:132;;;;:::o;8729:125::-;;;;:::o;9084:136::-;9142:7;9169:43;9173:1;9176;9169:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9162:50;;9084:136;;;;:::o;30834:597::-;30963:21;31001:1;30987:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30963:40;;31032:4;31014;31019:1;31014:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31058:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31048:4;31053:1;31048:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31094:62;31111:4;31126:15;;;;;;;;;;;31144:11;31094:8;:62::i;:::-;31196:15;;;;;;;;;;;:66;;;31277:11;31303:1;31347:4;31374;31394:15;31196:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30889:542;30834:597;:::o;31440:520::-;31588:62;31605:4;31620:15;;;;;;;;;;;31638:11;31588:8;:62::i;:::-;31694:15;;;;;;;;;;;:31;;;31733:9;31766:4;31786:11;31812:1;31855;31906:4;31926:15;31694:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31440:520;;:::o;9831:279::-;9917:7;9949:1;9945;:5;9952:12;9937:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9976:9;9992:1;9988;:5;;;;:::i;:::-;9976:17;;10101:1;10094:8;;;9831:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:86::-;5771:7;5811:4;5804:5;5800:16;5789:27;;5736:86;;;:::o;5828:112::-;5911:22;5927:5;5911:22;:::i;:::-;5906:3;5899:35;5828:112;;:::o;5946:214::-;6035:4;6073:2;6062:9;6058:18;6050:26;;6086:67;6150:1;6139:9;6135:17;6126:6;6086:67;:::i;:::-;5946:214;;;;:::o;6166:118::-;6253:24;6271:5;6253:24;:::i;:::-;6248:3;6241:37;6166:118;;:::o;6290:222::-;6383:4;6421:2;6410:9;6406:18;6398:26;;6434:71;6502:1;6491:9;6487:17;6478:6;6434:71;:::i;:::-;6290:222;;;;:::o;6518:765::-;6604:6;6612;6620;6628;6677:3;6665:9;6656:7;6652:23;6648:33;6645:120;;;6684:79;;:::i;:::-;6645:120;6804:1;6829:53;6874:7;6865:6;6854:9;6850:22;6829:53;:::i;:::-;6819:63;;6775:117;6931:2;6957:53;7002:7;6993:6;6982:9;6978:22;6957:53;:::i;:::-;6947:63;;6902:118;7059:2;7085:53;7130:7;7121:6;7110:9;7106:22;7085:53;:::i;:::-;7075:63;;7030:118;7187:2;7213:53;7258:7;7249:6;7238:9;7234:22;7213:53;:::i;:::-;7203:63;;7158:118;6518:765;;;;;;;:::o;7289:116::-;7359:21;7374:5;7359:21;:::i;:::-;7352:5;7349:32;7339:60;;7395:1;7392;7385:12;7339:60;7289:116;:::o;7411:133::-;7454:5;7492:6;7479:20;7470:29;;7508:30;7532:5;7508:30;:::i;:::-;7411:133;;;;:::o;7550:323::-;7606:6;7655:2;7643:9;7634:7;7630:23;7626:32;7623:119;;;7661:79;;:::i;:::-;7623:119;7781:1;7806:50;7848:7;7839:6;7828:9;7824:22;7806:50;:::i;:::-;7796:60;;7752:114;7550:323;;;;:::o;7879:468::-;7944:6;7952;8001:2;7989:9;7980:7;7976:23;7972:32;7969:119;;;8007:79;;:::i;:::-;7969:119;8127:1;8152:53;8197:7;8188:6;8177:9;8173:22;8152:53;:::i;:::-;8142:63;;8098:117;8254:2;8280:50;8322:7;8313:6;8302:9;8298:22;8280:50;:::i;:::-;8270:60;;8225:115;7879:468;;;;;:::o;8353:474::-;8421:6;8429;8478:2;8466:9;8457:7;8453:23;8449:32;8446:119;;;8484:79;;:::i;:::-;8446:119;8604:1;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8575:117;8731:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;:::i;:::-;8747:63;;8702:118;8353:474;;;;;:::o;8833:180::-;8881:77;8878:1;8871:88;8978:4;8975:1;8968:15;9002:4;8999:1;8992:15;9019:320;9063:6;9100:1;9094:4;9090:12;9080:22;;9147:1;9141:4;9137:12;9168:18;9158:81;;9224:4;9216:6;9212:17;9202:27;;9158:81;9286:2;9278:6;9275:14;9255:18;9252:38;9249:84;;9305:18;;:::i;:::-;9249:84;9070:269;9019:320;;;:::o;9345:182::-;9485:34;9481:1;9473:6;9469:14;9462:58;9345:182;:::o;9533:366::-;9675:3;9696:67;9760:2;9755:3;9696:67;:::i;:::-;9689:74;;9772:93;9861:3;9772:93;:::i;:::-;9890:2;9885:3;9881:12;9874:19;;9533:366;;;:::o;9905:419::-;10071:4;10109:2;10098:9;10094:18;10086:26;;10158:9;10152:4;10148:20;10144:1;10133:9;10129:17;10122:47;10186:131;10312:4;10186:131;:::i;:::-;10178:139;;9905:419;;;:::o;10330:221::-;10470:34;10466:1;10458:6;10454:14;10447:58;10539:4;10534:2;10526:6;10522:15;10515:29;10330:221;:::o;10557:366::-;10699:3;10720:67;10784:2;10779:3;10720:67;:::i;:::-;10713:74;;10796:93;10885:3;10796:93;:::i;:::-;10914:2;10909:3;10905:12;10898:19;;10557:366;;;:::o;10929:419::-;11095:4;11133:2;11122:9;11118:18;11110:26;;11182:9;11176:4;11172:20;11168:1;11157:9;11153:17;11146:47;11210:131;11336:4;11210:131;:::i;:::-;11202:139;;10929:419;;;:::o;11354:147::-;11455:11;11492:3;11477:18;;11354:147;;;;:::o;11507:114::-;;:::o;11627:398::-;11786:3;11807:83;11888:1;11883:3;11807:83;:::i;:::-;11800:90;;11899:93;11988:3;11899:93;:::i;:::-;12017:1;12012:3;12008:11;12001:18;;11627:398;;;:::o;12031:379::-;12215:3;12237:147;12380:3;12237:147;:::i;:::-;12230:154;;12401:3;12394:10;;12031:379;;;:::o;12416:177::-;12556:29;12552:1;12544:6;12540:14;12533:53;12416:177;:::o;12599:366::-;12741:3;12762:67;12826:2;12821:3;12762:67;:::i;:::-;12755:74;;12838:93;12927:3;12838:93;:::i;:::-;12956:2;12951:3;12947:12;12940:19;;12599:366;;;:::o;12971:419::-;13137:4;13175:2;13164:9;13160:18;13152:26;;13224:9;13218:4;13214:20;13210:1;13199:9;13195:17;13188:47;13252:131;13378:4;13252:131;:::i;:::-;13244:139;;12971:419;;;:::o;13396:180::-;13444:77;13441:1;13434:88;13541:4;13538:1;13531:15;13565:4;13562:1;13555:15;13582:191;13622:3;13641:20;13659:1;13641:20;:::i;:::-;13636:25;;13675:20;13693:1;13675:20;:::i;:::-;13670:25;;13718:1;13715;13711:9;13704:16;;13739:3;13736:1;13733:10;13730:36;;;13746:18;;:::i;:::-;13730:36;13582:191;;;;:::o;13779:143::-;13836:5;13867:6;13861:13;13852:22;;13883:33;13910:5;13883:33;:::i;:::-;13779:143;;;;:::o;13928:351::-;13998:6;14047:2;14035:9;14026:7;14022:23;14018:32;14015:119;;;14053:79;;:::i;:::-;14015:119;14173:1;14198:64;14254:7;14245:6;14234:9;14230:22;14198:64;:::i;:::-;14188:74;;14144:128;13928:351;;;;:::o;14285:332::-;14406:4;14444:2;14433:9;14429:18;14421:26;;14457:71;14525:1;14514:9;14510:17;14501:6;14457:71;:::i;:::-;14538:72;14606:2;14595:9;14591:18;14582:6;14538:72;:::i;:::-;14285:332;;;;;:::o;14623:410::-;14663:7;14686:20;14704:1;14686:20;:::i;:::-;14681:25;;14720:20;14738:1;14720:20;:::i;:::-;14715:25;;14775:1;14772;14768:9;14797:30;14815:11;14797:30;:::i;:::-;14786:41;;14976:1;14967:7;14963:15;14960:1;14957:22;14937:1;14930:9;14910:83;14887:139;;15006:18;;:::i;:::-;14887:139;14671:362;14623:410;;;;:::o;15039:180::-;15087:77;15084:1;15077:88;15184:4;15181:1;15174:15;15208:4;15205:1;15198:15;15225:185;15265:1;15282:20;15300:1;15282:20;:::i;:::-;15277:25;;15316:20;15334:1;15316:20;:::i;:::-;15311:25;;15355:1;15345:35;;15360:18;;:::i;:::-;15345:35;15402:1;15399;15395:9;15390:14;;15225:185;;;;:::o;15416:85::-;15461:7;15490:5;15479:16;;15416:85;;;:::o;15507:158::-;15565:9;15598:61;15616:42;15625:32;15651:5;15625:32;:::i;:::-;15616:42;:::i;:::-;15598:61;:::i;:::-;15585:74;;15507:158;;;:::o;15671:147::-;15766:45;15805:5;15766:45;:::i;:::-;15761:3;15754:58;15671:147;;:::o;15824:807::-;16073:4;16111:3;16100:9;16096:19;16088:27;;16125:71;16193:1;16182:9;16178:17;16169:6;16125:71;:::i;:::-;16206:72;16274:2;16263:9;16259:18;16250:6;16206:72;:::i;:::-;16288:80;16364:2;16353:9;16349:18;16340:6;16288:80;:::i;:::-;16378;16454:2;16443:9;16439:18;16430:6;16378:80;:::i;:::-;16468:73;16536:3;16525:9;16521:19;16512:6;16468:73;:::i;:::-;16551;16619:3;16608:9;16604:19;16595:6;16551:73;:::i;:::-;15824:807;;;;;;;;;:::o;16637:143::-;16694:5;16725:6;16719:13;16710:22;;16741:33;16768:5;16741:33;:::i;:::-;16637:143;;;;:::o;16786:663::-;16874:6;16882;16890;16939:2;16927:9;16918:7;16914:23;16910:32;16907:119;;;16945:79;;:::i;:::-;16907:119;17065:1;17090:64;17146:7;17137:6;17126:9;17122:22;17090:64;:::i;:::-;17080:74;;17036:128;17203:2;17229:64;17285:7;17276:6;17265:9;17261:22;17229:64;:::i;:::-;17219:74;;17174:129;17342:2;17368:64;17424:7;17415:6;17404:9;17400:22;17368:64;:::i;:::-;17358:74;;17313:129;16786:663;;;;;:::o;17455:244::-;17595:34;17591:1;17583:6;17579:14;17572:58;17664:27;17659:2;17651:6;17647:15;17640:52;17455:244;:::o;17705:366::-;17847:3;17868:67;17932:2;17927:3;17868:67;:::i;:::-;17861:74;;17944:93;18033:3;17944:93;:::i;:::-;18062:2;18057:3;18053:12;18046:19;;17705:366;;;:::o;18077:419::-;18243:4;18281:2;18270:9;18266:18;18258:26;;18330:9;18324:4;18320:20;18316:1;18305:9;18301:17;18294:47;18358:131;18484:4;18358:131;:::i;:::-;18350:139;;18077:419;;;:::o;18502:223::-;18642:34;18638:1;18630:6;18626:14;18619:58;18711:6;18706:2;18698:6;18694:15;18687:31;18502:223;:::o;18731:366::-;18873:3;18894:67;18958:2;18953:3;18894:67;:::i;:::-;18887:74;;18970:93;19059:3;18970:93;:::i;:::-;19088:2;19083:3;19079:12;19072:19;;18731:366;;;:::o;19103:419::-;19269:4;19307:2;19296:9;19292:18;19284:26;;19356:9;19350:4;19346:20;19342:1;19331:9;19327:17;19320:47;19384:131;19510:4;19384:131;:::i;:::-;19376:139;;19103:419;;;:::o;19528:223::-;19668:34;19664:1;19656:6;19652:14;19645:58;19737:6;19732:2;19724:6;19720:15;19713:31;19528:223;:::o;19757:366::-;19899:3;19920:67;19984:2;19979:3;19920:67;:::i;:::-;19913:74;;19996:93;20085:3;19996:93;:::i;:::-;20114:2;20109:3;20105:12;20098:19;;19757:366;;;:::o;20129:419::-;20295:4;20333:2;20322:9;20318:18;20310:26;;20382:9;20376:4;20372:20;20368:1;20357:9;20353:17;20346:47;20410:131;20536:4;20410:131;:::i;:::-;20402:139;;20129:419;;;:::o;20554:221::-;20694:34;20690:1;20682:6;20678:14;20671:58;20763:4;20758:2;20750:6;20746:15;20739:29;20554:221;:::o;20781:366::-;20923:3;20944:67;21008:2;21003:3;20944:67;:::i;:::-;20937:74;;21020:93;21109:3;21020:93;:::i;:::-;21138:2;21133:3;21129:12;21122:19;;20781:366;;;:::o;21153:419::-;21319:4;21357:2;21346:9;21342:18;21334:26;;21406:9;21400:4;21396:20;21392:1;21381:9;21377:17;21370:47;21434:131;21560:4;21434:131;:::i;:::-;21426:139;;21153:419;;;:::o;21578:224::-;21718:34;21714:1;21706:6;21702:14;21695:58;21787:7;21782:2;21774:6;21770:15;21763:32;21578:224;:::o;21808:366::-;21950:3;21971:67;22035:2;22030:3;21971:67;:::i;:::-;21964:74;;22047:93;22136:3;22047:93;:::i;:::-;22165:2;22160:3;22156:12;22149:19;;21808:366;;;:::o;22180:419::-;22346:4;22384:2;22373:9;22369:18;22361:26;;22433:9;22427:4;22423:20;22419:1;22408:9;22404:17;22397:47;22461:131;22587:4;22461:131;:::i;:::-;22453:139;;22180:419;;;:::o;22605:222::-;22745:34;22741:1;22733:6;22729:14;22722:58;22814:5;22809:2;22801:6;22797:15;22790:30;22605:222;:::o;22833:366::-;22975:3;22996:67;23060:2;23055:3;22996:67;:::i;:::-;22989:74;;23072:93;23161:3;23072:93;:::i;:::-;23190:2;23185:3;23181:12;23174:19;;22833:366;;;:::o;23205:419::-;23371:4;23409:2;23398:9;23394:18;23386:26;;23458:9;23452:4;23448:20;23444:1;23433:9;23429:17;23422:47;23486:131;23612:4;23486:131;:::i;:::-;23478:139;;23205:419;;;:::o;23630:171::-;23770:23;23766:1;23758:6;23754:14;23747:47;23630:171;:::o;23807:366::-;23949:3;23970:67;24034:2;24029:3;23970:67;:::i;:::-;23963:74;;24046:93;24135:3;24046:93;:::i;:::-;24164:2;24159:3;24155:12;24148:19;;23807:366;;;:::o;24179:419::-;24345:4;24383:2;24372:9;24368:18;24360:26;;24432:9;24426:4;24422:20;24418:1;24407:9;24403:17;24396:47;24460:131;24586:4;24460:131;:::i;:::-;24452:139;;24179:419;;;:::o;24604:240::-;24744:34;24740:1;24732:6;24728:14;24721:58;24813:23;24808:2;24800:6;24796:15;24789:48;24604:240;:::o;24850:366::-;24992:3;25013:67;25077:2;25072:3;25013:67;:::i;:::-;25006:74;;25089:93;25178:3;25089:93;:::i;:::-;25207:2;25202:3;25198:12;25191:19;;24850:366;;;:::o;25222:419::-;25388:4;25426:2;25415:9;25411:18;25403:26;;25475:9;25469:4;25465:20;25461:1;25450:9;25446:17;25439:47;25503:131;25629:4;25503:131;:::i;:::-;25495:139;;25222:419;;;:::o;25647:169::-;25787:21;25783:1;25775:6;25771:14;25764:45;25647:169;:::o;25822:366::-;25964:3;25985:67;26049:2;26044:3;25985:67;:::i;:::-;25978:74;;26061:93;26150:3;26061:93;:::i;:::-;26179:2;26174:3;26170:12;26163:19;;25822:366;;;:::o;26194:419::-;26360:4;26398:2;26387:9;26383:18;26375:26;;26447:9;26441:4;26437:20;26433:1;26422:9;26418:17;26411:47;26475:131;26601:4;26475:131;:::i;:::-;26467:139;;26194:419;;;:::o;26619:241::-;26759:34;26755:1;26747:6;26743:14;26736:58;26828:24;26823:2;26815:6;26811:15;26804:49;26619:241;:::o;26866:366::-;27008:3;27029:67;27093:2;27088:3;27029:67;:::i;:::-;27022:74;;27105:93;27194:3;27105:93;:::i;:::-;27223:2;27218:3;27214:12;27207:19;;26866:366;;;:::o;27238:419::-;27404:4;27442:2;27431:9;27427:18;27419:26;;27491:9;27485:4;27481:20;27477:1;27466:9;27462:17;27455:47;27519:131;27645:4;27519:131;:::i;:::-;27511:139;;27238:419;;;:::o;27663:194::-;27703:4;27723:20;27741:1;27723:20;:::i;:::-;27718:25;;27757:20;27775:1;27757:20;:::i;:::-;27752:25;;27801:1;27798;27794:9;27786:17;;27825:1;27819:4;27816:11;27813:37;;;27830:18;;:::i;:::-;27813:37;27663:194;;;;:::o;27863:177::-;28003:29;27999:1;27991:6;27987:14;27980:53;27863:177;:::o;28046:366::-;28188:3;28209:67;28273:2;28268:3;28209:67;:::i;:::-;28202:74;;28285:93;28374:3;28285:93;:::i;:::-;28403:2;28398:3;28394:12;28387:19;;28046:366;;;:::o;28418:419::-;28584:4;28622:2;28611:9;28607:18;28599:26;;28671:9;28665:4;28661:20;28657:1;28646:9;28642:17;28635:47;28699:131;28825:4;28699:131;:::i;:::-;28691:139;;28418:419;;;:::o;28843:442::-;28992:4;29030:2;29019:9;29015:18;29007:26;;29043:71;29111:1;29100:9;29096:17;29087:6;29043:71;:::i;:::-;29124:72;29192:2;29181:9;29177:18;29168:6;29124:72;:::i;:::-;29206;29274:2;29263:9;29259:18;29250:6;29206:72;:::i;:::-;28843:442;;;;;;:::o;29291:220::-;29431:34;29427:1;29419:6;29415:14;29408:58;29500:3;29495:2;29487:6;29483:15;29476:28;29291:220;:::o;29517:366::-;29659:3;29680:67;29744:2;29739:3;29680:67;:::i;:::-;29673:74;;29756:93;29845:3;29756:93;:::i;:::-;29874:2;29869:3;29865:12;29858:19;;29517:366;;;:::o;29889:419::-;30055:4;30093:2;30082:9;30078:18;30070:26;;30142:9;30136:4;30132:20;30128:1;30117:9;30113:17;30106:47;30170:131;30296:4;30170:131;:::i;:::-;30162:139;;29889:419;;;:::o;30314:180::-;30362:77;30359:1;30352:88;30459:4;30456:1;30449:15;30483:4;30480:1;30473:15;30500:180;30548:77;30545:1;30538:88;30645:4;30642:1;30635:15;30669:4;30666:1;30659:15;30686:114;30753:6;30787:5;30781:12;30771:22;;30686:114;;;:::o;30806:184::-;30905:11;30939:6;30934:3;30927:19;30979:4;30974:3;30970:14;30955:29;;30806:184;;;;:::o;30996:132::-;31063:4;31086:3;31078:11;;31116:4;31111:3;31107:14;31099:22;;30996:132;;;:::o;31134:108::-;31211:24;31229:5;31211:24;:::i;:::-;31206:3;31199:37;31134:108;;:::o;31248:179::-;31317:10;31338:46;31380:3;31372:6;31338:46;:::i;:::-;31416:4;31411:3;31407:14;31393:28;;31248:179;;;;:::o;31433:113::-;31503:4;31535;31530:3;31526:14;31518:22;;31433:113;;;:::o;31582:732::-;31701:3;31730:54;31778:5;31730:54;:::i;:::-;31800:86;31879:6;31874:3;31800:86;:::i;:::-;31793:93;;31910:56;31960:5;31910:56;:::i;:::-;31989:7;32020:1;32005:284;32030:6;32027:1;32024:13;32005:284;;;32106:6;32100:13;32133:63;32192:3;32177:13;32133:63;:::i;:::-;32126:70;;32219:60;32272:6;32219:60;:::i;:::-;32209:70;;32065:224;32052:1;32049;32045:9;32040:14;;32005:284;;;32009:14;32305:3;32298:10;;31706:608;;;31582:732;;;;:::o;32320:831::-;32583:4;32621:3;32610:9;32606:19;32598:27;;32635:71;32703:1;32692:9;32688:17;32679:6;32635:71;:::i;:::-;32716:80;32792:2;32781:9;32777:18;32768:6;32716:80;:::i;:::-;32843:9;32837:4;32833:20;32828:2;32817:9;32813:18;32806:48;32871:108;32974:4;32965:6;32871:108;:::i;:::-;32863:116;;32989:72;33057:2;33046:9;33042:18;33033:6;32989:72;:::i;:::-;33071:73;33139:3;33128:9;33124:19;33115:6;33071:73;:::i;:::-;32320:831;;;;;;;;:::o
Swarm Source
ipfs://891ccb340f70fda3a71fd9821ad13b9103598a7dce22f2862f88e4684c45424f
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.