ERC-20
Overview
Max Total Supply
1,000,000,000 BHYC
Holders
55
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0 BHYCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
General
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-07 */ /** *Submitted for verification at Etherscan.io on 2022-10-12 */ // A Decentralized Meme - Bored Human Yacht Club Reality Show /** We are launching a reality show with absolutely boring people spending time on the boat and we will stream it online. Every $BHYC holder can apply for participation in reality show and spend fabulously boring time on the boat and win GRAND FINAL PRIZE. Taxes IN 10 DAYS AFTER LAUNCH ALL TAXES WILL BE SET TO 0%. Day 1 – Day 10 LIQUIDITY TAX - 5% (Liquidity tax send eth back to liquidity to support the price of the $BHYC) DEVELOPMENT AND MARKETING TAX - 4% (Development and Marketing tax goes to support marketing and development of the project) Roadmap Stage 1 - Launch Launch of BHYC Uniswap Coinmarketcap Stage 2 - Reveal and Registration Start participants candidates registration Reveal the boat location Reveal the boat Stage 3 – Announcement and Preparation Announce the participants Announce start date LIVE Start reality show streaming Marketing Collaboration with popular streamers $BHYC Utility Exclusives for $BHYC holders */ // TG- https://t.me/BoredHumanYachtClub // WEB- http://boredhumanyachtclub.net // TWITTER- https://twitter.com/BoredHumanYatCl // MEDIUM- https://boredhumanyachtclub.medium.com/ // SPDX-License-Identifier: MIT pragma solidity = 0.8.12; // ##### Context ##### // This contract is only required for intermediate, library-like contracts. abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // ##### Ownable ##### // Contract module which provides a basic access control mechanism abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // Initializes the contract setting the deployer as the initial owner. constructor() { _transferOwnership(_msgSender()); } // Returns the address of the current owner. function owner() public view virtual returns (address) { return _owner; } // Throws if called by any account other than the owner. modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } // Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner. function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } // Transfers ownership of the contract to a new account (`newOwner`). function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } // Transfers ownership of the contract to a new account (`newOwner`). function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // ##### IERC20 ##### interface IERC20 { // Returns the amount of tokens in existence. function totalSupply() external view returns (uint256); // Returns the amount of tokens owned by `account`. function balanceOf(address account) external view returns (uint256); // Moves `amount` tokens from the caller's account to `recipient`. function transfer(address recipient, uint256 amount) external returns (bool); // Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. function allowance(address owner, address spender) external view returns (uint256); // Sets `amount` as the allowance of `spender` over the caller's tokens. function approve(address spender, uint256 amount) external returns (bool); // Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); // Emitted when `value` tokens are moved from one account (`from`) to another (`to`). event Transfer(address indexed from, address indexed to, uint256 value); // Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance. event Approval(address indexed owner, address indexed spender, uint256 value); } // ##### IERC20Metadata ##### // Interface for the optional metadata functions from the ERC20 standard. interface IERC20Metadata is IERC20 { // Returns the name of the token. function name() external view returns (string memory); // Returns the symbol of the token. function symbol() external view returns (string memory); // Returns the decimals places of the token. function decimals() external view returns (uint8); } // ##### ERC20 ##### contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; // Sets the values for {name} and {symbol}. constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } // Returns the name of the token. function name() public view virtual override returns (string memory) { return _name; } // Returns the symbol of the token, usually a shorter version of the function symbol() public view virtual override returns (string memory) { return _symbol; } // Returns the number of decimals used to get its user representation. // For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). function decimals() public view virtual override returns (uint8) { return 18; } // See {IERC20-totalSupply}. function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } // See {IERC20-balanceOf}. function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } // See {IERC20-transfer}. function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } // See {IERC20-allowance}. function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } // See {IERC20-approve}. function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } // See {IERC20-transferFrom}. function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } // Atomically increases the allowance granted to `spender` by the caller. function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } // Atomically decreases the allowance granted to `spender` by the caller. function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } // Moves `amount` of tokens from `sender` to `recipient`. function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } // Creates `amount` tokens and assigns them to `account`, increasing the total supply. function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } // Destroys `amount` tokens from `account`, reducing the total supply. function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } // Sets `amount` as the allowance of `spender` over the `owner` s tokens. 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); } // Hook that is called before any transfer of tokens. This includes minting and burning. function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} // Hook that is called after any transfer of tokens. This includes minting and burning. function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // ##### IUniswapV2Factory ##### interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // ##### IUniswapV2Factory ##### interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // ##### IUniswapV2Router02 ##### interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } // ##### GENERAL ##### contract General is ERC20, Ownable { // Namings string private projectName = "Bored Human Yacht Club"; string private tokenName = "BHYC"; // Wallets address payable public devWallet = payable(0x8aBD89431Ad7587565c205cAD4d38F2dC08F7F59); address public marketingWallet = address(0x8aBD89431Ad7587565c205cAD4d38F2dC08F7F59); // Tokens uint256 public tokensForDev; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; // Buy fee percents uint256 public buyTotalFees; uint256 public buyDevFee = 4; uint256 public buyMarketingFee = 0; uint256 public buyLiquidityFee = 5; // Sell fee percents uint256 public sellTotalFees; uint256 public sellDevFee = 4; uint256 public sellMarketingFee = 0; uint256 public sellLiquidityFee = 5; // Limits uint256 public maxTransactionAmount = 10000000 * (10 ** decimals()); // 1% from total supply maxTransactionAmountTxn; uint256 public swapTokensAtAmount; uint256 public maxWalletAmount = 10000000 * (10 ** decimals()); // 1% from total supply maxWalletAmount; // Restrictions bool public limitsEnabled = true; bool public tradingEnabled = false; bool public swapEnabled = false; // UniswapV2Router02 IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; // Etc. bool private swapping; // Exlcude from fees and max transaction amount mapping(address => bool) public 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 ); // Exclude from fees event ExcludeFromFees(address indexed account, bool isExcluded); // Set automated market maker pair event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); // Swap and liquify event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20(projectName, tokenName) { // Uniswap IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAMMPair(address(uniswapV2Pair), true); // Total supply uint256 totalSupply = 1000000000 * (10 ** decimals()); // Swap Tokens At Amount swapTokensAtAmount = (totalSupply * 10) / 10000; // 0.1% swap wallet // Buy fees buyTotalFees = buyDevFee + buyMarketingFee + buyLiquidityFee; // Sell fees sellTotalFees = sellDevFee + sellMarketingFee + sellLiquidityFee; // Exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(deadAddress, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(deadAddress, true); // _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again. _mint(msg.sender, totalSupply); } receive() external payable {} // Enable trading (once enabled, can never be turned off) function enableTrading() external onlyOwner { tradingEnabled = true; swapEnabled = true; } function disableLimits() external onlyOwner { limitsEnabled = false; } function enableLimits() external onlyOwner { limitsEnabled = true; } // Disable transfer delay (once enabled, can never be turned off) function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; } // Change the minimum amount of tokens to sell from fees function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } // Update maximum transaction amount function setMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } // Update maximum wallet amount function setMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxWallet lower than 0.5%"); maxWalletAmount = newNum * (10**18); } // Exclude from max transaction function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { isExcludedMaxTransactionAmount[updAds] = isEx; } // Disable contract sales if absolutely necessary (emergency use only) function setSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } // Update buy fees function setBuyFees( uint256 _devFee, uint256 _marketingFee, uint256 _liquidityFee ) external onlyOwner { require((_devFee + _marketingFee + _liquidityFee) <= 10, "Max buy fee is <= 10%"); buyDevFee = _devFee; buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyTotalFees = buyDevFee + buyMarketingFee + buyLiquidityFee; } // Update sell fees function setSellFees( uint256 _devFee, uint256 _marketingFee, uint256 _liquidityFee ) external onlyOwner { require((_devFee + _marketingFee + _liquidityFee) <= 10, "Max sell fee is <= 10%"); sellDevFee = _devFee; sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellTotalFees = sellDevFee + sellMarketingFee + sellLiquidityFee; } // Exclude from fees function excludeFromFees(address account, bool excluded) public onlyOwner { isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } // Market Maker Pair function setAMMPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAMMPair(pair, value); } function decreaseSellTax( uint256 decreaseDevFee, uint256 decreaseMarketingFee, uint256 decreaseLiquidityFee ) external { require(msg.sender == devWallet, "Only dev can decrease"); sellDevFee = sellDevFee - decreaseDevFee; sellMarketingFee = sellMarketingFee - decreaseMarketingFee; sellLiquidityFee = sellLiquidityFee - decreaseLiquidityFee; } function decreaseBuyTax( uint256 decreaseDevFee, uint256 decreaseMarketingFee, uint256 decreaseLiquidityFee ) external { require(msg.sender == devWallet, "Only dev can decrease"); buyDevFee = buyDevFee - decreaseDevFee; buyMarketingFee = buyMarketingFee - decreaseMarketingFee; buyLiquidityFee = buyLiquidityFee - decreaseLiquidityFee; } function withdraw(uint256 amount) external { require(msg.sender == devWallet, "Only dev can withdraw"); require(amount >= address(this).balance, "Not enough balance"); devWallet.transfer(amount); } function _setAMMPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } // Transfer function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsEnabled) { if (from != owner() && to != owner() && to != address(0) && to != deadAddress && !swapping ) { if (!tradingEnabled) { require(isExcludedFromFees[from] || isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded"); } //when sell else if ( automatedMarketMakerPairs[to] && !isExcludedMaxTransactionAmount[from] ) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if (!isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded"); } } } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !isExcludedFromFees[from] && !isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (isExcludedFromFees[from] || isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount * sellTotalFees / 100; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } // Swap tokens for Eth. 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 ); } // Add Liquidity 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 devWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForDev + tokensForMarketing + tokensForLiquidity; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance - liquidityTokens; uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance - initialETHBalance; uint256 ethForDev = ethBalance * tokensForDev / totalTokensToSwap; uint256 ethForMarketing = ethBalance * tokensForMarketing / totalTokensToSwap; uint256 ethForLiquidity = ethBalance - ethForDev - ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); (success, ) = address(marketingWallet).call{value: ethForMarketing}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"decreaseDevFee","type":"uint256"},{"internalType":"uint256","name":"decreaseMarketingFee","type":"uint256"},{"internalType":"uint256","name":"decreaseLiquidityFee","type":"uint256"}],"name":"decreaseBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"decreaseDevFee","type":"uint256"},{"internalType":"uint256","name":"decreaseMarketingFee","type":"uint256"},{"internalType":"uint256","name":"decreaseLiquidityFee","type":"uint256"}],"name":"decreaseSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280601681526020017f426f7265642048756d616e20596163687420436c756200000000000000000000815250600690805190602001906200005192919062000c7c565b506040518060400160405280600481526020017f4248594300000000000000000000000000000000000000000000000000000000815250600790805190602001906200009f92919062000c7c565b50738abd89431ad7587565c205cad4d38f2dc08f7f59600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738abd89431ad7587565c205cad4d38f2dc08f7f59600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600e556000600f556005601055600460125560006013556005601455620001786200073360201b60201c565b600a62000186919062000ec6565b6298968062000196919062000f17565b601555620001a96200073360201b60201c565b600a620001b7919062000ec6565b62989680620001c7919062000f17565b6017556001601860006101000a81548160ff0219169083151502179055506000601860016101000a81548160ff0219169083151502179055506000601860026101000a81548160ff0219169083151502179055506001601a60006101000a81548160ff0219169083151502179055503480156200024357600080fd5b5060068054620002539062000fa7565b80601f0160208091040260200160405190810160405280929190818152602001828054620002819062000fa7565b8015620002d25780601f10620002a657610100808354040283529160200191620002d2565b820191906000526020600020905b815481529060010190602001808311620002b457829003601f168201915b505050505060078054620002e69062000fa7565b80601f0160208091040260200160405190810160405280929190818152602001828054620003149062000fa7565b8015620003655780601f10620003395761010080835404028352916020019162000365565b820191906000526020600020905b8154815290600101906020018083116200034757829003601f168201915b505050505081600390805190602001906200038292919062000c7c565b5080600490805190602001906200039b92919062000c7c565b505050620003be620003b26200073c60201b60201c565b6200074460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620003ea8160016200080a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000490919062001047565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051e919062001047565b6040518363ffffffff1660e01b81526004016200053d9291906200108a565b6020604051808303816000875af11580156200055d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000583919062001047565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620005cb60a05160016200080a60201b60201c565b620005e060a0516001620008f460201b60201c565b6000620005f26200073360201b60201c565b600a62000600919062000ec6565b633b9aca0062000611919062000f17565b9050612710600a8262000625919062000f17565b620006319190620010e6565b601681905550601054600f54600e546200064c91906200111e565b6200065891906200111e565b600d819055506014546013546012546200067391906200111e565b6200067f91906200111e565b601181905550620006a7620006996200099560201b60201c565b6001620009bf60201b60201c565b620006ba306001620009bf60201b60201c565b620006cf61dead6001620009bf60201b60201c565b620006f1620006e36200099560201b60201c565b60016200080a60201b60201c565b620007043060016200080a60201b60201c565b6200071961dead60016200080a60201b60201c565b6200072b338262000af960201b60201c565b5050620012d8565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200081a6200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008406200099560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089090620011dc565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009cf6200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009f56200099560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4590620011dc565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000aed91906200121b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b639062001288565b60405180910390fd5b62000b806000838362000c7260201b60201c565b806002600082825462000b9491906200111e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000beb91906200111e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c529190620012bb565b60405180910390a362000c6e6000838362000c7760201b60201c565b5050565b505050565b505050565b82805462000c8a9062000fa7565b90600052602060002090601f01602090048101928262000cae576000855562000cfa565b82601f1062000cc957805160ff191683800117855562000cfa565b8280016001018555821562000cfa579182015b8281111562000cf957825182559160200191906001019062000cdc565b5b50905062000d09919062000d0d565b5090565b5b8082111562000d2857600081600090555060010162000d0e565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000dba5780860481111562000d925762000d9162000d2c565b5b600185161562000da25780820291505b808102905062000db28562000d5b565b945062000d72565b94509492505050565b60008262000dd5576001905062000ea8565b8162000de5576000905062000ea8565b816001811462000dfe576002811462000e095762000e3f565b600191505062000ea8565b60ff84111562000e1e5762000e1d62000d2c565b5b8360020a91508482111562000e385762000e3762000d2c565b5b5062000ea8565b5060208310610133831016604e8410600b841016171562000e795782820a90508381111562000e735762000e7262000d2c565b5b62000ea8565b62000e88848484600162000d68565b9250905081840481111562000ea25762000ea162000d2c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ed38262000eaf565b915062000ee08362000eb9565b925062000f0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000dc3565b905092915050565b600062000f248262000eaf565b915062000f318362000eaf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f6d5762000f6c62000d2c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fc057607f821691505b6020821081141562000fd75762000fd662000f78565b5b50919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200100f8262000fe2565b9050919050565b620010218162001002565b81146200102d57600080fd5b50565b600081519050620010418162001016565b92915050565b60006020828403121562001060576200105f62000fdd565b5b6000620010708482850162001030565b91505092915050565b620010848162001002565b82525050565b6000604082019050620010a1600083018562001079565b620010b0602083018462001079565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010f38262000eaf565b9150620011008362000eaf565b925082620011135762001112620010b7565b5b828204905092915050565b60006200112b8262000eaf565b9150620011388362000eaf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001170576200116f62000d2c565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620011c46020836200117b565b9150620011d1826200118c565b602082019050919050565b60006020820190508181036000830152620011f781620011b5565b9050919050565b60008115159050919050565b6200121581620011fe565b82525050565b60006020820190506200123260008301846200120a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001270601f836200117b565b91506200127d8262001238565b602082019050919050565b60006020820190508181036000830152620012a38162001261565b9050919050565b620012b58162000eaf565b82525050565b6000602082019050620012d26000830184620012aa565b92915050565b60805160a05161549e62001336600039600081816112d301528181611577015261298a015260008181611005015281816129320152818161399801528181613a7901528181613aa001528181613b3c0152613b63015261549e6000f3fe60806040526004361061036f5760003560e01c806375f0a874116101c6578063b62496f5116100f7578063e01af92c11610095578063f11a24d31161006f578063f11a24d314610c97578063f2fde38b14610cc2578063f637434214610ceb578063f928364c14610d1657610376565b8063e01af92c14610c2c578063e2f4560514610c55578063e884f26014610c8057610376565b8063c8c8ebe4116100d1578063c8c8ebe414610b70578063d85ba06314610b9b578063dba01cf714610bc6578063dd62ed3e14610bef57610376565b8063b62496f514610adf578063c024666814610b1c578063c876d0b914610b4557610376565b80639c3b4fdc11610164578063a457c2d71161013e578063a457c2d7146109fd578063a9059cbb14610a3a578063aa4bde2814610a77578063afa4f3b214610aa257610376565b80639c3b4fdc1461097c5780639fccce32146109a7578063a0d82dc5146109d257610376565b80638da5cb5b116101a05780638da5cb5b146108d05780638ea5220f146108fb578063921369131461092657806395d89b411461095157610376565b806375f0a874146108635780637bce5a041461088e5780638a8c523c146108b957610376565b80633582ad23116102a05780636a486a8e1161023e57806370bc55b61161021857806370bc55b6146107d1578063715018a6146107fa57806374010ece146108115780637571336a1461083a57610376565b80636a486a8e1461073e5780636ddd17131461076957806370a082311461079457610376565b80634ada218b1161027a5780634ada218b146106825780634bb2c785146106ad5780634fbee193146106ea5780636902ca611461072757610376565b80633582ad23146105ef578063395093511461061a57806349bd5a5e1461065757610376565b80631f3fed8f1161030d57806327c8f835116102e757806327c8f835146105475780632d99d32e146105725780632e1a7d4d1461059b578063313ce567146105c457610376565b80631f3fed8f146104b657806323b872dd146104e157806327a14fc21461051e57610376565b80630f683e90116103495780630f683e901461040c5780631694505e1461043557806318160ddd146104605780631a8145bb1461048b57610376565b806306fdde031461037b578063095ea7b3146103a65780630d075d9c146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d2d565b60405161039d9190613ccb565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c89190613d86565b610dbf565b6040516103da9190613de1565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190613dfc565b610ddd565b005b34801561041857600080fd5b50610433600480360381019061042e9190613dfc565b610ef0565b005b34801561044157600080fd5b5061044a611003565b6040516104579190613eae565b60405180910390f35b34801561046c57600080fd5b50610475611027565b6040516104829190613ed8565b60405180910390f35b34801561049757600080fd5b506104a0611031565b6040516104ad9190613ed8565b60405180910390f35b3480156104c257600080fd5b506104cb611037565b6040516104d89190613ed8565b60405180910390f35b3480156104ed57600080fd5b5061050860048036038101906105039190613ef3565b61103d565b6040516105159190613de1565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613f46565b611135565b005b34801561055357600080fd5b5061055c61124f565b6040516105699190613f82565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190613fc9565b611255565b005b3480156105a757600080fd5b506105c260048036038101906105bd9190613f46565b61136e565b005b3480156105d057600080fd5b506105d96114ad565b6040516105e69190614025565b60405180910390f35b3480156105fb57600080fd5b506106046114b6565b6040516106119190613de1565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190613d86565b6114c9565b60405161064e9190613de1565b60405180910390f35b34801561066357600080fd5b5061066c611575565b6040516106799190613f82565b60405180910390f35b34801561068e57600080fd5b50610697611599565b6040516106a49190613de1565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190614040565b6115ac565b6040516106e19190613de1565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c9190614040565b6115cc565b60405161071e9190613de1565b60405180910390f35b34801561073357600080fd5b5061073c6115ec565b005b34801561074a57600080fd5b50610753611685565b6040516107609190613ed8565b60405180910390f35b34801561077557600080fd5b5061077e61168b565b60405161078b9190613de1565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190614040565b61169e565b6040516107c89190613ed8565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190613dfc565b6116e6565b005b34801561080657600080fd5b5061080f6117b7565b005b34801561081d57600080fd5b5061083860048036038101906108339190613f46565b61183f565b005b34801561084657600080fd5b50610861600480360381019061085c9190613fc9565b611959565b005b34801561086f57600080fd5b50610878611a30565b6040516108859190613f82565b60405180910390f35b34801561089a57600080fd5b506108a3611a56565b6040516108b09190613ed8565b60405180910390f35b3480156108c557600080fd5b506108ce611a5c565b005b3480156108dc57600080fd5b506108e5611b10565b6040516108f29190613f82565b60405180910390f35b34801561090757600080fd5b50610910611b3a565b60405161091d919061408e565b60405180910390f35b34801561093257600080fd5b5061093b611b60565b6040516109489190613ed8565b60405180910390f35b34801561095d57600080fd5b50610966611b66565b6040516109739190613ccb565b60405180910390f35b34801561098857600080fd5b50610991611bf8565b60405161099e9190613ed8565b60405180910390f35b3480156109b357600080fd5b506109bc611bfe565b6040516109c99190613ed8565b60405180910390f35b3480156109de57600080fd5b506109e7611c04565b6040516109f49190613ed8565b60405180910390f35b348015610a0957600080fd5b50610a246004803603810190610a1f9190613d86565b611c0a565b604051610a319190613de1565b60405180910390f35b348015610a4657600080fd5b50610a616004803603810190610a5c9190613d86565b611cf5565b604051610a6e9190613de1565b60405180910390f35b348015610a8357600080fd5b50610a8c611d13565b604051610a999190613ed8565b60405180910390f35b348015610aae57600080fd5b50610ac96004803603810190610ac49190613f46565b611d19565b604051610ad69190613de1565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b019190614040565b611e6e565b604051610b139190613de1565b60405180910390f35b348015610b2857600080fd5b50610b436004803603810190610b3e9190613fc9565b611e8e565b005b348015610b5157600080fd5b50610b5a611fb3565b604051610b679190613de1565b60405180910390f35b348015610b7c57600080fd5b50610b85611fc6565b604051610b929190613ed8565b60405180910390f35b348015610ba757600080fd5b50610bb0611fcc565b604051610bbd9190613ed8565b60405180910390f35b348015610bd257600080fd5b50610bed6004803603810190610be89190613dfc565b611fd2565b005b348015610bfb57600080fd5b50610c166004803603810190610c1191906140a9565b6120a3565b604051610c239190613ed8565b60405180910390f35b348015610c3857600080fd5b50610c536004803603810190610c4e91906140e9565b61212a565b005b348015610c6157600080fd5b50610c6a6121c3565b604051610c779190613ed8565b60405180910390f35b348015610c8c57600080fd5b50610c956121c9565b005b348015610ca357600080fd5b50610cac612262565b604051610cb99190613ed8565b60405180910390f35b348015610cce57600080fd5b50610ce96004803603810190610ce49190614040565b612268565b005b348015610cf757600080fd5b50610d00612360565b604051610d0d9190613ed8565b60405180910390f35b348015610d2257600080fd5b50610d2b612366565b005b606060038054610d3c90614145565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6890614145565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050905090565b6000610dd3610dcc6123ff565b8484612407565b6001905092915050565b610de56123ff565b73ffffffffffffffffffffffffffffffffffffffff16610e03611b10565b73ffffffffffffffffffffffffffffffffffffffff1614610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e50906141c3565b60405180910390fd5b600a818385610e689190614212565b610e729190614212565b1115610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa906142b4565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e54610edb9190614212565b610ee59190614212565b600d81905550505050565b610ef86123ff565b73ffffffffffffffffffffffffffffffffffffffff16610f16611b10565b73ffffffffffffffffffffffffffffffffffffffff1614610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f63906141c3565b60405180910390fd5b600a818385610f7b9190614212565b610f859190614212565b1115610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90614320565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254610fee9190614212565b610ff89190614212565b601181905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600c5481565b600b5481565b600061104a8484846125d2565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110956123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c906143b2565b60405180910390fd5b611129856111216123ff565b858403612407565b60019150509392505050565b61113d6123ff565b73ffffffffffffffffffffffffffffffffffffffff1661115b611b10565b73ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906141c3565b60405180910390fd5b6111b96114ad565b600a6111c59190614505565b6103e860056111d2611027565b6111dc9190614550565b6111e691906145d9565b6111f091906145d9565b811015611232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112299061467c565b60405180910390fd5b670de0b6b3a7640000816112469190614550565b60178190555050565b61dead81565b61125d6123ff565b73ffffffffffffffffffffffffffffffffffffffff1661127b611b10565b73ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c8906141c3565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113579061470e565b60405180910390fd5b61136a828261324a565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f59061477a565b60405180910390fd5b47811015611441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611438906147e6565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114a9573d6000803e3d6000fd5b5050565b60006012905090565b601860009054906101000a900460ff1681565b600061156b6114d66123ff565b8484600160006114e46123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115669190614212565b612407565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601860019054906101000a900460ff1681565b601c6020528060005260406000206000915054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b6115f46123ff565b73ffffffffffffffffffffffffffffffffffffffff16611612611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906141c3565b60405180910390fd5b6001601860006101000a81548160ff021916908315150217905550565b60115481565b601860029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d90614852565b60405180910390fd5b826012546117849190614872565b601281905550816013546117989190614872565b601381905550806014546117ac9190614872565b601481905550505050565b6117bf6123ff565b73ffffffffffffffffffffffffffffffffffffffff166117dd611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a906141c3565b60405180910390fd5b61183d60006132eb565b565b6118476123ff565b73ffffffffffffffffffffffffffffffffffffffff16611865611b10565b73ffffffffffffffffffffffffffffffffffffffff16146118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b2906141c3565b60405180910390fd5b6118c36114ad565b600a6118cf9190614505565b6103e860016118dc611027565b6118e69190614550565b6118f091906145d9565b6118fa91906145d9565b81101561193c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193390614918565b60405180910390fd5b670de0b6b3a7640000816119509190614550565b60158190555050565b6119616123ff565b73ffffffffffffffffffffffffffffffffffffffff1661197f611b10565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc906141c3565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b611a646123ff565b73ffffffffffffffffffffffffffffffffffffffff16611a82611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf906141c3565b60405180910390fd5b6001601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b606060048054611b7590614145565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba190614145565b8015611bee5780601f10611bc357610100808354040283529160200191611bee565b820191906000526020600020905b815481529060010190602001808311611bd157829003601f168201915b5050505050905090565b600e5481565b600a5481565b60125481565b60008060016000611c196123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906149aa565b60405180910390fd5b611cea611ce16123ff565b85858403612407565b600191505092915050565b6000611d09611d026123ff565b84846125d2565b6001905092915050565b60175481565b6000611d236123ff565b73ffffffffffffffffffffffffffffffffffffffff16611d41611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8e906141c3565b60405180910390fd5b620186a06001611da5611027565b611daf9190614550565b611db991906145d9565b821015611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290614a3c565b60405180910390fd5b6103e86005611e08611027565b611e129190614550565b611e1c91906145d9565b821115611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590614ace565b60405180910390fd5b8160168190555060019050919050565b601d6020528060005260406000206000915054906101000a900460ff1681565b611e966123ff565b73ffffffffffffffffffffffffffffffffffffffff16611eb4611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f01906141c3565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fa79190613de1565b60405180910390a25050565b601a60009054906101000a900460ff1681565b60155481565b600d5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205990614852565b60405180910390fd5b82600e546120709190614872565b600e8190555081600f546120849190614872565b600f81905550806010546120989190614872565b601081905550505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121326123ff565b73ffffffffffffffffffffffffffffffffffffffff16612150611b10565b73ffffffffffffffffffffffffffffffffffffffff16146121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d906141c3565b60405180910390fd5b80601860026101000a81548160ff02191690831515021790555050565b60165481565b6121d16123ff565b73ffffffffffffffffffffffffffffffffffffffff166121ef611b10565b73ffffffffffffffffffffffffffffffffffffffff1614612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c906141c3565b60405180910390fd5b6000601a60006101000a81548160ff021916908315150217905550565b60105481565b6122706123ff565b73ffffffffffffffffffffffffffffffffffffffff1661228e611b10565b73ffffffffffffffffffffffffffffffffffffffff16146122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db906141c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b90614b60565b60405180910390fd5b61235d816132eb565b50565b60145481565b61236e6123ff565b73ffffffffffffffffffffffffffffffffffffffff1661238c611b10565b73ffffffffffffffffffffffffffffffffffffffff16146123e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d9906141c3565b60405180910390fd5b6000601860006101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246e90614bf2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124de90614c84565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125c59190613ed8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a990614da8565b60405180910390fd5b60008114156126cc576126c7838360006133b1565b613245565b601860009054906101000a900460ff1615612d8f576126e9611b10565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127575750612727611b10565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127905750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127ca575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127e35750601a60019054906101000a900460ff16155b15612d8e57601860019054906101000a900460ff166128dd57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061289d5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d390614e14565b60405180910390fd5b5b601a60009054906101000a900460ff1615612aa5576128fa611b10565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561298157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612aa45743601960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5690614ecc565b60405180910390fd5b43601960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b485750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bef57601554811115612b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8990614f5e565b60405180910390fd5b601754612b9e8361169e565b82612ba99190614212565b1115612bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be190614fca565b60405180910390fd5b612d8d565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c925750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ce157601554811115612cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd39061505c565b60405180910390fd5b612d8c565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d8b57601754612d3e8361169e565b82612d499190614212565b1115612d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8190614fca565b60405180910390fd5b5b5b5b5b5b6000601654612d9d3061169e565b10159050808015612dba5750601860029054906101000a900460ff165b8015612dd35750601a60019054906101000a900460ff16155b8015612e295750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e7f5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ed55750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f19576001601a60016101000a81548160ff021916908315150217905550612efd613632565b6000601a60016101000a81548160ff0219169083151502179055505b6000601a60019054906101000a900460ff16159050601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fcf5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fd957600090505b6000811561323657601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561303c57506000601154115b156130fb576064601154856130519190614550565b61305b91906145d9565b90506011546012548261306e9190614550565b61307891906145d9565b600a60008282546130899190614212565b92505081905550601154601354826130a19190614550565b6130ab91906145d9565b600b60008282546130bc9190614212565b92505081905550601154601454826130d49190614550565b6130de91906145d9565b600c60008282546130ef9190614212565b92505081905550613212565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561315657506000600d54115b15613211576064600d548561316b9190614550565b61317591906145d9565b9050600d54600e54826131889190614550565b61319291906145d9565b600a60008282546131a39190614212565b92505081905550600d54600f54826131bb9190614550565b6131c591906145d9565b600b60008282546131d69190614212565b92505081905550600d54601054826131ee9190614550565b6131f891906145d9565b600c60008282546132099190614212565b925050819055505b5b6000811115613227576132268630836133b1565b5b80846132339190614872565b93505b6132418686866133b1565b5050505b505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341890614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348890614da8565b60405180910390fd5b61349c8383836138ef565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613522576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613519906150ee565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135b59190614212565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136199190613ed8565b60405180910390a361362c8484846138f4565b50505050565b600061363d3061169e565b90506000600c54600b54600a546136549190614212565b61365e9190614212565b90506000808314806136705750600082145b1561367d575050506138ed565b601460165461368c9190614550565b8311156136a55760146016546136a29190614550565b92505b6000600283600c54866136b89190614550565b6136c291906145d9565b6136cc91906145d9565b9050600081856136dc9190614872565b905060004790506136ec826138f9565b600081476136fa9190614872565b9050600086600a548361370d9190614550565b61371791906145d9565b9050600087600b548461372a9190614550565b61373491906145d9565b905060008183856137459190614872565b61374f9190614872565b90506000600c819055506000600b819055506000600a81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516137af9061513f565b60006040518083038185875af1925050503d80600081146137ec576040519150601f19603f3d011682016040523d82523d6000602084013e6137f1565b606091505b505080985050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161383d9061513f565b60006040518083038185875af1925050503d806000811461387a576040519150601f19603f3d011682016040523d82523d6000602084013e61387f565b606091505b5050809850506000871180156138955750600081115b156138e2576138a48782613b36565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682600c546040516138d993929190615154565b60405180910390a15b505050505050505050505b565b505050565b505050565b6000600267ffffffffffffffff8111156139165761391561518b565b5b6040519080825280602002602001820160405280156139445781602001602082028036833780820191505090505b509050308160008151811061395c5761395b6151ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2591906151fe565b81600181518110613a3957613a386151ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a9e307f000000000000000000000000000000000000000000000000000000000000000084612407565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b00959493929190615324565b600060405180830381600087803b158015613b1a57600080fd5b505af1158015613b2e573d6000803e3d6000fd5b505050505050565b613b61307f000000000000000000000000000000000000000000000000000000000000000084612407565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613be89695949392919061539f565b60606040518083038185885af1158015613c06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c2b9190615415565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c6c578082015181840152602081019050613c51565b83811115613c7b576000848401525b50505050565b6000601f19601f8301169050919050565b6000613c9d82613c32565b613ca78185613c3d565b9350613cb7818560208601613c4e565b613cc081613c81565b840191505092915050565b60006020820190508181036000830152613ce58184613c92565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d1d82613cf2565b9050919050565b613d2d81613d12565b8114613d3857600080fd5b50565b600081359050613d4a81613d24565b92915050565b6000819050919050565b613d6381613d50565b8114613d6e57600080fd5b50565b600081359050613d8081613d5a565b92915050565b60008060408385031215613d9d57613d9c613ced565b5b6000613dab85828601613d3b565b9250506020613dbc85828601613d71565b9150509250929050565b60008115159050919050565b613ddb81613dc6565b82525050565b6000602082019050613df66000830184613dd2565b92915050565b600080600060608486031215613e1557613e14613ced565b5b6000613e2386828701613d71565b9350506020613e3486828701613d71565b9250506040613e4586828701613d71565b9150509250925092565b6000819050919050565b6000613e74613e6f613e6a84613cf2565b613e4f565b613cf2565b9050919050565b6000613e8682613e59565b9050919050565b6000613e9882613e7b565b9050919050565b613ea881613e8d565b82525050565b6000602082019050613ec36000830184613e9f565b92915050565b613ed281613d50565b82525050565b6000602082019050613eed6000830184613ec9565b92915050565b600080600060608486031215613f0c57613f0b613ced565b5b6000613f1a86828701613d3b565b9350506020613f2b86828701613d3b565b9250506040613f3c86828701613d71565b9150509250925092565b600060208284031215613f5c57613f5b613ced565b5b6000613f6a84828501613d71565b91505092915050565b613f7c81613d12565b82525050565b6000602082019050613f976000830184613f73565b92915050565b613fa681613dc6565b8114613fb157600080fd5b50565b600081359050613fc381613f9d565b92915050565b60008060408385031215613fe057613fdf613ced565b5b6000613fee85828601613d3b565b9250506020613fff85828601613fb4565b9150509250929050565b600060ff82169050919050565b61401f81614009565b82525050565b600060208201905061403a6000830184614016565b92915050565b60006020828403121561405657614055613ced565b5b600061406484828501613d3b565b91505092915050565b600061407882613cf2565b9050919050565b6140888161406d565b82525050565b60006020820190506140a3600083018461407f565b92915050565b600080604083850312156140c0576140bf613ced565b5b60006140ce85828601613d3b565b92505060206140df85828601613d3b565b9150509250929050565b6000602082840312156140ff576140fe613ced565b5b600061410d84828501613fb4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061415d57607f821691505b6020821081141561417157614170614116565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141ad602083613c3d565b91506141b882614177565b602082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061421d82613d50565b915061422883613d50565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561425d5761425c6141e3565b5b828201905092915050565b7f4d61782062757920666565206973203c3d203130250000000000000000000000600082015250565b600061429e601583613c3d565b91506142a982614268565b602082019050919050565b600060208201905081810360008301526142cd81614291565b9050919050565b7f4d61782073656c6c20666565206973203c3d2031302500000000000000000000600082015250565b600061430a601683613c3d565b9150614315826142d4565b602082019050919050565b60006020820190508181036000830152614339816142fd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061439c602883613c3d565b91506143a782614340565b604082019050919050565b600060208201905081810360008301526143cb8161438f565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561442957808604811115614405576144046141e3565b5b60018516156144145780820291505b8081029050614422856143d2565b94506143e9565b94509492505050565b60008261444257600190506144fe565b8161445057600090506144fe565b816001811461446657600281146144705761449f565b60019150506144fe565b60ff841115614482576144816141e3565b5b8360020a915084821115614499576144986141e3565b5b506144fe565b5060208310610133831016604e8410600b84101617156144d45782820a9050838111156144cf576144ce6141e3565b5b6144fe565b6144e184848460016143df565b925090508184048111156144f8576144f76141e3565b5b81810290505b9392505050565b600061451082613d50565b915061451b83614009565b92506145487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614432565b905092915050565b600061455b82613d50565b915061456683613d50565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459f5761459e6141e3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145e482613d50565b91506145ef83613d50565b9250826145ff576145fe6145aa565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614666602483613c3d565b91506146718261460a565b604082019050919050565b6000602082019050818103600083015261469581614659565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006146f8603983613c3d565b91506147038261469c565b604082019050919050565b60006020820190508181036000830152614727816146eb565b9050919050565b7f4f6e6c79206465762063616e2077697468647261770000000000000000000000600082015250565b6000614764601583613c3d565b915061476f8261472e565b602082019050919050565b6000602082019050818103600083015261479381614757565b9050919050565b7f4e6f7420656e6f7567682062616c616e63650000000000000000000000000000600082015250565b60006147d0601283613c3d565b91506147db8261479a565b602082019050919050565b600060208201905081810360008301526147ff816147c3565b9050919050565b7f4f6e6c79206465762063616e2064656372656173650000000000000000000000600082015250565b600061483c601583613c3d565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b600061487d82613d50565b915061488883613d50565b92508282101561489b5761489a6141e3565b5b828203905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614902602f83613c3d565b915061490d826148a6565b604082019050919050565b60006020820190508181036000830152614931816148f5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614994602583613c3d565b915061499f82614938565b604082019050919050565b600060208201905081810360008301526149c381614987565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614a26603583613c3d565b9150614a31826149ca565b604082019050919050565b60006020820190508181036000830152614a5581614a19565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614ab8603483613c3d565b9150614ac382614a5c565b604082019050919050565b60006020820190508181036000830152614ae781614aab565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b4a602683613c3d565b9150614b5582614aee565b604082019050919050565b60006020820190508181036000830152614b7981614b3d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614bdc602483613c3d565b9150614be782614b80565b604082019050919050565b60006020820190508181036000830152614c0b81614bcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c6e602283613c3d565b9150614c7982614c12565b604082019050919050565b60006020820190508181036000830152614c9d81614c61565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d00602583613c3d565b9150614d0b82614ca4565b604082019050919050565b60006020820190508181036000830152614d2f81614cf3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d92602383613c3d565b9150614d9d82614d36565b604082019050919050565b60006020820190508181036000830152614dc181614d85565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614dfe601683613c3d565b9150614e0982614dc8565b602082019050919050565b60006020820190508181036000830152614e2d81614df1565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614eb6604983613c3d565b9150614ec182614e34565b606082019050919050565b60006020820190508181036000830152614ee581614ea9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614f48603583613c3d565b9150614f5382614eec565b604082019050919050565b60006020820190508181036000830152614f7781614f3b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614fb4601383613c3d565b9150614fbf82614f7e565b602082019050919050565b60006020820190508181036000830152614fe381614fa7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615046603683613c3d565b915061505182614fea565b604082019050919050565b6000602082019050818103600083015261507581615039565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006150d8602683613c3d565b91506150e38261507c565b604082019050919050565b60006020820190508181036000830152615107816150cb565b9050919050565b600081905092915050565b50565b600061512960008361510e565b915061513482615119565b600082019050919050565b600061514a8261511c565b9150819050919050565b60006060820190506151696000830186613ec9565b6151766020830185613ec9565b6151836040830184613ec9565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506151f881613d24565b92915050565b60006020828403121561521457615213613ced565b5b6000615222848285016151e9565b91505092915050565b6000819050919050565b600061525061524b6152468461522b565b613e4f565b613d50565b9050919050565b61526081615235565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61529b81613d12565b82525050565b60006152ad8383615292565b60208301905092915050565b6000602082019050919050565b60006152d182615266565b6152db8185615271565b93506152e683615282565b8060005b838110156153175781516152fe88826152a1565b9750615309836152b9565b9250506001810190506152ea565b5085935050505092915050565b600060a0820190506153396000830188613ec9565b6153466020830187615257565b818103604083015261535881866152c6565b90506153676060830185613f73565b6153746080830184613ec9565b9695505050505050565b600061538982613e7b565b9050919050565b6153998161537e565b82525050565b600060c0820190506153b46000830189613f73565b6153c16020830188613ec9565b6153ce6040830187615257565b6153db6060830186615257565b6153e86080830185615390565b6153f560a0830184613ec9565b979650505050505050565b60008151905061540f81613d5a565b92915050565b60008060006060848603121561542e5761542d613ced565b5b600061543c86828701615400565b935050602061544d86828701615400565b925050604061545e86828701615400565b915050925092509256fea2646970667358221220d421bda510b36d4b2f5b1477f105271b12870ea0c0a805409917b4cc415e12b364736f6c634300080c0033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806375f0a874116101c6578063b62496f5116100f7578063e01af92c11610095578063f11a24d31161006f578063f11a24d314610c97578063f2fde38b14610cc2578063f637434214610ceb578063f928364c14610d1657610376565b8063e01af92c14610c2c578063e2f4560514610c55578063e884f26014610c8057610376565b8063c8c8ebe4116100d1578063c8c8ebe414610b70578063d85ba06314610b9b578063dba01cf714610bc6578063dd62ed3e14610bef57610376565b8063b62496f514610adf578063c024666814610b1c578063c876d0b914610b4557610376565b80639c3b4fdc11610164578063a457c2d71161013e578063a457c2d7146109fd578063a9059cbb14610a3a578063aa4bde2814610a77578063afa4f3b214610aa257610376565b80639c3b4fdc1461097c5780639fccce32146109a7578063a0d82dc5146109d257610376565b80638da5cb5b116101a05780638da5cb5b146108d05780638ea5220f146108fb578063921369131461092657806395d89b411461095157610376565b806375f0a874146108635780637bce5a041461088e5780638a8c523c146108b957610376565b80633582ad23116102a05780636a486a8e1161023e57806370bc55b61161021857806370bc55b6146107d1578063715018a6146107fa57806374010ece146108115780637571336a1461083a57610376565b80636a486a8e1461073e5780636ddd17131461076957806370a082311461079457610376565b80634ada218b1161027a5780634ada218b146106825780634bb2c785146106ad5780634fbee193146106ea5780636902ca611461072757610376565b80633582ad23146105ef578063395093511461061a57806349bd5a5e1461065757610376565b80631f3fed8f1161030d57806327c8f835116102e757806327c8f835146105475780632d99d32e146105725780632e1a7d4d1461059b578063313ce567146105c457610376565b80631f3fed8f146104b657806323b872dd146104e157806327a14fc21461051e57610376565b80630f683e90116103495780630f683e901461040c5780631694505e1461043557806318160ddd146104605780631a8145bb1461048b57610376565b806306fdde031461037b578063095ea7b3146103a65780630d075d9c146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d2d565b60405161039d9190613ccb565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c89190613d86565b610dbf565b6040516103da9190613de1565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190613dfc565b610ddd565b005b34801561041857600080fd5b50610433600480360381019061042e9190613dfc565b610ef0565b005b34801561044157600080fd5b5061044a611003565b6040516104579190613eae565b60405180910390f35b34801561046c57600080fd5b50610475611027565b6040516104829190613ed8565b60405180910390f35b34801561049757600080fd5b506104a0611031565b6040516104ad9190613ed8565b60405180910390f35b3480156104c257600080fd5b506104cb611037565b6040516104d89190613ed8565b60405180910390f35b3480156104ed57600080fd5b5061050860048036038101906105039190613ef3565b61103d565b6040516105159190613de1565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613f46565b611135565b005b34801561055357600080fd5b5061055c61124f565b6040516105699190613f82565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190613fc9565b611255565b005b3480156105a757600080fd5b506105c260048036038101906105bd9190613f46565b61136e565b005b3480156105d057600080fd5b506105d96114ad565b6040516105e69190614025565b60405180910390f35b3480156105fb57600080fd5b506106046114b6565b6040516106119190613de1565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190613d86565b6114c9565b60405161064e9190613de1565b60405180910390f35b34801561066357600080fd5b5061066c611575565b6040516106799190613f82565b60405180910390f35b34801561068e57600080fd5b50610697611599565b6040516106a49190613de1565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190614040565b6115ac565b6040516106e19190613de1565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c9190614040565b6115cc565b60405161071e9190613de1565b60405180910390f35b34801561073357600080fd5b5061073c6115ec565b005b34801561074a57600080fd5b50610753611685565b6040516107609190613ed8565b60405180910390f35b34801561077557600080fd5b5061077e61168b565b60405161078b9190613de1565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190614040565b61169e565b6040516107c89190613ed8565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190613dfc565b6116e6565b005b34801561080657600080fd5b5061080f6117b7565b005b34801561081d57600080fd5b5061083860048036038101906108339190613f46565b61183f565b005b34801561084657600080fd5b50610861600480360381019061085c9190613fc9565b611959565b005b34801561086f57600080fd5b50610878611a30565b6040516108859190613f82565b60405180910390f35b34801561089a57600080fd5b506108a3611a56565b6040516108b09190613ed8565b60405180910390f35b3480156108c557600080fd5b506108ce611a5c565b005b3480156108dc57600080fd5b506108e5611b10565b6040516108f29190613f82565b60405180910390f35b34801561090757600080fd5b50610910611b3a565b60405161091d919061408e565b60405180910390f35b34801561093257600080fd5b5061093b611b60565b6040516109489190613ed8565b60405180910390f35b34801561095d57600080fd5b50610966611b66565b6040516109739190613ccb565b60405180910390f35b34801561098857600080fd5b50610991611bf8565b60405161099e9190613ed8565b60405180910390f35b3480156109b357600080fd5b506109bc611bfe565b6040516109c99190613ed8565b60405180910390f35b3480156109de57600080fd5b506109e7611c04565b6040516109f49190613ed8565b60405180910390f35b348015610a0957600080fd5b50610a246004803603810190610a1f9190613d86565b611c0a565b604051610a319190613de1565b60405180910390f35b348015610a4657600080fd5b50610a616004803603810190610a5c9190613d86565b611cf5565b604051610a6e9190613de1565b60405180910390f35b348015610a8357600080fd5b50610a8c611d13565b604051610a999190613ed8565b60405180910390f35b348015610aae57600080fd5b50610ac96004803603810190610ac49190613f46565b611d19565b604051610ad69190613de1565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b019190614040565b611e6e565b604051610b139190613de1565b60405180910390f35b348015610b2857600080fd5b50610b436004803603810190610b3e9190613fc9565b611e8e565b005b348015610b5157600080fd5b50610b5a611fb3565b604051610b679190613de1565b60405180910390f35b348015610b7c57600080fd5b50610b85611fc6565b604051610b929190613ed8565b60405180910390f35b348015610ba757600080fd5b50610bb0611fcc565b604051610bbd9190613ed8565b60405180910390f35b348015610bd257600080fd5b50610bed6004803603810190610be89190613dfc565b611fd2565b005b348015610bfb57600080fd5b50610c166004803603810190610c1191906140a9565b6120a3565b604051610c239190613ed8565b60405180910390f35b348015610c3857600080fd5b50610c536004803603810190610c4e91906140e9565b61212a565b005b348015610c6157600080fd5b50610c6a6121c3565b604051610c779190613ed8565b60405180910390f35b348015610c8c57600080fd5b50610c956121c9565b005b348015610ca357600080fd5b50610cac612262565b604051610cb99190613ed8565b60405180910390f35b348015610cce57600080fd5b50610ce96004803603810190610ce49190614040565b612268565b005b348015610cf757600080fd5b50610d00612360565b604051610d0d9190613ed8565b60405180910390f35b348015610d2257600080fd5b50610d2b612366565b005b606060038054610d3c90614145565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6890614145565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050905090565b6000610dd3610dcc6123ff565b8484612407565b6001905092915050565b610de56123ff565b73ffffffffffffffffffffffffffffffffffffffff16610e03611b10565b73ffffffffffffffffffffffffffffffffffffffff1614610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e50906141c3565b60405180910390fd5b600a818385610e689190614212565b610e729190614212565b1115610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa906142b4565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e54610edb9190614212565b610ee59190614212565b600d81905550505050565b610ef86123ff565b73ffffffffffffffffffffffffffffffffffffffff16610f16611b10565b73ffffffffffffffffffffffffffffffffffffffff1614610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f63906141c3565b60405180910390fd5b600a818385610f7b9190614212565b610f859190614212565b1115610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90614320565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254610fee9190614212565b610ff89190614212565b601181905550505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600c5481565b600b5481565b600061104a8484846125d2565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110956123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c906143b2565b60405180910390fd5b611129856111216123ff565b858403612407565b60019150509392505050565b61113d6123ff565b73ffffffffffffffffffffffffffffffffffffffff1661115b611b10565b73ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906141c3565b60405180910390fd5b6111b96114ad565b600a6111c59190614505565b6103e860056111d2611027565b6111dc9190614550565b6111e691906145d9565b6111f091906145d9565b811015611232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112299061467c565b60405180910390fd5b670de0b6b3a7640000816112469190614550565b60178190555050565b61dead81565b61125d6123ff565b73ffffffffffffffffffffffffffffffffffffffff1661127b611b10565b73ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c8906141c3565b60405180910390fd5b7f0000000000000000000000006c7439b216efc0d3e472078f5af62f9ce7e5570f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113579061470e565b60405180910390fd5b61136a828261324a565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f59061477a565b60405180910390fd5b47811015611441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611438906147e6565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114a9573d6000803e3d6000fd5b5050565b60006012905090565b601860009054906101000a900460ff1681565b600061156b6114d66123ff565b8484600160006114e46123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115669190614212565b612407565b6001905092915050565b7f0000000000000000000000006c7439b216efc0d3e472078f5af62f9ce7e5570f81565b601860019054906101000a900460ff1681565b601c6020528060005260406000206000915054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b6115f46123ff565b73ffffffffffffffffffffffffffffffffffffffff16611612611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906141c3565b60405180910390fd5b6001601860006101000a81548160ff021916908315150217905550565b60115481565b601860029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d90614852565b60405180910390fd5b826012546117849190614872565b601281905550816013546117989190614872565b601381905550806014546117ac9190614872565b601481905550505050565b6117bf6123ff565b73ffffffffffffffffffffffffffffffffffffffff166117dd611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a906141c3565b60405180910390fd5b61183d60006132eb565b565b6118476123ff565b73ffffffffffffffffffffffffffffffffffffffff16611865611b10565b73ffffffffffffffffffffffffffffffffffffffff16146118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b2906141c3565b60405180910390fd5b6118c36114ad565b600a6118cf9190614505565b6103e860016118dc611027565b6118e69190614550565b6118f091906145d9565b6118fa91906145d9565b81101561193c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193390614918565b60405180910390fd5b670de0b6b3a7640000816119509190614550565b60158190555050565b6119616123ff565b73ffffffffffffffffffffffffffffffffffffffff1661197f611b10565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc906141c3565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b611a646123ff565b73ffffffffffffffffffffffffffffffffffffffff16611a82611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf906141c3565b60405180910390fd5b6001601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b606060048054611b7590614145565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba190614145565b8015611bee5780601f10611bc357610100808354040283529160200191611bee565b820191906000526020600020905b815481529060010190602001808311611bd157829003601f168201915b5050505050905090565b600e5481565b600a5481565b60125481565b60008060016000611c196123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906149aa565b60405180910390fd5b611cea611ce16123ff565b85858403612407565b600191505092915050565b6000611d09611d026123ff565b84846125d2565b6001905092915050565b60175481565b6000611d236123ff565b73ffffffffffffffffffffffffffffffffffffffff16611d41611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8e906141c3565b60405180910390fd5b620186a06001611da5611027565b611daf9190614550565b611db991906145d9565b821015611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290614a3c565b60405180910390fd5b6103e86005611e08611027565b611e129190614550565b611e1c91906145d9565b821115611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590614ace565b60405180910390fd5b8160168190555060019050919050565b601d6020528060005260406000206000915054906101000a900460ff1681565b611e966123ff565b73ffffffffffffffffffffffffffffffffffffffff16611eb4611b10565b73ffffffffffffffffffffffffffffffffffffffff1614611f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f01906141c3565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fa79190613de1565b60405180910390a25050565b601a60009054906101000a900460ff1681565b60155481565b600d5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205990614852565b60405180910390fd5b82600e546120709190614872565b600e8190555081600f546120849190614872565b600f81905550806010546120989190614872565b601081905550505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121326123ff565b73ffffffffffffffffffffffffffffffffffffffff16612150611b10565b73ffffffffffffffffffffffffffffffffffffffff16146121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d906141c3565b60405180910390fd5b80601860026101000a81548160ff02191690831515021790555050565b60165481565b6121d16123ff565b73ffffffffffffffffffffffffffffffffffffffff166121ef611b10565b73ffffffffffffffffffffffffffffffffffffffff1614612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c906141c3565b60405180910390fd5b6000601a60006101000a81548160ff021916908315150217905550565b60105481565b6122706123ff565b73ffffffffffffffffffffffffffffffffffffffff1661228e611b10565b73ffffffffffffffffffffffffffffffffffffffff16146122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db906141c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b90614b60565b60405180910390fd5b61235d816132eb565b50565b60145481565b61236e6123ff565b73ffffffffffffffffffffffffffffffffffffffff1661238c611b10565b73ffffffffffffffffffffffffffffffffffffffff16146123e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d9906141c3565b60405180910390fd5b6000601860006101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246e90614bf2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124de90614c84565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125c59190613ed8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a990614da8565b60405180910390fd5b60008114156126cc576126c7838360006133b1565b613245565b601860009054906101000a900460ff1615612d8f576126e9611b10565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127575750612727611b10565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127905750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127ca575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127e35750601a60019054906101000a900460ff16155b15612d8e57601860019054906101000a900460ff166128dd57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061289d5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d390614e14565b60405180910390fd5b5b601a60009054906101000a900460ff1615612aa5576128fa611b10565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561298157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d957507f0000000000000000000000006c7439b216efc0d3e472078f5af62f9ce7e5570f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612aa45743601960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5690614ecc565b60405180910390fd5b43601960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b485750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bef57601554811115612b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8990614f5e565b60405180910390fd5b601754612b9e8361169e565b82612ba99190614212565b1115612bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be190614fca565b60405180910390fd5b612d8d565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c925750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ce157601554811115612cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd39061505c565b60405180910390fd5b612d8c565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d8b57601754612d3e8361169e565b82612d499190614212565b1115612d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8190614fca565b60405180910390fd5b5b5b5b5b5b6000601654612d9d3061169e565b10159050808015612dba5750601860029054906101000a900460ff165b8015612dd35750601a60019054906101000a900460ff16155b8015612e295750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e7f5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ed55750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f19576001601a60016101000a81548160ff021916908315150217905550612efd613632565b6000601a60016101000a81548160ff0219169083151502179055505b6000601a60019054906101000a900460ff16159050601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fcf5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fd957600090505b6000811561323657601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561303c57506000601154115b156130fb576064601154856130519190614550565b61305b91906145d9565b90506011546012548261306e9190614550565b61307891906145d9565b600a60008282546130899190614212565b92505081905550601154601354826130a19190614550565b6130ab91906145d9565b600b60008282546130bc9190614212565b92505081905550601154601454826130d49190614550565b6130de91906145d9565b600c60008282546130ef9190614212565b92505081905550613212565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561315657506000600d54115b15613211576064600d548561316b9190614550565b61317591906145d9565b9050600d54600e54826131889190614550565b61319291906145d9565b600a60008282546131a39190614212565b92505081905550600d54600f54826131bb9190614550565b6131c591906145d9565b600b60008282546131d69190614212565b92505081905550600d54601054826131ee9190614550565b6131f891906145d9565b600c60008282546132099190614212565b925050819055505b5b6000811115613227576132268630836133b1565b5b80846132339190614872565b93505b6132418686866133b1565b5050505b505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341890614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348890614da8565b60405180910390fd5b61349c8383836138ef565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613522576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613519906150ee565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135b59190614212565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136199190613ed8565b60405180910390a361362c8484846138f4565b50505050565b600061363d3061169e565b90506000600c54600b54600a546136549190614212565b61365e9190614212565b90506000808314806136705750600082145b1561367d575050506138ed565b601460165461368c9190614550565b8311156136a55760146016546136a29190614550565b92505b6000600283600c54866136b89190614550565b6136c291906145d9565b6136cc91906145d9565b9050600081856136dc9190614872565b905060004790506136ec826138f9565b600081476136fa9190614872565b9050600086600a548361370d9190614550565b61371791906145d9565b9050600087600b548461372a9190614550565b61373491906145d9565b905060008183856137459190614872565b61374f9190614872565b90506000600c819055506000600b819055506000600a81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516137af9061513f565b60006040518083038185875af1925050503d80600081146137ec576040519150601f19603f3d011682016040523d82523d6000602084013e6137f1565b606091505b505080985050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161383d9061513f565b60006040518083038185875af1925050503d806000811461387a576040519150601f19603f3d011682016040523d82523d6000602084013e61387f565b606091505b5050809850506000871180156138955750600081115b156138e2576138a48782613b36565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682600c546040516138d993929190615154565b60405180910390a15b505050505050505050505b565b505050565b505050565b6000600267ffffffffffffffff8111156139165761391561518b565b5b6040519080825280602002602001820160405280156139445781602001602082028036833780820191505090505b509050308160008151811061395c5761395b6151ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2591906151fe565b81600181518110613a3957613a386151ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a9e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612407565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b00959493929190615324565b600060405180830381600087803b158015613b1a57600080fd5b505af1158015613b2e573d6000803e3d6000fd5b505050505050565b613b61307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612407565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613be89695949392919061539f565b60606040518083038185885af1158015613c06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c2b9190615415565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c6c578082015181840152602081019050613c51565b83811115613c7b576000848401525b50505050565b6000601f19601f8301169050919050565b6000613c9d82613c32565b613ca78185613c3d565b9350613cb7818560208601613c4e565b613cc081613c81565b840191505092915050565b60006020820190508181036000830152613ce58184613c92565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d1d82613cf2565b9050919050565b613d2d81613d12565b8114613d3857600080fd5b50565b600081359050613d4a81613d24565b92915050565b6000819050919050565b613d6381613d50565b8114613d6e57600080fd5b50565b600081359050613d8081613d5a565b92915050565b60008060408385031215613d9d57613d9c613ced565b5b6000613dab85828601613d3b565b9250506020613dbc85828601613d71565b9150509250929050565b60008115159050919050565b613ddb81613dc6565b82525050565b6000602082019050613df66000830184613dd2565b92915050565b600080600060608486031215613e1557613e14613ced565b5b6000613e2386828701613d71565b9350506020613e3486828701613d71565b9250506040613e4586828701613d71565b9150509250925092565b6000819050919050565b6000613e74613e6f613e6a84613cf2565b613e4f565b613cf2565b9050919050565b6000613e8682613e59565b9050919050565b6000613e9882613e7b565b9050919050565b613ea881613e8d565b82525050565b6000602082019050613ec36000830184613e9f565b92915050565b613ed281613d50565b82525050565b6000602082019050613eed6000830184613ec9565b92915050565b600080600060608486031215613f0c57613f0b613ced565b5b6000613f1a86828701613d3b565b9350506020613f2b86828701613d3b565b9250506040613f3c86828701613d71565b9150509250925092565b600060208284031215613f5c57613f5b613ced565b5b6000613f6a84828501613d71565b91505092915050565b613f7c81613d12565b82525050565b6000602082019050613f976000830184613f73565b92915050565b613fa681613dc6565b8114613fb157600080fd5b50565b600081359050613fc381613f9d565b92915050565b60008060408385031215613fe057613fdf613ced565b5b6000613fee85828601613d3b565b9250506020613fff85828601613fb4565b9150509250929050565b600060ff82169050919050565b61401f81614009565b82525050565b600060208201905061403a6000830184614016565b92915050565b60006020828403121561405657614055613ced565b5b600061406484828501613d3b565b91505092915050565b600061407882613cf2565b9050919050565b6140888161406d565b82525050565b60006020820190506140a3600083018461407f565b92915050565b600080604083850312156140c0576140bf613ced565b5b60006140ce85828601613d3b565b92505060206140df85828601613d3b565b9150509250929050565b6000602082840312156140ff576140fe613ced565b5b600061410d84828501613fb4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061415d57607f821691505b6020821081141561417157614170614116565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141ad602083613c3d565b91506141b882614177565b602082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061421d82613d50565b915061422883613d50565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561425d5761425c6141e3565b5b828201905092915050565b7f4d61782062757920666565206973203c3d203130250000000000000000000000600082015250565b600061429e601583613c3d565b91506142a982614268565b602082019050919050565b600060208201905081810360008301526142cd81614291565b9050919050565b7f4d61782073656c6c20666565206973203c3d2031302500000000000000000000600082015250565b600061430a601683613c3d565b9150614315826142d4565b602082019050919050565b60006020820190508181036000830152614339816142fd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061439c602883613c3d565b91506143a782614340565b604082019050919050565b600060208201905081810360008301526143cb8161438f565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561442957808604811115614405576144046141e3565b5b60018516156144145780820291505b8081029050614422856143d2565b94506143e9565b94509492505050565b60008261444257600190506144fe565b8161445057600090506144fe565b816001811461446657600281146144705761449f565b60019150506144fe565b60ff841115614482576144816141e3565b5b8360020a915084821115614499576144986141e3565b5b506144fe565b5060208310610133831016604e8410600b84101617156144d45782820a9050838111156144cf576144ce6141e3565b5b6144fe565b6144e184848460016143df565b925090508184048111156144f8576144f76141e3565b5b81810290505b9392505050565b600061451082613d50565b915061451b83614009565b92506145487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614432565b905092915050565b600061455b82613d50565b915061456683613d50565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459f5761459e6141e3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145e482613d50565b91506145ef83613d50565b9250826145ff576145fe6145aa565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614666602483613c3d565b91506146718261460a565b604082019050919050565b6000602082019050818103600083015261469581614659565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006146f8603983613c3d565b91506147038261469c565b604082019050919050565b60006020820190508181036000830152614727816146eb565b9050919050565b7f4f6e6c79206465762063616e2077697468647261770000000000000000000000600082015250565b6000614764601583613c3d565b915061476f8261472e565b602082019050919050565b6000602082019050818103600083015261479381614757565b9050919050565b7f4e6f7420656e6f7567682062616c616e63650000000000000000000000000000600082015250565b60006147d0601283613c3d565b91506147db8261479a565b602082019050919050565b600060208201905081810360008301526147ff816147c3565b9050919050565b7f4f6e6c79206465762063616e2064656372656173650000000000000000000000600082015250565b600061483c601583613c3d565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b600061487d82613d50565b915061488883613d50565b92508282101561489b5761489a6141e3565b5b828203905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614902602f83613c3d565b915061490d826148a6565b604082019050919050565b60006020820190508181036000830152614931816148f5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614994602583613c3d565b915061499f82614938565b604082019050919050565b600060208201905081810360008301526149c381614987565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614a26603583613c3d565b9150614a31826149ca565b604082019050919050565b60006020820190508181036000830152614a5581614a19565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614ab8603483613c3d565b9150614ac382614a5c565b604082019050919050565b60006020820190508181036000830152614ae781614aab565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b4a602683613c3d565b9150614b5582614aee565b604082019050919050565b60006020820190508181036000830152614b7981614b3d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614bdc602483613c3d565b9150614be782614b80565b604082019050919050565b60006020820190508181036000830152614c0b81614bcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c6e602283613c3d565b9150614c7982614c12565b604082019050919050565b60006020820190508181036000830152614c9d81614c61565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d00602583613c3d565b9150614d0b82614ca4565b604082019050919050565b60006020820190508181036000830152614d2f81614cf3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d92602383613c3d565b9150614d9d82614d36565b604082019050919050565b60006020820190508181036000830152614dc181614d85565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614dfe601683613c3d565b9150614e0982614dc8565b602082019050919050565b60006020820190508181036000830152614e2d81614df1565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614eb6604983613c3d565b9150614ec182614e34565b606082019050919050565b60006020820190508181036000830152614ee581614ea9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614f48603583613c3d565b9150614f5382614eec565b604082019050919050565b60006020820190508181036000830152614f7781614f3b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614fb4601383613c3d565b9150614fbf82614f7e565b602082019050919050565b60006020820190508181036000830152614fe381614fa7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615046603683613c3d565b915061505182614fea565b604082019050919050565b6000602082019050818103600083015261507581615039565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006150d8602683613c3d565b91506150e38261507c565b604082019050919050565b60006020820190508181036000830152615107816150cb565b9050919050565b600081905092915050565b50565b600061512960008361510e565b915061513482615119565b600082019050919050565b600061514a8261511c565b9150819050919050565b60006060820190506151696000830186613ec9565b6151766020830185613ec9565b6151836040830184613ec9565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506151f881613d24565b92915050565b60006020828403121561521457615213613ced565b5b6000615222848285016151e9565b91505092915050565b6000819050919050565b600061525061524b6152468461522b565b613e4f565b613d50565b9050919050565b61526081615235565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61529b81613d12565b82525050565b60006152ad8383615292565b60208301905092915050565b6000602082019050919050565b60006152d182615266565b6152db8185615271565b93506152e683615282565b8060005b838110156153175781516152fe88826152a1565b9750615309836152b9565b9250506001810190506152ea565b5085935050505092915050565b600060a0820190506153396000830188613ec9565b6153466020830187615257565b818103604083015261535881866152c6565b90506153676060830185613f73565b6153746080830184613ec9565b9695505050505050565b600061538982613e7b565b9050919050565b6153998161537e565b82525050565b600060c0820190506153b46000830189613f73565b6153c16020830188613ec9565b6153ce6040830187615257565b6153db6060830186615257565b6153e86080830185615390565b6153f560a0830184613ec9565b979650505050505050565b60008151905061540f81613d5a565b92915050565b60008060006060848603121561542e5761542d613ced565b5b600061543c86828701615400565b935050602061544d86828701615400565b925050604061545e86828701615400565b915050925092509256fea2646970667358221220d421bda510b36d4b2f5b1477f105271b12870ea0c0a805409917b4cc415e12b364736f6c634300080c0033
Deployed Bytecode Sourcemap
16861:15501:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5794:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7149:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23062:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23499:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18180:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17312:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17272;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7361:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22419:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18283:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24160:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25224:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6296:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18034:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7940:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18238:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18073:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18732:62;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18675:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21326:82;;;;;;;;;;;;;:::i;:::-;;17562:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18114:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6579:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24381:417;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2624:103;;;;;;;;;;;;;:::i;:::-;;22125:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22701:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17130:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17448:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21113:113;;;;;;;;;;;;;:::i;:::-;;2196:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17037:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17633:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5976:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17413:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17238:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17597:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8242:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6745:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17901:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21655:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18952:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23945:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18528:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17738:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17379:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24806:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6960:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22933:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17861:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21487:98;;;;;;;;;;;;;:::i;:::-;;17489:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17675:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21234:84;;;;;;;;;;;;;:::i;:::-;;5794:100;5848:13;5881:5;5874:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5794:100;:::o;7149:169::-;7232:4;7249:39;7258:12;:10;:12::i;:::-;7272:7;7281:6;7249:8;:39::i;:::-;7306:4;7299:11;;7149:169;;;;:::o;23062:404::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23250:2:::1;23232:13;23216;23206:7;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23205:47;;23197:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;23295:7;23283:9;:19;;;;23331:13;23313:15;:31;;;;23373:13;23355:15;:31;;;;23442:15;;23424;;23412:9;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;23397:12;:60;;;;23062:404:::0;;;:::o;23499:412::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23688:2:::1;23670:13;23654;23644:7;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23643:47;;23635:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;23735:7;23722:10;:20;;;;23772:13;23753:16;:32;;;;23815:13;23796:16;:32;;;;23887:16;;23868;;23855:10;;:29;;;;:::i;:::-;:48;;;;:::i;:::-;23839:13;:64;;;;23499:412:::0;;;:::o;18180:51::-;;;:::o;6431:108::-;6492:7;6519:12;;6512:19;;6431:108;:::o;17312:33::-;;;;:::o;17272:::-;;;;:::o;7361:492::-;7501:4;7518:36;7528:6;7536:9;7547:6;7518:9;:36::i;:::-;7567:24;7594:11;:19;7606:6;7594:19;;;;;;;;;;;;;;;:33;7614:12;:10;:12::i;:::-;7594:33;;;;;;;;;;;;;;;;7567:60;;7666:6;7646:16;:26;;7638:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7753:57;7762:6;7770:12;:10;:12::i;:::-;7803:6;7784:16;:25;7753:8;:57::i;:::-;7841:4;7834:11;;;7361:492;;;;;:::o;22419:236::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22549:10:::1;:8;:10::i;:::-;22543:2;:16;;;;:::i;:::-;22534:4;22529:1;22513:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22512:26;;;;:::i;:::-;22511:49;;;;:::i;:::-;22501:6;:59;;22493:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;22640:6;22630;:17;;;;:::i;:::-;22612:15;:35;;;;22419:236:::0;:::o;18283:53::-;18329:6;18283:53;:::o;24160:213::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24255:13:::1;24247:21;;:4;:21;;;;24239:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;24341:24;24353:4;24359:5;24341:11;:24::i;:::-;24160:213:::0;;:::o;25224:229::-;25300:9;;;;;;;;;;;25286:23;;:10;:23;;;25278:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;25364:21;25354:6;:31;;25346:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;25419:9;;;;;;;;;;;:18;;:26;25438:6;25419:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25224:229;:::o;6296:93::-;6354:5;6379:2;6372:9;;6296:93;:::o;18034:32::-;;;;;;;;;;;;;:::o;7940:215::-;8028:4;8045:80;8054:12;:10;:12::i;:::-;8068:7;8114:10;8077:11;:25;8089:12;:10;:12::i;:::-;8077:25;;;;;;;;;;;;;;;:34;8103:7;8077:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8045:8;:80::i;:::-;8143:4;8136:11;;7940:215;;;;:::o;18238:38::-;;;:::o;18073:34::-;;;;;;;;;;;;;:::o;18732:62::-;;;;;;;;;;;;;;;;;;;;;;:::o;18675:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;21326:82::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21396:4:::1;21380:13;;:20;;;;;;;;;;;;;;;;;;21326:82::o:0;17562:28::-;;;;:::o;18114:31::-;;;;;;;;;;;;;:::o;6579:127::-;6653:7;6680:9;:18;6690:7;6680:18;;;;;;;;;;;;;;;;6673:25;;6579:127;;;:::o;24381:417::-;24566:9;;;;;;;;;;;24552:23;;:10;:23;;;24544:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24638:14;24625:10;;:27;;;;:::i;:::-;24612:10;:40;;;;24701:20;24682:16;;:39;;;;:::i;:::-;24663:16;:58;;;;24770:20;24751:16;;:39;;;;:::i;:::-;24732:16;:58;;;;24381:417;;;:::o;2624:103::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2689:30:::1;2716:1;2689:18;:30::i;:::-;2624:103::o:0;22125:249::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22252:10:::1;:8;:10::i;:::-;22246:2;:16;;;;:::i;:::-;22237:4;22232:1;22216:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22215:26;;;;:::i;:::-;22214:49;;;;:::i;:::-;22204:6;:59;;22196:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;22359:6;22349;:17;;;;:::i;:::-;22326:20;:40;;;;22125:249:::0;:::o;22701:148::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22837:4:::1;22796:30;:38;22827:6;22796:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;22701:148:::0;;:::o;17130:84::-;;;;;;;;;;;;;:::o;17448:34::-;;;;:::o;21113:113::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21185:4:::1;21168:14;;:21;;;;;;;;;;;;;;;;;;21214:4;21200:11;;:18;;;;;;;;;;;;;;;;;;21113:113::o:0;2196:87::-;2242:7;2269:6;;;;;;;;;;;2262:13;;2196:87;:::o;17037:86::-;;;;;;;;;;;;;:::o;17633:35::-;;;;:::o;5976:104::-;6032:13;6065:7;6058:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5976:104;:::o;17413:28::-;;;;:::o;17238:27::-;;;;:::o;17597:29::-;;;;:::o;8242:413::-;8335:4;8352:24;8379:11;:25;8391:12;:10;:12::i;:::-;8379:25;;;;;;;;;;;;;;;:34;8405:7;8379:34;;;;;;;;;;;;;;;;8352:61;;8452:15;8432:16;:35;;8424:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8545:67;8554:12;:10;:12::i;:::-;8568:7;8596:15;8577:16;:34;8545:8;:67::i;:::-;8643:4;8636:11;;;8242:413;;;;:::o;6745:175::-;6831:4;6848:42;6858:12;:10;:12::i;:::-;6872:9;6883:6;6848:9;:42::i;:::-;6908:4;6901:11;;6745:175;;;;:::o;17901:62::-;;;;:::o;21655:420::-;21760:4;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21825:6:::1;21820:1;21804:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21803:28;;;;:::i;:::-;21790:9;:41;;21782:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;21943:4;21938:1;21922:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21921:26;;;;:::i;:::-;21908:9;:39;;21900:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;22036:9;22015:18;:30;;;;22063:4;22056:11;;21655:420:::0;;;:::o;18952:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;23945:181::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24060:8:::1;24030:18;:27;24049:7;24030:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;24100:7;24084:34;;;24109:8;24084:34;;;;;;:::i;:::-;;;;;;;;23945:181:::0;;:::o;18528:39::-;;;;;;;;;;;;;:::o;17738:67::-;;;;:::o;17379:27::-;;;;:::o;24806:410::-;24990:9;;;;;;;;;;;24976:23;;:10;:23;;;24968:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;25060:14;25048:9;;:26;;;;:::i;:::-;25036:9;:38;;;;25121:20;25103:15;;:38;;;;:::i;:::-;25085:15;:56;;;;25188:20;25170:15;;:38;;;;:::i;:::-;25152:15;:56;;;;24806:410;;;:::o;6960:151::-;7049:7;7076:11;:18;7088:5;7076:18;;;;;;;;;;;;;;;:27;7095:7;7076:27;;;;;;;;;;;;;;;;7069:34;;6960:151;;;;:::o;22933:97::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23015:7:::1;23001:11;;:21;;;;;;;;;;;;;;;;;;22933:97:::0;:::o;17861:33::-;;;;:::o;21487:98::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21572:5:::1;21549:20;;:28;;;;;;;;;;;;;;;;;;21487:98::o:0;17489:34::-;;;;:::o;2810:201::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2919:1:::1;2899:22;;:8;:22;;;;2891:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2975:28;2994:8;2975:18;:28::i;:::-;2810:201:::0;:::o;17675:35::-;;;;:::o;21234:84::-;2404:12;:10;:12::i;:::-;2393:23;;:7;:5;:7::i;:::-;:23;;;2385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21305:5:::1;21289:13;;:21;;;;;;;;;;;;;;;;;;21234:84::o:0;1524:98::-;1577:7;1604:10;1597:17;;1524:98;:::o;10720:380::-;10873:1;10856:19;;:5;:19;;;;10848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10954:1;10935:21;;:7;:21;;;;10927:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11038:6;11008:11;:18;11020:5;11008:18;;;;;;;;;;;;;;;:27;11027:7;11008:27;;;;;;;;;;;;;;;:36;;;;11076:7;11060:32;;11069:5;11060:32;;;11085:6;11060:32;;;;;;:::i;:::-;;;;;;;;10720:380;;;:::o;25657:3895::-;25805:1;25789:18;;:4;:18;;;;25781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25882:1;25868:16;;:2;:16;;;;25860:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25951:1;25941:6;:11;25937:93;;;25969:28;25985:4;25991:2;25995:1;25969:15;:28::i;:::-;26012:7;;25937:93;26046:13;;;;;;;;;;;26042:1749;;;26088:7;:5;:7::i;:::-;26080:15;;:4;:15;;;;:32;;;;;26105:7;:5;:7::i;:::-;26099:13;;:2;:13;;;;26080:32;:52;;;;;26130:1;26116:16;;:2;:16;;;;26080:52;:73;;;;;18329:6;26136:17;;:2;:17;;;;26080:73;:86;;;;;26158:8;;;;;;;;;;;26157:9;26080:86;26076:1704;;;26193:14;;;;;;;;;;;26188:149;;26240:18;:24;26259:4;26240:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;26268:18;:22;26287:2;26268:22;;;;;;;;;;;;;;;;;;;;;;;;;26240:50;26232:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;26188:149;26493:20;;;;;;;;;;;26489:425;;;26548:7;:5;:7::i;:::-;26542:13;;:2;:13;;;;:47;;;;;26573:15;26559:30;;:2;:30;;;;26542:47;:79;;;;;26607:13;26593:28;;:2;:28;;;;26542:79;26538:357;;;26700:12;26658:28;:39;26687:9;26658:39;;;;;;;;;;;;;;;;:54;26650:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26859:12;26817:28;:39;26846:9;26817:39;;;;;;;;;;;;;;;:54;;;;26538:357;26489:425;26966:25;:31;26992:4;26966:31;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;;27002:30;:34;27033:2;27002:34;;;;;;;;;;;;;;;;;;;;;;;;;27001:35;26966:70;26962:803;;;27079:20;;27069:6;:30;;27061:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;27214:15;;27197:13;27207:2;27197:9;:13::i;:::-;27188:6;:22;;;;:::i;:::-;:41;;27180:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26962:803;;;27351:25;:29;27377:2;27351:29;;;;;;;;;;;;;;;;;;;;;;;;;:91;;;;;27406:30;:36;27437:4;27406:36;;;;;;;;;;;;;;;;;;;;;;;;;27405:37;27351:91;27325:440;;;27503:20;;27493:6;:30;;27485:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;27325:440;;;27613:30;:34;27644:2;27613:34;;;;;;;;;;;;;;;;;;;;;;;;;27608:157;;27706:15;;27689:13;27699:2;27689:9;:13::i;:::-;27680:6;:22;;;;:::i;:::-;:41;;27672:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27608:157;27325:440;26962:803;26076:1704;26042:1749;27803:12;27846:18;;27818:24;27836:4;27818:9;:24::i;:::-;:46;;27803:61;;27895:7;:35;;;;;27919:11;;;;;;;;;;;27895:35;:61;;;;;27948:8;;;;;;;;;;;27947:9;27895:61;:110;;;;;27974:25;:31;28000:4;27974:31;;;;;;;;;;;;;;;;;;;;;;;;;27973:32;27895:110;:152;;;;;28023:18;:24;28042:4;28023:24;;;;;;;;;;;;;;;;;;;;;;;;;28022:25;27895:152;:192;;;;;28065:18;:22;28084:2;28065:22;;;;;;;;;;;;;;;;;;;;;;;;;28064:23;27895:192;27877:324;;;28125:4;28114:8;;:15;;;;;;;;;;;;;;;;;;28146:10;:8;:10::i;:::-;28184:5;28173:8;;:16;;;;;;;;;;;;;;;;;;27877:324;28213:12;28229:8;;;;;;;;;;;28228:9;28213:24;;28339:18;:24;28358:4;28339:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;28367:18;:22;28386:2;28367:22;;;;;;;;;;;;;;;;;;;;;;;;;28339:50;28335:98;;;28416:5;28406:15;;28335:98;28445:12;28550:7;28546:953;;;28602:25;:29;28628:2;28602:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28651:1;28635:13;;:17;28602:50;28598:752;;;28705:3;28689:13;;28680:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;28673:35;;28771:13;;28757:10;;28750:4;:17;;;;:::i;:::-;28749:35;;;;:::i;:::-;28733:12;;:51;;;;;;;:::i;:::-;;;;;;;;28853:13;;28833:16;;28826:4;:23;;;;:::i;:::-;28825:41;;;;:::i;:::-;28803:18;;:63;;;;;;;:::i;:::-;;;;;;;;28935:13;;28915:16;;28908:4;:23;;;;:::i;:::-;28907:41;;;;:::i;:::-;28885:18;;:63;;;;;;;:::i;:::-;;;;;;;;28598:752;;;29010:25;:31;29036:4;29010:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29060:1;29045:12;;:16;29010:51;29006:344;;;29113:3;29098:12;;29089:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;29082:34;;29160:12;;29147:9;;29140:4;:16;;;;:::i;:::-;29139:33;;;;:::i;:::-;29123:12;;:49;;;;;;;:::i;:::-;;;;;;;;29240:12;;29221:15;;29214:4;:22;;;;:::i;:::-;29213:39;;;;:::i;:::-;29191:18;;:61;;;;;;;:::i;:::-;;;;;;;;29320:12;;29301:15;;29294:4;:22;;;;:::i;:::-;29293:39;;;;:::i;:::-;29271:18;;:61;;;;;;;:::i;:::-;;;;;;;;29006:344;28598:752;29377:1;29370:4;:8;29366:91;;;29399:42;29415:4;29429;29436;29399:15;:42::i;:::-;29366:91;29483:4;29473:14;;;;;:::i;:::-;;;28546:953;29511:33;29527:4;29533:2;29537:6;29511:15;:33::i;:::-;25770:3782;;;25657:3895;;;;:::o;25461:171::-;25561:5;25527:25;:31;25553:4;25527:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25618:5;25584:40;;25612:4;25584:40;;;;;;;;;;;;25461:171;;:::o;3094:191::-;3168:16;3187:6;;;;;;;;;;;3168:25;;3213:8;3204:6;;:17;;;;;;;;;;;;;;;;;;3268:8;3237:40;;3258:8;3237:40;;;;;;;;;;;;3157:128;3094:191;:::o;8726:733::-;8884:1;8866:20;;:6;:20;;;;8858:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8968:1;8947:23;;:9;:23;;;;8939:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9023:47;9044:6;9052:9;9063:6;9023:20;:47::i;:::-;9083:21;9107:9;:17;9117:6;9107:17;;;;;;;;;;;;;;;;9083:41;;9160:6;9143:13;:23;;9135:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9281:6;9265:13;:22;9245:9;:17;9255:6;9245:17;;;;;;;;;;;;;;;:42;;;;9333:6;9309:9;:20;9319:9;9309:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9374:9;9357:35;;9366:6;9357:35;;;9385:6;9357:35;;;;;;:::i;:::-;;;;;;;;9405:46;9425:6;9433:9;9444:6;9405:19;:46::i;:::-;8847:612;8726:733;;;:::o;30731:1628::-;30770:23;30796:24;30814:4;30796:9;:24::i;:::-;30770:50;;30831:25;30895:18;;30874;;30859:12;;:33;;;;:::i;:::-;:54;;;;:::i;:::-;30831:82;;30924:12;30972:1;30953:15;:20;:46;;;;30998:1;30977:17;:22;30953:46;30949:85;;;31016:7;;;;;30949:85;31089:2;31068:18;;:23;;;;:::i;:::-;31050:15;:41;31046:115;;;31147:2;31126:18;;:23;;;;:::i;:::-;31108:41;;31046:115;31222:23;31309:1;31289:17;31267:18;;31249:15;:36;;;;:::i;:::-;31248:58;;;;:::i;:::-;:62;;;;:::i;:::-;31222:88;;31321:26;31368:15;31350;:33;;;;:::i;:::-;31321:62;;31396:25;31424:21;31396:49;;31458:36;31475:18;31458:16;:36::i;:::-;31507:18;31552:17;31528:21;:41;;;;:::i;:::-;31507:62;;31582:17;31630;31615:12;;31602:10;:25;;;;:::i;:::-;:45;;;;:::i;:::-;31582:65;;31658:23;31718:17;31697:18;;31684:10;:31;;;;:::i;:::-;:51;;;;:::i;:::-;31658:77;;31746:23;31797:15;31785:9;31772:10;:22;;;;:::i;:::-;:40;;;;:::i;:::-;31746:66;;31846:1;31825:18;:22;;;;31879:1;31858:18;:22;;;;31906:1;31891:12;:16;;;;31942:9;;;;;;;;;;;31934:23;;31965:9;31934:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31920:59;;;;;32012:15;;;;;;;;;;;32004:29;;32041:15;32004:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31990:71;;;;;32096:1;32078:15;:19;:42;;;;;32119:1;32101:15;:19;32078:42;32074:278;;;32137:46;32150:15;32167;32137:12;:46::i;:::-;32203:137;32236:18;32273:15;32307:18;;32203:137;;;;;;;;:::i;:::-;;;;;;;;32074:278;30759:1600;;;;;;;;;;30731:1628;:::o;11202:125::-;;;;:::o;11428:124::-;;;;:::o;29589:589::-;29715:21;29753:1;29739:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29715:40;;29784:4;29766;29771:1;29766:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29810:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29800:4;29805:1;29800:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29845:62;29862:4;29877:15;29895:11;29845:8;:62::i;:::-;29946:15;:66;;;30027:11;30053:1;30097:4;30124;30144:15;29946:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29644:534;29589:589;:::o;30208:515::-;30356:62;30373:4;30388:15;30406:11;30356:8;:62::i;:::-;30461:15;:31;;;30500:9;30533:4;30553:11;30579:1;30622;30665:9;;;;;;;;;;;30689:15;30461:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30208:515;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:619::-;3571:6;3579;3587;3636:2;3624:9;3615:7;3611:23;3607:32;3604:119;;;3642:79;;:::i;:::-;3604:119;3762:1;3787:53;3832:7;3823:6;3812:9;3808:22;3787:53;:::i;:::-;3777:63;;3733:117;3889:2;3915:53;3960:7;3951:6;3940:9;3936:22;3915:53;:::i;:::-;3905:63;;3860:118;4017:2;4043:53;4088:7;4079:6;4068:9;4064:22;4043:53;:::i;:::-;4033:63;;3988:118;3494:619;;;;;:::o;4119:60::-;4147:3;4168:5;4161:12;;4119:60;;;:::o;4185:142::-;4235:9;4268:53;4286:34;4295:24;4313:5;4295:24;:::i;:::-;4286:34;:::i;:::-;4268:53;:::i;:::-;4255:66;;4185:142;;;:::o;4333:126::-;4383:9;4416:37;4447:5;4416:37;:::i;:::-;4403:50;;4333:126;;;:::o;4465:153::-;4542:9;4575:37;4606:5;4575:37;:::i;:::-;4562:50;;4465:153;;;:::o;4624:185::-;4738:64;4796:5;4738:64;:::i;:::-;4733:3;4726:77;4624:185;;:::o;4815:276::-;4935:4;4973:2;4962:9;4958:18;4950:26;;4986:98;5081:1;5070:9;5066:17;5057:6;4986:98;:::i;:::-;4815:276;;;;:::o;5097:118::-;5184:24;5202:5;5184:24;:::i;:::-;5179:3;5172:37;5097:118;;:::o;5221:222::-;5314:4;5352:2;5341:9;5337:18;5329:26;;5365:71;5433:1;5422:9;5418:17;5409:6;5365:71;:::i;:::-;5221:222;;;;:::o;5449:619::-;5526:6;5534;5542;5591:2;5579:9;5570:7;5566:23;5562:32;5559:119;;;5597:79;;:::i;:::-;5559:119;5717:1;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5688:117;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5972:2;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5943:118;5449:619;;;;;:::o;6074:329::-;6133:6;6182:2;6170:9;6161:7;6157:23;6153:32;6150:119;;;6188:79;;:::i;:::-;6150:119;6308:1;6333:53;6378:7;6369:6;6358:9;6354:22;6333:53;:::i;:::-;6323:63;;6279:117;6074:329;;;;:::o;6409:118::-;6496:24;6514:5;6496:24;:::i;:::-;6491:3;6484:37;6409:118;;:::o;6533:222::-;6626:4;6664:2;6653:9;6649:18;6641:26;;6677:71;6745:1;6734:9;6730:17;6721:6;6677:71;:::i;:::-;6533:222;;;;:::o;6761:116::-;6831:21;6846:5;6831:21;:::i;:::-;6824:5;6821:32;6811:60;;6867:1;6864;6857:12;6811:60;6761:116;:::o;6883:133::-;6926:5;6964:6;6951:20;6942:29;;6980:30;7004:5;6980:30;:::i;:::-;6883:133;;;;:::o;7022:468::-;7087:6;7095;7144:2;7132:9;7123:7;7119:23;7115:32;7112:119;;;7150:79;;:::i;:::-;7112:119;7270:1;7295:53;7340:7;7331:6;7320:9;7316:22;7295:53;:::i;:::-;7285:63;;7241:117;7397:2;7423:50;7465:7;7456:6;7445:9;7441:22;7423:50;:::i;:::-;7413:60;;7368:115;7022:468;;;;;:::o;7496:86::-;7531:7;7571:4;7564:5;7560:16;7549:27;;7496:86;;;:::o;7588:112::-;7671:22;7687:5;7671:22;:::i;:::-;7666:3;7659:35;7588:112;;:::o;7706:214::-;7795:4;7833:2;7822:9;7818:18;7810:26;;7846:67;7910:1;7899:9;7895:17;7886:6;7846:67;:::i;:::-;7706:214;;;;:::o;7926:329::-;7985:6;8034:2;8022:9;8013:7;8009:23;8005:32;8002:119;;;8040:79;;:::i;:::-;8002:119;8160:1;8185:53;8230:7;8221:6;8210:9;8206:22;8185:53;:::i;:::-;8175:63;;8131:117;7926:329;;;;:::o;8261:104::-;8306:7;8335:24;8353:5;8335:24;:::i;:::-;8324:35;;8261:104;;;:::o;8371:142::-;8474:32;8500:5;8474:32;:::i;:::-;8469:3;8462:45;8371:142;;:::o;8519:254::-;8628:4;8666:2;8655:9;8651:18;8643:26;;8679:87;8763:1;8752:9;8748:17;8739:6;8679:87;:::i;:::-;8519:254;;;;:::o;8779:474::-;8847:6;8855;8904:2;8892:9;8883:7;8879:23;8875:32;8872:119;;;8910:79;;:::i;:::-;8872:119;9030:1;9055:53;9100:7;9091:6;9080:9;9076:22;9055:53;:::i;:::-;9045:63;;9001:117;9157:2;9183:53;9228:7;9219:6;9208:9;9204:22;9183:53;:::i;:::-;9173:63;;9128:118;8779:474;;;;;:::o;9259:323::-;9315:6;9364:2;9352:9;9343:7;9339:23;9335:32;9332:119;;;9370:79;;:::i;:::-;9332:119;9490:1;9515:50;9557:7;9548:6;9537:9;9533:22;9515:50;:::i;:::-;9505:60;;9461:114;9259:323;;;;:::o;9588:180::-;9636:77;9633:1;9626:88;9733:4;9730:1;9723:15;9757:4;9754:1;9747:15;9774:320;9818:6;9855:1;9849:4;9845:12;9835:22;;9902:1;9896:4;9892:12;9923:18;9913:81;;9979:4;9971:6;9967:17;9957:27;;9913:81;10041:2;10033:6;10030:14;10010:18;10007:38;10004:84;;;10060:18;;:::i;:::-;10004:84;9825:269;9774:320;;;:::o;10100:182::-;10240:34;10236:1;10228:6;10224:14;10217:58;10100:182;:::o;10288:366::-;10430:3;10451:67;10515:2;10510:3;10451:67;:::i;:::-;10444:74;;10527:93;10616:3;10527:93;:::i;:::-;10645:2;10640:3;10636:12;10629:19;;10288:366;;;:::o;10660:419::-;10826:4;10864:2;10853:9;10849:18;10841:26;;10913:9;10907:4;10903:20;10899:1;10888:9;10884:17;10877:47;10941:131;11067:4;10941:131;:::i;:::-;10933:139;;10660:419;;;:::o;11085:180::-;11133:77;11130:1;11123:88;11230:4;11227:1;11220:15;11254:4;11251:1;11244:15;11271:305;11311:3;11330:20;11348:1;11330:20;:::i;:::-;11325:25;;11364:20;11382:1;11364:20;:::i;:::-;11359:25;;11518:1;11450:66;11446:74;11443:1;11440:81;11437:107;;;11524:18;;:::i;:::-;11437:107;11568:1;11565;11561:9;11554:16;;11271:305;;;;:::o;11582:171::-;11722:23;11718:1;11710:6;11706:14;11699:47;11582:171;:::o;11759:366::-;11901:3;11922:67;11986:2;11981:3;11922:67;:::i;:::-;11915:74;;11998:93;12087:3;11998:93;:::i;:::-;12116:2;12111:3;12107:12;12100:19;;11759:366;;;:::o;12131:419::-;12297:4;12335:2;12324:9;12320:18;12312:26;;12384:9;12378:4;12374:20;12370:1;12359:9;12355:17;12348:47;12412:131;12538:4;12412:131;:::i;:::-;12404:139;;12131:419;;;:::o;12556:172::-;12696:24;12692:1;12684:6;12680:14;12673:48;12556:172;:::o;12734:366::-;12876:3;12897:67;12961:2;12956:3;12897:67;:::i;:::-;12890:74;;12973:93;13062:3;12973:93;:::i;:::-;13091:2;13086:3;13082:12;13075:19;;12734:366;;;:::o;13106:419::-;13272:4;13310:2;13299:9;13295:18;13287:26;;13359:9;13353:4;13349:20;13345:1;13334:9;13330:17;13323:47;13387:131;13513:4;13387:131;:::i;:::-;13379:139;;13106:419;;;:::o;13531:227::-;13671:34;13667:1;13659:6;13655:14;13648:58;13740:10;13735:2;13727:6;13723:15;13716:35;13531:227;:::o;13764:366::-;13906:3;13927:67;13991:2;13986:3;13927:67;:::i;:::-;13920:74;;14003:93;14092:3;14003:93;:::i;:::-;14121:2;14116:3;14112:12;14105:19;;13764:366;;;:::o;14136:419::-;14302:4;14340:2;14329:9;14325:18;14317:26;;14389:9;14383:4;14379:20;14375:1;14364:9;14360:17;14353:47;14417:131;14543:4;14417:131;:::i;:::-;14409:139;;14136:419;;;:::o;14561:102::-;14603:8;14650:5;14647:1;14643:13;14622:34;;14561:102;;;:::o;14669:848::-;14730:5;14737:4;14761:6;14752:15;;14785:5;14776:14;;14799:712;14820:1;14810:8;14807:15;14799:712;;;14915:4;14910:3;14906:14;14900:4;14897:24;14894:50;;;14924:18;;:::i;:::-;14894:50;14974:1;14964:8;14960:16;14957:451;;;15389:4;15382:5;15378:16;15369:25;;14957:451;15439:4;15433;15429:15;15421:23;;15469:32;15492:8;15469:32;:::i;:::-;15457:44;;14799:712;;;14669:848;;;;;;;:::o;15523:1073::-;15577:5;15768:8;15758:40;;15789:1;15780:10;;15791:5;;15758:40;15817:4;15807:36;;15834:1;15825:10;;15836:5;;15807:36;15903:4;15951:1;15946:27;;;;15987:1;15982:191;;;;15896:277;;15946:27;15964:1;15955:10;;15966:5;;;15982:191;16027:3;16017:8;16014:17;16011:43;;;16034:18;;:::i;:::-;16011:43;16083:8;16080:1;16076:16;16067:25;;16118:3;16111:5;16108:14;16105:40;;;16125:18;;:::i;:::-;16105:40;16158:5;;;15896:277;;16282:2;16272:8;16269:16;16263:3;16257:4;16254:13;16250:36;16232:2;16222:8;16219:16;16214:2;16208:4;16205:12;16201:35;16185:111;16182:246;;;16338:8;16332:4;16328:19;16319:28;;16373:3;16366:5;16363:14;16360:40;;;16380:18;;:::i;:::-;16360:40;16413:5;;16182:246;16453:42;16491:3;16481:8;16475:4;16472:1;16453:42;:::i;:::-;16438:57;;;;16527:4;16522:3;16518:14;16511:5;16508:25;16505:51;;;16536:18;;:::i;:::-;16505:51;16585:4;16578:5;16574:16;16565:25;;15523:1073;;;;;;:::o;16602:281::-;16660:5;16684:23;16702:4;16684:23;:::i;:::-;16676:31;;16728:25;16744:8;16728:25;:::i;:::-;16716:37;;16772:104;16809:66;16799:8;16793:4;16772:104;:::i;:::-;16763:113;;16602:281;;;;:::o;16889:348::-;16929:7;16952:20;16970:1;16952:20;:::i;:::-;16947:25;;16986:20;17004:1;16986:20;:::i;:::-;16981:25;;17174:1;17106:66;17102:74;17099:1;17096:81;17091:1;17084:9;17077:17;17073:105;17070:131;;;17181:18;;:::i;:::-;17070:131;17229:1;17226;17222:9;17211:20;;16889:348;;;;:::o;17243:180::-;17291:77;17288:1;17281:88;17388:4;17385:1;17378:15;17412:4;17409:1;17402:15;17429:185;17469:1;17486:20;17504:1;17486:20;:::i;:::-;17481:25;;17520:20;17538:1;17520:20;:::i;:::-;17515:25;;17559:1;17549:35;;17564:18;;:::i;:::-;17549:35;17606:1;17603;17599:9;17594:14;;17429:185;;;;:::o;17620:223::-;17760:34;17756:1;17748:6;17744:14;17737:58;17829:6;17824:2;17816:6;17812:15;17805:31;17620:223;:::o;17849:366::-;17991:3;18012:67;18076:2;18071:3;18012:67;:::i;:::-;18005:74;;18088:93;18177:3;18088:93;:::i;:::-;18206:2;18201:3;18197:12;18190:19;;17849:366;;;:::o;18221:419::-;18387:4;18425:2;18414:9;18410:18;18402:26;;18474:9;18468:4;18464:20;18460:1;18449:9;18445:17;18438:47;18502:131;18628:4;18502:131;:::i;:::-;18494:139;;18221:419;;;:::o;18646:244::-;18786:34;18782:1;18774:6;18770:14;18763:58;18855:27;18850:2;18842:6;18838:15;18831:52;18646:244;:::o;18896:366::-;19038:3;19059:67;19123:2;19118:3;19059:67;:::i;:::-;19052:74;;19135:93;19224:3;19135:93;:::i;:::-;19253:2;19248:3;19244:12;19237:19;;18896:366;;;:::o;19268:419::-;19434:4;19472:2;19461:9;19457:18;19449:26;;19521:9;19515:4;19511:20;19507:1;19496:9;19492:17;19485:47;19549:131;19675:4;19549:131;:::i;:::-;19541:139;;19268:419;;;:::o;19693:171::-;19833:23;19829:1;19821:6;19817:14;19810:47;19693:171;:::o;19870:366::-;20012:3;20033:67;20097:2;20092:3;20033:67;:::i;:::-;20026:74;;20109:93;20198:3;20109:93;:::i;:::-;20227:2;20222:3;20218:12;20211:19;;19870:366;;;:::o;20242:419::-;20408:4;20446:2;20435:9;20431:18;20423:26;;20495:9;20489:4;20485:20;20481:1;20470:9;20466:17;20459:47;20523:131;20649:4;20523:131;:::i;:::-;20515:139;;20242:419;;;:::o;20667:168::-;20807:20;20803:1;20795:6;20791:14;20784:44;20667:168;:::o;20841:366::-;20983:3;21004:67;21068:2;21063:3;21004:67;:::i;:::-;20997:74;;21080:93;21169:3;21080:93;:::i;:::-;21198:2;21193:3;21189:12;21182:19;;20841:366;;;:::o;21213:419::-;21379:4;21417:2;21406:9;21402:18;21394:26;;21466:9;21460:4;21456:20;21452:1;21441:9;21437:17;21430:47;21494:131;21620:4;21494:131;:::i;:::-;21486:139;;21213:419;;;:::o;21638:171::-;21778:23;21774:1;21766:6;21762:14;21755:47;21638:171;:::o;21815:366::-;21957:3;21978:67;22042:2;22037:3;21978:67;:::i;:::-;21971:74;;22054:93;22143:3;22054:93;:::i;:::-;22172:2;22167:3;22163:12;22156:19;;21815:366;;;:::o;22187:419::-;22353:4;22391:2;22380:9;22376:18;22368:26;;22440:9;22434:4;22430:20;22426:1;22415:9;22411:17;22404:47;22468:131;22594:4;22468:131;:::i;:::-;22460:139;;22187:419;;;:::o;22612:191::-;22652:4;22672:20;22690:1;22672:20;:::i;:::-;22667:25;;22706:20;22724:1;22706:20;:::i;:::-;22701:25;;22745:1;22742;22739:8;22736:34;;;22750:18;;:::i;:::-;22736:34;22795:1;22792;22788:9;22780:17;;22612:191;;;;:::o;22809:234::-;22949:34;22945:1;22937:6;22933:14;22926:58;23018:17;23013:2;23005:6;23001:15;22994:42;22809:234;:::o;23049:366::-;23191:3;23212:67;23276:2;23271:3;23212:67;:::i;:::-;23205:74;;23288:93;23377:3;23288:93;:::i;:::-;23406:2;23401:3;23397:12;23390:19;;23049:366;;;:::o;23421:419::-;23587:4;23625:2;23614:9;23610:18;23602:26;;23674:9;23668:4;23664:20;23660:1;23649:9;23645:17;23638:47;23702:131;23828:4;23702:131;:::i;:::-;23694:139;;23421:419;;;:::o;23846:224::-;23986:34;23982:1;23974:6;23970:14;23963:58;24055:7;24050:2;24042:6;24038:15;24031:32;23846:224;:::o;24076:366::-;24218:3;24239:67;24303:2;24298:3;24239:67;:::i;:::-;24232:74;;24315:93;24404:3;24315:93;:::i;:::-;24433:2;24428:3;24424:12;24417:19;;24076:366;;;:::o;24448:419::-;24614:4;24652:2;24641:9;24637:18;24629:26;;24701:9;24695:4;24691:20;24687:1;24676:9;24672:17;24665:47;24729:131;24855:4;24729:131;:::i;:::-;24721:139;;24448:419;;;:::o;24873:240::-;25013:34;25009:1;25001:6;24997:14;24990:58;25082:23;25077:2;25069:6;25065:15;25058:48;24873:240;:::o;25119:366::-;25261:3;25282:67;25346:2;25341:3;25282:67;:::i;:::-;25275:74;;25358:93;25447:3;25358:93;:::i;:::-;25476:2;25471:3;25467:12;25460:19;;25119:366;;;:::o;25491:419::-;25657:4;25695:2;25684:9;25680:18;25672:26;;25744:9;25738:4;25734:20;25730:1;25719:9;25715:17;25708:47;25772:131;25898:4;25772:131;:::i;:::-;25764:139;;25491:419;;;:::o;25916:239::-;26056:34;26052:1;26044:6;26040:14;26033:58;26125:22;26120:2;26112:6;26108:15;26101:47;25916:239;:::o;26161:366::-;26303:3;26324:67;26388:2;26383:3;26324:67;:::i;:::-;26317:74;;26400:93;26489:3;26400:93;:::i;:::-;26518:2;26513:3;26509:12;26502:19;;26161:366;;;:::o;26533:419::-;26699:4;26737:2;26726:9;26722:18;26714:26;;26786:9;26780:4;26776:20;26772:1;26761:9;26757:17;26750:47;26814:131;26940:4;26814:131;:::i;:::-;26806:139;;26533:419;;;:::o;26958:225::-;27098:34;27094:1;27086:6;27082:14;27075:58;27167:8;27162:2;27154:6;27150:15;27143:33;26958:225;:::o;27189:366::-;27331:3;27352:67;27416:2;27411:3;27352:67;:::i;:::-;27345:74;;27428:93;27517:3;27428:93;:::i;:::-;27546:2;27541:3;27537:12;27530:19;;27189:366;;;:::o;27561:419::-;27727:4;27765:2;27754:9;27750:18;27742:26;;27814:9;27808:4;27804:20;27800:1;27789:9;27785:17;27778:47;27842:131;27968:4;27842:131;:::i;:::-;27834:139;;27561:419;;;:::o;27986:223::-;28126:34;28122:1;28114:6;28110:14;28103:58;28195:6;28190:2;28182:6;28178:15;28171:31;27986:223;:::o;28215:366::-;28357:3;28378:67;28442:2;28437:3;28378:67;:::i;:::-;28371:74;;28454:93;28543:3;28454:93;:::i;:::-;28572:2;28567:3;28563:12;28556:19;;28215:366;;;:::o;28587:419::-;28753:4;28791:2;28780:9;28776:18;28768:26;;28840:9;28834:4;28830:20;28826:1;28815:9;28811:17;28804:47;28868:131;28994:4;28868:131;:::i;:::-;28860:139;;28587:419;;;:::o;29012:221::-;29152:34;29148:1;29140:6;29136:14;29129:58;29221:4;29216:2;29208:6;29204:15;29197:29;29012:221;:::o;29239:366::-;29381:3;29402:67;29466:2;29461:3;29402:67;:::i;:::-;29395:74;;29478:93;29567:3;29478:93;:::i;:::-;29596:2;29591:3;29587:12;29580:19;;29239:366;;;:::o;29611:419::-;29777:4;29815:2;29804:9;29800:18;29792:26;;29864:9;29858:4;29854:20;29850:1;29839:9;29835:17;29828:47;29892:131;30018:4;29892:131;:::i;:::-;29884:139;;29611:419;;;:::o;30036:224::-;30176:34;30172:1;30164:6;30160:14;30153:58;30245:7;30240:2;30232:6;30228:15;30221:32;30036:224;:::o;30266:366::-;30408:3;30429:67;30493:2;30488:3;30429:67;:::i;:::-;30422:74;;30505:93;30594:3;30505:93;:::i;:::-;30623:2;30618:3;30614:12;30607:19;;30266:366;;;:::o;30638:419::-;30804:4;30842:2;30831:9;30827:18;30819:26;;30891:9;30885:4;30881:20;30877:1;30866:9;30862:17;30855:47;30919:131;31045:4;30919:131;:::i;:::-;30911:139;;30638:419;;;:::o;31063:222::-;31203:34;31199:1;31191:6;31187:14;31180:58;31272:5;31267:2;31259:6;31255:15;31248:30;31063:222;:::o;31291:366::-;31433:3;31454:67;31518:2;31513:3;31454:67;:::i;:::-;31447:74;;31530:93;31619:3;31530:93;:::i;:::-;31648:2;31643:3;31639:12;31632:19;;31291:366;;;:::o;31663:419::-;31829:4;31867:2;31856:9;31852:18;31844:26;;31916:9;31910:4;31906:20;31902:1;31891:9;31887:17;31880:47;31944:131;32070:4;31944:131;:::i;:::-;31936:139;;31663:419;;;:::o;32088:172::-;32228:24;32224:1;32216:6;32212:14;32205:48;32088:172;:::o;32266:366::-;32408:3;32429:67;32493:2;32488:3;32429:67;:::i;:::-;32422:74;;32505:93;32594:3;32505:93;:::i;:::-;32623:2;32618:3;32614:12;32607:19;;32266:366;;;:::o;32638:419::-;32804:4;32842:2;32831:9;32827:18;32819:26;;32891:9;32885:4;32881:20;32877:1;32866:9;32862:17;32855:47;32919:131;33045:4;32919:131;:::i;:::-;32911:139;;32638:419;;;:::o;33063:297::-;33203:34;33199:1;33191:6;33187:14;33180:58;33272:34;33267:2;33259:6;33255:15;33248:59;33341:11;33336:2;33328:6;33324:15;33317:36;33063:297;:::o;33366:366::-;33508:3;33529:67;33593:2;33588:3;33529:67;:::i;:::-;33522:74;;33605:93;33694:3;33605:93;:::i;:::-;33723:2;33718:3;33714:12;33707:19;;33366:366;;;:::o;33738:419::-;33904:4;33942:2;33931:9;33927:18;33919:26;;33991:9;33985:4;33981:20;33977:1;33966:9;33962:17;33955:47;34019:131;34145:4;34019:131;:::i;:::-;34011:139;;33738:419;;;:::o;34163:240::-;34303:34;34299:1;34291:6;34287:14;34280:58;34372:23;34367:2;34359:6;34355:15;34348:48;34163:240;:::o;34409:366::-;34551:3;34572:67;34636:2;34631:3;34572:67;:::i;:::-;34565:74;;34648:93;34737:3;34648:93;:::i;:::-;34766:2;34761:3;34757:12;34750:19;;34409:366;;;:::o;34781:419::-;34947:4;34985:2;34974:9;34970:18;34962:26;;35034:9;35028:4;35024:20;35020:1;35009:9;35005:17;34998:47;35062:131;35188:4;35062:131;:::i;:::-;35054:139;;34781:419;;;:::o;35206:169::-;35346:21;35342:1;35334:6;35330:14;35323:45;35206:169;:::o;35381:366::-;35523:3;35544:67;35608:2;35603:3;35544:67;:::i;:::-;35537:74;;35620:93;35709:3;35620:93;:::i;:::-;35738:2;35733:3;35729:12;35722:19;;35381:366;;;:::o;35753:419::-;35919:4;35957:2;35946:9;35942:18;35934:26;;36006:9;36000:4;35996:20;35992:1;35981:9;35977:17;35970:47;36034:131;36160:4;36034:131;:::i;:::-;36026:139;;35753:419;;;:::o;36178:241::-;36318:34;36314:1;36306:6;36302:14;36295:58;36387:24;36382:2;36374:6;36370:15;36363:49;36178:241;:::o;36425:366::-;36567:3;36588:67;36652:2;36647:3;36588:67;:::i;:::-;36581:74;;36664:93;36753:3;36664:93;:::i;:::-;36782:2;36777:3;36773:12;36766:19;;36425:366;;;:::o;36797:419::-;36963:4;37001:2;36990:9;36986:18;36978:26;;37050:9;37044:4;37040:20;37036:1;37025:9;37021:17;37014:47;37078:131;37204:4;37078:131;:::i;:::-;37070:139;;36797:419;;;:::o;37222:225::-;37362:34;37358:1;37350:6;37346:14;37339:58;37431:8;37426:2;37418:6;37414:15;37407:33;37222:225;:::o;37453:366::-;37595:3;37616:67;37680:2;37675:3;37616:67;:::i;:::-;37609:74;;37692:93;37781:3;37692:93;:::i;:::-;37810:2;37805:3;37801:12;37794:19;;37453:366;;;:::o;37825:419::-;37991:4;38029:2;38018:9;38014:18;38006:26;;38078:9;38072:4;38068:20;38064:1;38053:9;38049:17;38042:47;38106:131;38232:4;38106:131;:::i;:::-;38098:139;;37825:419;;;:::o;38250:147::-;38351:11;38388:3;38373:18;;38250:147;;;;:::o;38403:114::-;;:::o;38523:398::-;38682:3;38703:83;38784:1;38779:3;38703:83;:::i;:::-;38696:90;;38795:93;38884:3;38795:93;:::i;:::-;38913:1;38908:3;38904:11;38897:18;;38523:398;;;:::o;38927:379::-;39111:3;39133:147;39276:3;39133:147;:::i;:::-;39126:154;;39297:3;39290:10;;38927:379;;;:::o;39312:442::-;39461:4;39499:2;39488:9;39484:18;39476:26;;39512:71;39580:1;39569:9;39565:17;39556:6;39512:71;:::i;:::-;39593:72;39661:2;39650:9;39646:18;39637:6;39593:72;:::i;:::-;39675;39743:2;39732:9;39728:18;39719:6;39675:72;:::i;:::-;39312:442;;;;;;:::o;39760:180::-;39808:77;39805:1;39798:88;39905:4;39902:1;39895:15;39929:4;39926:1;39919:15;39946:180;39994:77;39991:1;39984:88;40091:4;40088:1;40081:15;40115:4;40112:1;40105:15;40132:143;40189:5;40220:6;40214:13;40205:22;;40236:33;40263:5;40236:33;:::i;:::-;40132:143;;;;:::o;40281:351::-;40351:6;40400:2;40388:9;40379:7;40375:23;40371:32;40368:119;;;40406:79;;:::i;:::-;40368:119;40526:1;40551:64;40607:7;40598:6;40587:9;40583:22;40551:64;:::i;:::-;40541:74;;40497:128;40281:351;;;;:::o;40638:85::-;40683:7;40712:5;40701:16;;40638:85;;;:::o;40729:158::-;40787:9;40820:61;40838:42;40847:32;40873:5;40847:32;:::i;:::-;40838:42;:::i;:::-;40820:61;:::i;:::-;40807:74;;40729:158;;;:::o;40893:147::-;40988:45;41027:5;40988:45;:::i;:::-;40983:3;40976:58;40893:147;;:::o;41046:114::-;41113:6;41147:5;41141:12;41131:22;;41046:114;;;:::o;41166:184::-;41265:11;41299:6;41294:3;41287:19;41339:4;41334:3;41330:14;41315:29;;41166:184;;;;:::o;41356:132::-;41423:4;41446:3;41438:11;;41476:4;41471:3;41467:14;41459:22;;41356:132;;;:::o;41494:108::-;41571:24;41589:5;41571:24;:::i;:::-;41566:3;41559:37;41494:108;;:::o;41608:179::-;41677:10;41698:46;41740:3;41732:6;41698:46;:::i;:::-;41776:4;41771:3;41767:14;41753:28;;41608:179;;;;:::o;41793:113::-;41863:4;41895;41890:3;41886:14;41878:22;;41793:113;;;:::o;41942:732::-;42061:3;42090:54;42138:5;42090:54;:::i;:::-;42160:86;42239:6;42234:3;42160:86;:::i;:::-;42153:93;;42270:56;42320:5;42270:56;:::i;:::-;42349:7;42380:1;42365:284;42390:6;42387:1;42384:13;42365:284;;;42466:6;42460:13;42493:63;42552:3;42537:13;42493:63;:::i;:::-;42486:70;;42579:60;42632:6;42579:60;:::i;:::-;42569:70;;42425:224;42412:1;42409;42405:9;42400:14;;42365:284;;;42369:14;42665:3;42658:10;;42066:608;;;41942:732;;;;:::o;42680:831::-;42943:4;42981:3;42970:9;42966:19;42958:27;;42995:71;43063:1;43052:9;43048:17;43039:6;42995:71;:::i;:::-;43076:80;43152:2;43141:9;43137:18;43128:6;43076:80;:::i;:::-;43203:9;43197:4;43193:20;43188:2;43177:9;43173:18;43166:48;43231:108;43334:4;43325:6;43231:108;:::i;:::-;43223:116;;43349:72;43417:2;43406:9;43402:18;43393:6;43349:72;:::i;:::-;43431:73;43499:3;43488:9;43484:19;43475:6;43431:73;:::i;:::-;42680:831;;;;;;;;:::o;43517:134::-;43575:9;43608:37;43639:5;43608:37;:::i;:::-;43595:50;;43517:134;;;:::o;43657:147::-;43752:45;43791:5;43752:45;:::i;:::-;43747:3;43740:58;43657:147;;:::o;43810:823::-;44067:4;44105:3;44094:9;44090:19;44082:27;;44119:71;44187:1;44176:9;44172:17;44163:6;44119:71;:::i;:::-;44200:72;44268:2;44257:9;44253:18;44244:6;44200:72;:::i;:::-;44282:80;44358:2;44347:9;44343:18;44334:6;44282:80;:::i;:::-;44372;44448:2;44437:9;44433:18;44424:6;44372:80;:::i;:::-;44462:81;44538:3;44527:9;44523:19;44514:6;44462:81;:::i;:::-;44553:73;44621:3;44610:9;44606:19;44597:6;44553:73;:::i;:::-;43810:823;;;;;;;;;:::o;44639:143::-;44696:5;44727:6;44721:13;44712:22;;44743:33;44770:5;44743:33;:::i;:::-;44639:143;;;;:::o;44788:663::-;44876:6;44884;44892;44941:2;44929:9;44920:7;44916:23;44912:32;44909:119;;;44947:79;;:::i;:::-;44909:119;45067:1;45092:64;45148:7;45139:6;45128:9;45124:22;45092:64;:::i;:::-;45082:74;;45038:128;45205:2;45231:64;45287:7;45278:6;45267:9;45263:22;45231:64;:::i;:::-;45221:74;;45176:129;45344:2;45370:64;45426:7;45417:6;45406:9;45402:22;45370:64;:::i;:::-;45360:74;;45315:129;44788:663;;;;;:::o
Swarm Source
ipfs://d421bda510b36d4b2f5b1477f105271b12870ea0c0a805409917b4cc415e12b3
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.