Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 320 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21122297 | 61 days ago | IN | 0 ETH | 0.00045357 | ||||
Approve | 21005088 | 78 days ago | IN | 0 ETH | 0.00038779 | ||||
Approve | 20983447 | 81 days ago | IN | 0 ETH | 0.00040201 | ||||
Approve | 20982714 | 81 days ago | IN | 0 ETH | 0.00047584 | ||||
Approve | 20840140 | 101 days ago | IN | 0 ETH | 0.00030895 | ||||
Approve | 20742132 | 114 days ago | IN | 0 ETH | 0.00014965 | ||||
Approve | 20638743 | 129 days ago | IN | 0 ETH | 0.00002923 | ||||
Approve | 20630309 | 130 days ago | IN | 0 ETH | 0.00003679 | ||||
Approve | 20630227 | 130 days ago | IN | 0 ETH | 0.00002395 | ||||
Approve | 20630226 | 130 days ago | IN | 0 ETH | 0.00004258 | ||||
Approve | 20517745 | 146 days ago | IN | 0 ETH | 0.00009668 | ||||
Approve | 20487495 | 150 days ago | IN | 0 ETH | 0.00021734 | ||||
Transfer | 20455475 | 154 days ago | IN | 0 ETH | 0.00015175 | ||||
Approve | 20446929 | 155 days ago | IN | 0 ETH | 0.00009795 | ||||
Approve | 20440344 | 156 days ago | IN | 0 ETH | 0.00013255 | ||||
Approve | 20437668 | 157 days ago | IN | 0 ETH | 0.00018178 | ||||
Approve | 20437587 | 157 days ago | IN | 0 ETH | 0.00019989 | ||||
Approve | 20437115 | 157 days ago | IN | 0 ETH | 0.00020244 | ||||
Approve | 20435808 | 157 days ago | IN | 0 ETH | 0.00059354 | ||||
Approve | 20432706 | 157 days ago | IN | 0 ETH | 0.00022702 | ||||
Approve | 20432658 | 157 days ago | IN | 0 ETH | 0.00029106 | ||||
Approve | 20432647 | 157 days ago | IN | 0 ETH | 0.00029498 | ||||
Transfer | 20432645 | 157 days ago | IN | 0 ETH | 0.00034388 | ||||
Approve | 20432619 | 157 days ago | IN | 0 ETH | 0.00028389 | ||||
Approve | 20432606 | 157 days ago | IN | 0 ETH | 0.0003125 |
Latest 14 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20426970 | 158 days ago | 0.00171261 ETH | ||||
20426970 | 158 days ago | 0.00171261 ETH | ||||
20426920 | 158 days ago | 0.00450158 ETH | ||||
20426920 | 158 days ago | 0.00450158 ETH | ||||
20426912 | 158 days ago | 0.02614099 ETH | ||||
20426912 | 158 days ago | 0.02614099 ETH | ||||
20426898 | 158 days ago | 0.01719284 ETH | ||||
20426898 | 158 days ago | 0.01719284 ETH | ||||
20426896 | 158 days ago | 0.01867663 ETH | ||||
20426896 | 158 days ago | 0.01867663 ETH | ||||
20426895 | 158 days ago | 0.02036124 ETH | ||||
20426895 | 158 days ago | 0.02036124 ETH | ||||
20426895 | 158 days ago | 0.72098133 ETH | ||||
20426895 | 158 days ago | 0.72098133 ETH |
Loading...
Loading
Contract Name:
PTCD
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-31 */ // Ever felt the sting of a crypto crash? Or watched your coins plummet while you clutched your Jack Daniels for dear life? // You're not alone, friend. Welcome to Post Traumatic Coin Disorder ($PTCD), the only crypto that truly understands your pain. // Web: https://ptcd.io // TG: https://t.me/PTCDeth // SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _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); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract PTCD is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; uint256 public PTCDFeeOnBuy; uint256 public PTCDFeeOnSell; address public PTCDVault; uint256 public swapTokensAtAmount; bool private swapping; bool public swapEnabled; event ExcludeFromFees(address indexed account, bool isExcluded); event PTCDVaultChanged(address PTCDVault); event UpdateFees(uint256 PTCDFeeOnBuy, uint256 PTCDFeeOnSell); event SwapAndSendPTCD(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20("Post Traumatic Coin Disorder", "PTCD") { address router; if (block.chainid == 56) { router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router } else if (block.chainid == 97) { router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router } else if (block.chainid == 1 || block.chainid == 5) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet } else { revert(); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); PTCDFeeOnBuy = 0; PTCDFeeOnSell = 0; PTCDVault = 0xE35c75Df855a426EA2E028Ca67645007CB7Ba3e0; maxTransactionLimitEnabled = true; _isExcludedFromMaxTxLimit[owner()] = true; _isExcludedFromMaxTxLimit[address(this)] = true; _isExcludedFromMaxTxLimit[address(0xdead)] = true; _isExcludedFromMaxTxLimit[PTCDVault] = true; _isExcludedFromMaxTxLimit[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; //pinklock maxWalletLimitEnabled = true; _isExcludedFromMaxWalletLimit[owner()] = true; _isExcludedFromMaxWalletLimit[address(this)] = true; _isExcludedFromMaxWalletLimit[address(0xdead)] = true; _isExcludedFromMaxWalletLimit[PTCDVault] = true; _isExcludedFromMaxWalletLimit[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; //pinklock _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; //pinklock _mint(owner(), 1e9 * (10 ** decimals())); swapTokensAtAmount = totalSupply() / 5_000; maxTransactionAmountBuy = totalSupply() * 30 / 1000; maxTransactionAmountSell = totalSupply() * 30 / 1000; maxWalletAmount = totalSupply() * 30 / 1000; tradingEnabled = false; swapEnabled = false; } receive() external payable { } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function updateFees(uint256 _PTCDFeeOnSell, uint256 _PTCDFeeOnBuy) external onlyOwner { require(_PTCDFeeOnSell <= 1, "Fee cannot exceed 1%."); require(_PTCDFeeOnBuy <= 1, "Fee cannot exceed 1%."); PTCDFeeOnSell = _PTCDFeeOnSell; PTCDFeeOnBuy = _PTCDFeeOnBuy; emit UpdateFees(PTCDFeeOnSell, PTCDFeeOnBuy); } function changePTCDVault(address _PTCDVault) external onlyOwner{ require(_PTCDVault != PTCDVault, "PTCD wallet is already that address"); require(_PTCDVault != address(0),"PTCD wallet cannot be the zero address"); PTCDVault = _PTCDVault; emit PTCDVaultChanged(PTCDVault); } bool public tradingEnabled; uint256 public tradingBlock; uint256 public tradingTime; function enableTrading() external onlyOwner{ require(!tradingEnabled, "Trading already enabled."); tradingEnabled = true; swapEnabled = true; tradingBlock = block.number; tradingTime = block.timestamp; } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } if (maxTransactionLimitEnabled) { if ((from == uniswapV2Pair || to == uniswapV2Pair) && !_isExcludedFromMaxTxLimit[from] && !_isExcludedFromMaxTxLimit[to] ) { if (from == uniswapV2Pair) { require( amount <= maxTransactionAmountBuy, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } else { require( amount <= maxTransactionAmountSell, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair && swapEnabled ) { swapping = true; swapAndSendPTCD(contractTokenBalance); swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { if (block.number < tradingBlock + 6){ _totalFees = 99; } else if(block.timestamp > tradingTime + 1000){ _totalFees = PTCDFeeOnBuy; } else{ _totalFees = 21; } } else if (to == uniswapV2Pair) { if(block.timestamp > tradingTime + 1000){ _totalFees = PTCDFeeOnSell; } else{ _totalFees = 21; } } else { _totalFees = 0; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } if (maxWalletLimitEnabled) { if (!_isExcludedFromMaxWalletLimit[from] && !_isExcludedFromMaxWalletLimit[to] && to != uniswapV2Pair ) { uint256 balance = balanceOf(to); require( balance + amount <= maxWalletAmount, "MaxWallet: Recipient exceeds the maxWalletAmount" ); } } super._transfer(from, to, amount); } function setSwapEnabled(bool _enabled) external onlyOwner{ require(swapEnabled != _enabled, "swapEnabled already at this state."); swapEnabled = _enabled; } function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply"); swapTokensAtAmount = newAmount; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndSendPTCD(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; payable(PTCDVault).sendValue(newBalance); emit SwapAndSendPTCD(tokenAmount, newBalance); } mapping(address => bool) private _isExcludedFromMaxWalletLimit; bool public maxWalletLimitEnabled; uint256 public maxWalletAmount; event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded); event MaxWalletLimitStateChanged(bool maxWalletLimit); event MaxWalletLimitAmountChanged(uint256 maxWalletAmount); function setEnableMaxWalletLimit(bool enable) external onlyOwner { require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state"); maxWalletLimitEnabled = enable; emit MaxWalletLimitStateChanged(maxWalletLimitEnabled); } function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner { require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%"); maxWalletAmount = _maxWalletAmount * (10 ** decimals()); emit MaxWalletLimitAmountChanged(maxWalletAmount); } function excludeFromMaxWallet(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state"); require(account != address(this), "Can't set this address."); _isExcludedFromMaxWalletLimit[account] = exclude; emit ExcludedFromMaxWalletLimit(account, exclude); } function isExcludedFromMaxWalletLimit(address account) public view returns(bool) { return _isExcludedFromMaxWalletLimit[account]; } mapping(address => bool) private _isExcludedFromMaxTxLimit; bool public maxTransactionLimitEnabled; uint256 public maxTransactionAmountBuy; uint256 public maxTransactionAmountSell; event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded); event MaxTransactionLimitStateChanged(bool maxTransactionLimit); event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell); function setEnableMaxTransactionLimit(bool enable) external onlyOwner { require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state"); maxTransactionLimitEnabled = enable; emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled); } function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner { require( _maxTransactionAmountBuy >= (totalSupply() / (10 ** decimals())) / 1_000 && _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, "Max Transaction limis cannot be lower than 0.1% of total supply" ); maxTransactionAmountBuy = _maxTransactionAmountBuy * (10 ** decimals()); maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals()); emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell); } function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state"); require(account != address(this), "Can't set this address."); _isExcludedFromMaxTxLimit[account] = exclude; emit ExcludedFromMaxTransactionLimit(account, exclude); } function isExcludedFromMaxTransaction(address account) public view returns(bool) { return _isExcludedFromMaxTxLimit[account]; } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","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":false,"internalType":"address","name":"PTCDVault","type":"address"}],"name":"PTCDVaultChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendPTCD","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"PTCDFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"PTCDFeeOnSell","type":"uint256"}],"name":"UpdateFees","type":"event"},{"inputs":[],"name":"PTCDFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PTCDFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PTCDVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_PTCDVault","type":"address"}],"name":"changePTCDVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","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":[],"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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_PTCDFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_PTCDFeeOnBuy","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280601c81526020017f506f737420547261756d6174696320436f696e204469736f72646572000000008152506040518060400160405280600481526020017f505443440000000000000000000000000000000000000000000000000000000081525081600390816200008f91906200119e565b508060049081620000a191906200119e565b5050506000620000b662000b8c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000603846036200017d577310ed43c718714eb63d5aa57b78b54704e256024e9050620001dd565b60614603620001a35773d99d1c33f9fc3444f8101754abc46c52416550d19050620001dc565b6001461480620001b35750600546145b15620001d657737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001db565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002569190620012ef565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e49190620012ef565b6040518363ffffffff1660e01b81526004016200030392919062001332565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003499190620012ef565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b9460201b60201c565b60006009819055506000600a8190555073e35c75df855a426ea2e028ca67645007cb7ba3e0600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460006101000a81548160ff021916908315150217905550600160136000620004b862000d6560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600073407993575c91ce7643a4d4ccacc9a98c36ee1bbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160006101000a81548160ff021916908315150217905550600160106000620006d262000d6560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073407993575c91ce7643a4d4ccacc9a98c36ee1bbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620008d162000d6560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600073407993575c91ce7643a4d4ccacc9a98c36ee1bbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a8f62000a5462000d6560201b60201c565b62000a6462000d8f60201b60201c565b600a62000a729190620014ef565b633b9aca0062000a83919062001540565b62000d9860201b60201c565b61138862000aa262000f1060201b60201c565b62000aae9190620015ba565b600c819055506103e8601e62000ac962000f1060201b60201c565b62000ad5919062001540565b62000ae19190620015ba565b6015819055506103e8601e62000afc62000f1060201b60201c565b62000b08919062001540565b62000b149190620015ba565b6016819055506103e8601e62000b2f62000f1060201b60201c565b62000b3b919062001540565b62000b479190620015ba565b6012819055506000600d60026101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055505050506200180e565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bfd9062001679565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000c78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c6f9062001711565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d58919062001744565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e0190620017b1565b60405180910390fd5b62000e1e6000838362000f1a60201b60201c565b806002600082825462000e329190620017d3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000e899190620017d3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ef0919062001744565b60405180910390a362000f0c6000838362000f1f60201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fa657607f821691505b60208210810362000fbc5762000fbb62000f5e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620010267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000fe7565b62001032868362000fe7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200107f6200107962001073846200104a565b62001054565b6200104a565b9050919050565b6000819050919050565b6200109b836200105e565b620010b3620010aa8262001086565b84845462000ff4565b825550505050565b600090565b620010ca620010bb565b620010d781848462001090565b505050565b5b81811015620010ff57620010f3600082620010c0565b600181019050620010dd565b5050565b601f8211156200114e57620011188162000fc2565b620011238462000fd7565b8101602085101562001133578190505b6200114b620011428562000fd7565b830182620010dc565b50505b505050565b600082821c905092915050565b6000620011736000198460080262001153565b1980831691505092915050565b60006200118e838362001160565b9150826002028217905092915050565b620011a98262000f24565b67ffffffffffffffff811115620011c557620011c462000f2f565b5b620011d1825462000f8d565b620011de82828562001103565b600060209050601f83116001811462001216576000841562001201578287015190505b6200120d858262001180565b8655506200127d565b601f198416620012268662000fc2565b60005b82811015620012505784890151825560018201915060208501945060208101905062001229565b868310156200127057848901516200126c601f89168262001160565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012b7826200128a565b9050919050565b620012c981620012aa565b8114620012d557600080fd5b50565b600081519050620012e981620012be565b92915050565b60006020828403121562001308576200130762001285565b5b60006200131884828501620012d8565b91505092915050565b6200132c81620012aa565b82525050565b600060408201905062001349600083018562001321565b62001358602083018462001321565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620013ed57808604811115620013c557620013c46200135f565b5b6001851615620013d55780820291505b8081029050620013e5856200138e565b9450620013a5565b94509492505050565b600082620014085760019050620014db565b81620014185760009050620014db565b81600181146200143157600281146200143c5762001472565b6001915050620014db565b60ff8411156200145157620014506200135f565b5b8360020a9150848211156200146b576200146a6200135f565b5b50620014db565b5060208310610133831016604e8410600b8410161715620014ac5782820a905083811115620014a657620014a56200135f565b5b620014db565b620014bb84848460016200139b565b92509050818404811115620014d557620014d46200135f565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014fc826200104a565b91506200150983620014e2565b9250620015387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013f6565b905092915050565b60006200154d826200104a565b91506200155a836200104a565b92508282026200156a816200104a565b915082820484148315176200158457620015836200135f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015c7826200104a565b9150620015d4836200104a565b925082620015e757620015e66200158b565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062001661602483620015f2565b91506200166e8262001603565b604082019050919050565b60006020820190508181036000830152620016948162001652565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016f9602283620015f2565b915062001706826200169b565b604082019050919050565b600060208201905081810360008301526200172c81620016ea565b9050919050565b6200173e816200104a565b82525050565b60006020820190506200175b600083018462001733565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001799601f83620015f2565b9150620017a68262001761565b602082019050919050565b60006020820190508181036000830152620017cc816200178a565b9050919050565b6000620017e0826200104a565b9150620017ed836200104a565b92508282019050808211156200180857620018076200135f565b5b92915050565b6152f9806200181e6000396000f3fe60806040526004361061026b5760003560e01c806370a0823111610144578063b6f7f681116100b6578063dd62ed3e1161007a578063dd62ed3e14610953578063e01af92c14610990578063e2f45605146109b9578063f2fde38b146109e4578063f800f4a914610a0d578063f9d0831a14610a3857610272565b8063b6f7f68114610882578063b8158d60146108ab578063c0246668146108d6578063cd51e6d4146108ff578063d2fcc0011461092a57610272565b8063a457c2d711610108578063a457c2d71461074c578063a8a69b9d14610789578063a9059cbb146107c6578063aa4bde2814610803578063afa4f3b21461082e578063b0a06b091461085757610272565b806370a0823114610679578063880bcbc1146106b65780638a8c523c146106df5780638da5cb5b146106f657806395d89b411461072157610272565b80632ae72984116101dd5780634ada218b116101a15780634ada218b146105695780634fbee1931461059457806356a6cabf146105d157806359136fa5146105fa5780636db79437146106255780636ddd17131461064e57610272565b80632ae72984146104805780632ba86bf2146104ab578063313ce567146104d6578063395093511461050157806349bd5a5e1461053e57610272565b806318d9ceae1161022f57806318d9ceae1461036057806321a9d82a1461039d57806323b872dd146103c857806327a14fc214610405578063295b48831461042e5780632a6c7dba1461045757610272565b80630105d0fd1461027757806306fdde03146102a2578063095ea7b3146102cd5780631694505e1461030a57806318160ddd1461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a61565b60405161029991906139a8565b60405180910390f35b3480156102ae57600080fd5b506102b7610a67565b6040516102c49190613a53565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190613b04565b610af9565b6040516103019190613b5f565b60405180910390f35b34801561031657600080fd5b5061031f610b17565b60405161032c9190613bd9565b60405180910390f35b34801561034157600080fd5b5061034a610b3d565b60405161035791906139a8565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190613bf4565b610b47565b6040516103949190613b5f565b60405180910390f35b3480156103a957600080fd5b506103b2610b9d565b6040516103bf9190613b5f565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613c21565b610bb0565b6040516103fc9190613b5f565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190613c74565b610ccf565b005b34801561043a57600080fd5b5061045560048036038101906104509190613bf4565b610e3b565b005b34801561046357600080fd5b5061047e60048036038101906104799190613ccd565b61106e565b005b34801561048c57600080fd5b506104956111bd565b6040516104a291906139a8565b60405180910390f35b3480156104b757600080fd5b506104c06111c3565b6040516104cd9190613b5f565b60405180910390f35b3480156104e257600080fd5b506104eb6111d6565b6040516104f89190613d16565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190613b04565b6111df565b6040516105359190613b5f565b60405180910390f35b34801561054a57600080fd5b5061055361128b565b6040516105609190613d40565b60405180910390f35b34801561057557600080fd5b5061057e6112b1565b60405161058b9190613b5f565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190613bf4565b6112c4565b6040516105c89190613b5f565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190613ccd565b61131a565b005b34801561060657600080fd5b5061060f611469565b60405161061c91906139a8565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190613d5b565b61146f565b005b34801561065a57600080fd5b506106636115dd565b6040516106709190613b5f565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190613bf4565b6115f0565b6040516106ad91906139a8565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d89190613d9b565b611638565b005b3480156106eb57600080fd5b506106f4611878565b005b34801561070257600080fd5b5061070b6119a5565b6040516107189190613d40565b60405180910390f35b34801561072d57600080fd5b506107366119cf565b6040516107439190613a53565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190613b04565b611a61565b6040516107809190613b5f565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190613bf4565b611b4c565b6040516107bd9190613b5f565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190613b04565b611ba2565b6040516107fa9190613b5f565b60405180910390f35b34801561080f57600080fd5b50610818611bc0565b60405161082591906139a8565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190613c74565b611bc6565b005b34801561086357600080fd5b5061086c611cf7565b60405161087991906139a8565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a49190613d5b565b611cfd565b005b3480156108b757600080fd5b506108c0611ed2565b6040516108cd91906139a8565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190613d9b565b611ed8565b005b34801561090b57600080fd5b506109146120aa565b60405161092191906139a8565b60405180910390f35b34801561093657600080fd5b50610951600480360381019061094c9190613d9b565b6120b0565b005b34801561095f57600080fd5b5061097a60048036038101906109759190613ddb565b6122f0565b60405161098791906139a8565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b29190613ccd565b612377565b005b3480156109c557600080fd5b506109ce612480565b6040516109db91906139a8565b60405180910390f35b3480156109f057600080fd5b50610a0b6004803603810190610a069190613bf4565b612486565b005b348015610a1957600080fd5b50610a2261264c565b604051610a2f9190613d40565b60405180910390f35b348015610a4457600080fd5b50610a5f6004803603810190610a5a9190613bf4565b612672565b005b60155481565b606060038054610a7690613e4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa290613e4a565b8015610aef5780601f10610ac457610100808354040283529160200191610aef565b820191906000526020600020905b815481529060010190602001808311610ad257829003601f168201915b5050505050905090565b6000610b0d610b066128e2565b84846128ea565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bfc6128e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cb85782811015610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613eed565b60405180910390fd5b610cb785610caf6128e2565b8584036128ea565b5b610cc3858585612ab3565b60019150509392505050565b610cd76128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90613f59565b60405180910390fd5b6064610d706111d6565b600a610d7c91906140db565b610d84610b3d565b610d8e9190614155565b610d989190614155565b811015610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd1906141f8565b60405180910390fd5b610de26111d6565b600a610dee91906140db565b81610df99190614218565b6012819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942601254604051610e3091906139a8565b60405180910390a150565b610e436128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613f59565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f59906142cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc89061435e565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd34c5fd90831eaa9a78067743355ee657df5a0a0d01f7049aa525470f0542d17600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516110639190613d40565b60405180910390a150565b6110766128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc90613f59565b60405180910390fd5b601160009054906101000a900460ff1615158115150361115a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611151906143f0565b60405180910390fd5b80601160006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601160009054906101000a900460ff166040516111b29190613b5f565b60405180910390a150565b600a5481565b601460009054906101000a900460ff1681565b60006012905090565b60006112816111ec6128e2565b8484600160006111fa6128e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127c9190614410565b6128ea565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113226128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a890613f59565b60405180910390fd5b601460009054906101000a900460ff16151581151503611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd906144b6565b60405180910390fd5b80601460006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601460009054906101000a900460ff1660405161145e9190613b5f565b60405180910390a150565b60165481565b6114776128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613f59565b60405180910390fd5b600182111561154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190614522565b60405180910390fd5b600181111561158e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158590614522565b60405180910390fd5b81600a81905550806009819055507f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04600a546009546040516115d1929190614542565b60405180910390a15050565b600d60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116406128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613f59565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611758906145dd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690614649565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c108260405161186c9190613b5f565b60405180910390a25050565b6118806128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190690613f59565b60405180910390fd5b600d60029054906101000a900460ff161561195f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611956906146b5565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff02191690831515021790555043600e8190555042600f81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119de90613e4a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0a90613e4a565b8015611a575780601f10611a2c57610100808354040283529160200191611a57565b820191906000526020600020905b815481529060010190602001808311611a3a57829003601f168201915b5050505050905090565b60008060016000611a706128e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2490614747565b60405180910390fd5b611b41611b386128e2565b858584036128ea565b600191505092915050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611bb6611baf6128e2565b8484612ab3565b6001905092915050565b60125481565b611bce6128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490613f59565b60405180910390fd5b620f4240611c69610b3d565b611c739190614155565b8111611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab906147d9565b60405180910390fd5b80600c819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600c54604051611cec91906139a8565b60405180910390a150565b60095481565b611d056128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8b90613f59565b60405180910390fd5b6103e8611d9f6111d6565b600a611dab91906140db565b611db3610b3d565b611dbd9190614155565b611dc79190614155565b8210158015611e0857506103e8611ddc6111d6565b600a611de891906140db565b611df0610b3d565b611dfa9190614155565b611e049190614155565b8110155b611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e9061486b565b60405180910390fd5b611e4f6111d6565b600a611e5b91906140db565b82611e669190614218565b601581905550611e746111d6565b600a611e8091906140db565b81611e8b9190614218565b6016819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601554601654604051611ec6929190614542565b60405180910390a15050565b600f5481565b611ee06128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6690613f59565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff8906148fd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161209e9190613b5f565b60405180910390a25050565b600e5481565b6120b86128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213e90613f59565b60405180910390fd5b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d0906145dd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223e90614649565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c826040516122e49190613b5f565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61237f6128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240590613f59565b60405180910390fd5b801515600d60019054906101000a900460ff16151503612463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245a9061498f565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b600c5481565b61248e6128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490613f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361258c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258390614a21565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61267a6128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270090613f59565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614ab3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127da576127d4473373ffffffffffffffffffffffffffffffffffffffff1661339990919063ffffffff16565b506128df565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161281a9190613d40565b602060405180830381865afa158015612837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285b9190614ae8565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612898929190614b15565b6020604051808303816000875af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128db9190614b53565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295090614bf2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf90614c84565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aa691906139a8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1990614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8890614da8565b60405180910390fd5b600d60029054906101000a900460ff1680612bf55750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c495750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7f90614e14565b60405180910390fd5b60008103612ca157612c9c83836000613454565b613394565b601460009054906101000a900460ff1615612ef757600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612d5f5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612db55750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e0b5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ef657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612eaf57601554811115612eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea190614ea6565b60405180910390fd5b612ef5565b601654811115612ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb90614ea6565b60405180910390fd5b5b5b5b6000612f02306115f0565b90506000600c548210159050808015612f285750600d60009054906101000a900460ff16155b8015612f815750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612f995750600d60019054906101000a900460ff165b15612fde576001600d60006101000a81548160ff021916908315150217905550612fc2826136d3565b6000600d60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130815750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130985750600d60009054906101000a900460ff165b156130a657600090506131cd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603613146576006600e5461310a9190614410565b43101561311a5760639050613141565b6103e8600f5461312a9190614410565b42111561313b576009549050613140565b601590505b5b6131cc565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036131c6576103e8600f546131ab9190614410565b4211156131bc57600a5490506131c1565b601590505b6131cb565b600090505b5b5b600081111561320d576000606482866131e69190614218565b6131f09190614155565b905080856131fe9190614ec6565b945061320b873083613454565b505b601160009054906101000a900460ff161561338557601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132c65750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133205750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613384576000613330866115f0565b905060125485826133419190614410565b1115613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337990614f6c565b60405180910390fd5b505b5b613390868686613454565b5050505b505050565b6000814710156133de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d590614fd8565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405161340490615029565b60006040518083038185875af1925050503d8060008114613441576040519150601f19603f3d011682016040523d82523d6000602084013e613446565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ba90614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352990614da8565b60405180910390fd5b61353d838383613985565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156135c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ba906150b0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136569190614410565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136ba91906139a8565b60405180910390a36136cd84848461398a565b50505050565b60004790506000600267ffffffffffffffff8111156136f5576136f46150d0565b5b6040519080825280602002602001820160405280156137235781602001602082028036833780820191505090505b509050308160008151811061373b5761373a6150ff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190615143565b8160018151811061381a576138196150ff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016138b8959493929190615269565b600060405180830381600087803b1580156138d257600080fd5b505af11580156138e6573d6000803e3d6000fd5b50505050600082476138f89190614ec6565b905061394581600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661339990919063ffffffff16565b507f1ae1b1fbe828cd6f69b56baee0384f7096c4f0d8d469c3ae87cfaffe09ad74588482604051613977929190614542565b60405180910390a150505050565b505050565b505050565b6000819050919050565b6139a28161398f565b82525050565b60006020820190506139bd6000830184613999565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139fd5780820151818401526020810190506139e2565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a25826139c3565b613a2f81856139ce565b9350613a3f8185602086016139df565b613a4881613a09565b840191505092915050565b60006020820190508181036000830152613a6d8184613a1a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613aa582613a7a565b9050919050565b613ab581613a9a565b8114613ac057600080fd5b50565b600081359050613ad281613aac565b92915050565b613ae18161398f565b8114613aec57600080fd5b50565b600081359050613afe81613ad8565b92915050565b60008060408385031215613b1b57613b1a613a75565b5b6000613b2985828601613ac3565b9250506020613b3a85828601613aef565b9150509250929050565b60008115159050919050565b613b5981613b44565b82525050565b6000602082019050613b746000830184613b50565b92915050565b6000819050919050565b6000613b9f613b9a613b9584613a7a565b613b7a565b613a7a565b9050919050565b6000613bb182613b84565b9050919050565b6000613bc382613ba6565b9050919050565b613bd381613bb8565b82525050565b6000602082019050613bee6000830184613bca565b92915050565b600060208284031215613c0a57613c09613a75565b5b6000613c1884828501613ac3565b91505092915050565b600080600060608486031215613c3a57613c39613a75565b5b6000613c4886828701613ac3565b9350506020613c5986828701613ac3565b9250506040613c6a86828701613aef565b9150509250925092565b600060208284031215613c8a57613c89613a75565b5b6000613c9884828501613aef565b91505092915050565b613caa81613b44565b8114613cb557600080fd5b50565b600081359050613cc781613ca1565b92915050565b600060208284031215613ce357613ce2613a75565b5b6000613cf184828501613cb8565b91505092915050565b600060ff82169050919050565b613d1081613cfa565b82525050565b6000602082019050613d2b6000830184613d07565b92915050565b613d3a81613a9a565b82525050565b6000602082019050613d556000830184613d31565b92915050565b60008060408385031215613d7257613d71613a75565b5b6000613d8085828601613aef565b9250506020613d9185828601613aef565b9150509250929050565b60008060408385031215613db257613db1613a75565b5b6000613dc085828601613ac3565b9250506020613dd185828601613cb8565b9150509250929050565b60008060408385031215613df257613df1613a75565b5b6000613e0085828601613ac3565b9250506020613e1185828601613ac3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e6257607f821691505b602082108103613e7557613e74613e1b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ed76028836139ce565b9150613ee282613e7b565b604082019050919050565b60006020820190508181036000830152613f0681613eca565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f436020836139ce565b9150613f4e82613f0d565b602082019050919050565b60006020820190508181036000830152613f7281613f36565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613fff57808604811115613fdb57613fda613f79565b5b6001851615613fea5780820291505b8081029050613ff885613fa8565b9450613fbf565b94509492505050565b60008261401857600190506140d4565b8161402657600090506140d4565b816001811461403c576002811461404657614075565b60019150506140d4565b60ff84111561405857614057613f79565b5b8360020a91508482111561406f5761406e613f79565b5b506140d4565b5060208310610133831016604e8410600b84101617156140aa5782820a9050838111156140a5576140a4613f79565b5b6140d4565b6140b78484846001613fb5565b925090508184048111156140ce576140cd613f79565b5b81810290505b9392505050565b60006140e68261398f565b91506140f183613cfa565b925061411e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614008565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141608261398f565b915061416b8361398f565b92508261417b5761417a614126565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b60006141e2602d836139ce565b91506141ed82614186565b604082019050919050565b60006020820190508181036000830152614211816141d5565b9050919050565b60006142238261398f565b915061422e8361398f565b925082820261423c8161398f565b9150828204841483151761425357614252613f79565b5b5092915050565b7f505443442077616c6c657420697320616c72656164792074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006142b66023836139ce565b91506142c18261425a565b604082019050919050565b600060208201905081810360008301526142e5816142a9565b9050919050565b7f505443442077616c6c65742063616e6e6f7420626520746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143486026836139ce565b9150614353826142ec565b604082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b60006143da602d836139ce565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b600061441b8261398f565b91506144268361398f565b925082820190508082111561443e5761443d613f79565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b60006144a06032836139ce565b91506144ab82614444565b604082019050919050565b600060208201905081810360008301526144cf81614493565b9050919050565b7f4665652063616e6e6f74206578636565642031252e0000000000000000000000600082015250565b600061450c6015836139ce565b9150614517826144d6565b602082019050919050565b6000602082019050818103600083015261453b816144ff565b9050919050565b60006040820190506145576000830185613999565b6145646020830184613999565b9392505050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b60006145c76024836139ce565b91506145d28261456b565b604082019050919050565b600060208201905081810360008301526145f6816145ba565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b60006146336017836139ce565b915061463e826145fd565b602082019050919050565b6000602082019050818103600083015261466281614626565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b600061469f6018836139ce565b91506146aa82614669565b602082019050919050565b600060208201905081810360008301526146ce81614692565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006147316025836139ce565b915061473c826146d5565b604082019050919050565b6000602082019050818103600083015261476081614724565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b60006147c3603f836139ce565b91506147ce82614767565b604082019050919050565b600060208201905081810360008301526147f2816147b6565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614855603f836139ce565b9150614860826147f9565b604082019050919050565b6000602082019050818103600083015261488481614848565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006148e7602a836139ce565b91506148f28261488b565b604082019050919050565b60006020820190508181036000830152614916816148da565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006149796022836139ce565b91506149848261491d565b604082019050919050565b600060208201905081810360008301526149a88161496c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a0b6026836139ce565b9150614a16826149af565b604082019050919050565b60006020820190508181036000830152614a3a816149fe565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000614a9d6037836139ce565b9150614aa882614a41565b604082019050919050565b60006020820190508181036000830152614acc81614a90565b9050919050565b600081519050614ae281613ad8565b92915050565b600060208284031215614afe57614afd613a75565b5b6000614b0c84828501614ad3565b91505092915050565b6000604082019050614b2a6000830185613d31565b614b376020830184613999565b9392505050565b600081519050614b4d81613ca1565b92915050565b600060208284031215614b6957614b68613a75565b5b6000614b7784828501614b3e565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614bdc6024836139ce565b9150614be782614b80565b604082019050919050565b60006020820190508181036000830152614c0b81614bcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c6e6022836139ce565b9150614c7982614c12565b604082019050919050565b60006020820190508181036000830152614c9d81614c61565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d006025836139ce565b9150614d0b82614ca4565b604082019050919050565b60006020820190508181036000830152614d2f81614cf3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d926023836139ce565b9150614d9d82614d36565b604082019050919050565b60006020820190508181036000830152614dc181614d85565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000614dfe6018836139ce565b9150614e0982614dc8565b602082019050919050565b60006020820190508181036000830152614e2d81614df1565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000614e90603b836139ce565b9150614e9b82614e34565b604082019050919050565b60006020820190508181036000830152614ebf81614e83565b9050919050565b6000614ed18261398f565b9150614edc8361398f565b9250828203905081811115614ef457614ef3613f79565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000614f566030836139ce565b9150614f6182614efa565b604082019050919050565b60006020820190508181036000830152614f8581614f49565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614fc2601d836139ce565b9150614fcd82614f8c565b602082019050919050565b60006020820190508181036000830152614ff181614fb5565b9050919050565b600081905092915050565b50565b6000615013600083614ff8565b915061501e82615003565b600082019050919050565b600061503482615006565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061509a6026836139ce565b91506150a58261503e565b604082019050919050565b600060208201905081810360008301526150c98161508d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061513d81613aac565b92915050565b60006020828403121561515957615158613a75565b5b60006151678482850161512e565b91505092915050565b6000819050919050565b600061519561519061518b84615170565b613b7a565b61398f565b9050919050565b6151a58161517a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151e081613a9a565b82525050565b60006151f283836151d7565b60208301905092915050565b6000602082019050919050565b6000615216826151ab565b61522081856151b6565b935061522b836151c7565b8060005b8381101561525c57815161524388826151e6565b975061524e836151fe565b92505060018101905061522f565b5085935050505092915050565b600060a08201905061527e6000830188613999565b61528b602083018761519c565b818103604083015261529d818661520b565b90506152ac6060830185613d31565b6152b96080830184613999565b969550505050505056fea26469706673582212204940d6397820c2749c12344614d74ebc6875f395029b485b141535b61730bbf164736f6c63430008110033
Deployed Bytecode
0x60806040526004361061026b5760003560e01c806370a0823111610144578063b6f7f681116100b6578063dd62ed3e1161007a578063dd62ed3e14610953578063e01af92c14610990578063e2f45605146109b9578063f2fde38b146109e4578063f800f4a914610a0d578063f9d0831a14610a3857610272565b8063b6f7f68114610882578063b8158d60146108ab578063c0246668146108d6578063cd51e6d4146108ff578063d2fcc0011461092a57610272565b8063a457c2d711610108578063a457c2d71461074c578063a8a69b9d14610789578063a9059cbb146107c6578063aa4bde2814610803578063afa4f3b21461082e578063b0a06b091461085757610272565b806370a0823114610679578063880bcbc1146106b65780638a8c523c146106df5780638da5cb5b146106f657806395d89b411461072157610272565b80632ae72984116101dd5780634ada218b116101a15780634ada218b146105695780634fbee1931461059457806356a6cabf146105d157806359136fa5146105fa5780636db79437146106255780636ddd17131461064e57610272565b80632ae72984146104805780632ba86bf2146104ab578063313ce567146104d6578063395093511461050157806349bd5a5e1461053e57610272565b806318d9ceae1161022f57806318d9ceae1461036057806321a9d82a1461039d57806323b872dd146103c857806327a14fc214610405578063295b48831461042e5780632a6c7dba1461045757610272565b80630105d0fd1461027757806306fdde03146102a2578063095ea7b3146102cd5780631694505e1461030a57806318160ddd1461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a61565b60405161029991906139a8565b60405180910390f35b3480156102ae57600080fd5b506102b7610a67565b6040516102c49190613a53565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190613b04565b610af9565b6040516103019190613b5f565b60405180910390f35b34801561031657600080fd5b5061031f610b17565b60405161032c9190613bd9565b60405180910390f35b34801561034157600080fd5b5061034a610b3d565b60405161035791906139a8565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190613bf4565b610b47565b6040516103949190613b5f565b60405180910390f35b3480156103a957600080fd5b506103b2610b9d565b6040516103bf9190613b5f565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613c21565b610bb0565b6040516103fc9190613b5f565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190613c74565b610ccf565b005b34801561043a57600080fd5b5061045560048036038101906104509190613bf4565b610e3b565b005b34801561046357600080fd5b5061047e60048036038101906104799190613ccd565b61106e565b005b34801561048c57600080fd5b506104956111bd565b6040516104a291906139a8565b60405180910390f35b3480156104b757600080fd5b506104c06111c3565b6040516104cd9190613b5f565b60405180910390f35b3480156104e257600080fd5b506104eb6111d6565b6040516104f89190613d16565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190613b04565b6111df565b6040516105359190613b5f565b60405180910390f35b34801561054a57600080fd5b5061055361128b565b6040516105609190613d40565b60405180910390f35b34801561057557600080fd5b5061057e6112b1565b60405161058b9190613b5f565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190613bf4565b6112c4565b6040516105c89190613b5f565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190613ccd565b61131a565b005b34801561060657600080fd5b5061060f611469565b60405161061c91906139a8565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190613d5b565b61146f565b005b34801561065a57600080fd5b506106636115dd565b6040516106709190613b5f565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190613bf4565b6115f0565b6040516106ad91906139a8565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d89190613d9b565b611638565b005b3480156106eb57600080fd5b506106f4611878565b005b34801561070257600080fd5b5061070b6119a5565b6040516107189190613d40565b60405180910390f35b34801561072d57600080fd5b506107366119cf565b6040516107439190613a53565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190613b04565b611a61565b6040516107809190613b5f565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190613bf4565b611b4c565b6040516107bd9190613b5f565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190613b04565b611ba2565b6040516107fa9190613b5f565b60405180910390f35b34801561080f57600080fd5b50610818611bc0565b60405161082591906139a8565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190613c74565b611bc6565b005b34801561086357600080fd5b5061086c611cf7565b60405161087991906139a8565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a49190613d5b565b611cfd565b005b3480156108b757600080fd5b506108c0611ed2565b6040516108cd91906139a8565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190613d9b565b611ed8565b005b34801561090b57600080fd5b506109146120aa565b60405161092191906139a8565b60405180910390f35b34801561093657600080fd5b50610951600480360381019061094c9190613d9b565b6120b0565b005b34801561095f57600080fd5b5061097a60048036038101906109759190613ddb565b6122f0565b60405161098791906139a8565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b29190613ccd565b612377565b005b3480156109c557600080fd5b506109ce612480565b6040516109db91906139a8565b60405180910390f35b3480156109f057600080fd5b50610a0b6004803603810190610a069190613bf4565b612486565b005b348015610a1957600080fd5b50610a2261264c565b604051610a2f9190613d40565b60405180910390f35b348015610a4457600080fd5b50610a5f6004803603810190610a5a9190613bf4565b612672565b005b60155481565b606060038054610a7690613e4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa290613e4a565b8015610aef5780601f10610ac457610100808354040283529160200191610aef565b820191906000526020600020905b815481529060010190602001808311610ad257829003601f168201915b5050505050905090565b6000610b0d610b066128e2565b84846128ea565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bfc6128e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cb85782811015610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613eed565b60405180910390fd5b610cb785610caf6128e2565b8584036128ea565b5b610cc3858585612ab3565b60019150509392505050565b610cd76128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90613f59565b60405180910390fd5b6064610d706111d6565b600a610d7c91906140db565b610d84610b3d565b610d8e9190614155565b610d989190614155565b811015610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd1906141f8565b60405180910390fd5b610de26111d6565b600a610dee91906140db565b81610df99190614218565b6012819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942601254604051610e3091906139a8565b60405180910390a150565b610e436128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613f59565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f59906142cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc89061435e565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd34c5fd90831eaa9a78067743355ee657df5a0a0d01f7049aa525470f0542d17600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516110639190613d40565b60405180910390a150565b6110766128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc90613f59565b60405180910390fd5b601160009054906101000a900460ff1615158115150361115a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611151906143f0565b60405180910390fd5b80601160006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601160009054906101000a900460ff166040516111b29190613b5f565b60405180910390a150565b600a5481565b601460009054906101000a900460ff1681565b60006012905090565b60006112816111ec6128e2565b8484600160006111fa6128e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127c9190614410565b6128ea565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113226128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a890613f59565b60405180910390fd5b601460009054906101000a900460ff16151581151503611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd906144b6565b60405180910390fd5b80601460006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601460009054906101000a900460ff1660405161145e9190613b5f565b60405180910390a150565b60165481565b6114776128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613f59565b60405180910390fd5b600182111561154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190614522565b60405180910390fd5b600181111561158e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158590614522565b60405180910390fd5b81600a81905550806009819055507f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04600a546009546040516115d1929190614542565b60405180910390a15050565b600d60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116406128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613f59565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611758906145dd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690614649565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c108260405161186c9190613b5f565b60405180910390a25050565b6118806128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190690613f59565b60405180910390fd5b600d60029054906101000a900460ff161561195f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611956906146b5565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff02191690831515021790555043600e8190555042600f81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119de90613e4a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0a90613e4a565b8015611a575780601f10611a2c57610100808354040283529160200191611a57565b820191906000526020600020905b815481529060010190602001808311611a3a57829003601f168201915b5050505050905090565b60008060016000611a706128e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2490614747565b60405180910390fd5b611b41611b386128e2565b858584036128ea565b600191505092915050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611bb6611baf6128e2565b8484612ab3565b6001905092915050565b60125481565b611bce6128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490613f59565b60405180910390fd5b620f4240611c69610b3d565b611c739190614155565b8111611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab906147d9565b60405180910390fd5b80600c819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600c54604051611cec91906139a8565b60405180910390a150565b60095481565b611d056128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8b90613f59565b60405180910390fd5b6103e8611d9f6111d6565b600a611dab91906140db565b611db3610b3d565b611dbd9190614155565b611dc79190614155565b8210158015611e0857506103e8611ddc6111d6565b600a611de891906140db565b611df0610b3d565b611dfa9190614155565b611e049190614155565b8110155b611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e9061486b565b60405180910390fd5b611e4f6111d6565b600a611e5b91906140db565b82611e669190614218565b601581905550611e746111d6565b600a611e8091906140db565b81611e8b9190614218565b6016819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601554601654604051611ec6929190614542565b60405180910390a15050565b600f5481565b611ee06128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6690613f59565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff8906148fd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161209e9190613b5f565b60405180910390a25050565b600e5481565b6120b86128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213e90613f59565b60405180910390fd5b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d0906145dd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223e90614649565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c826040516122e49190613b5f565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61237f6128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240590613f59565b60405180910390fd5b801515600d60019054906101000a900460ff16151503612463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245a9061498f565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b600c5481565b61248e6128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490613f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361258c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258390614a21565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61267a6128e2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270090613f59565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614ab3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127da576127d4473373ffffffffffffffffffffffffffffffffffffffff1661339990919063ffffffff16565b506128df565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161281a9190613d40565b602060405180830381865afa158015612837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285b9190614ae8565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612898929190614b15565b6020604051808303816000875af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128db9190614b53565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295090614bf2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf90614c84565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aa691906139a8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1990614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8890614da8565b60405180910390fd5b600d60029054906101000a900460ff1680612bf55750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c495750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7f90614e14565b60405180910390fd5b60008103612ca157612c9c83836000613454565b613394565b601460009054906101000a900460ff1615612ef757600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612d5f5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612db55750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e0b5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ef657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612eaf57601554811115612eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea190614ea6565b60405180910390fd5b612ef5565b601654811115612ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb90614ea6565b60405180910390fd5b5b5b5b6000612f02306115f0565b90506000600c548210159050808015612f285750600d60009054906101000a900460ff16155b8015612f815750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612f995750600d60019054906101000a900460ff165b15612fde576001600d60006101000a81548160ff021916908315150217905550612fc2826136d3565b6000600d60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130815750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130985750600d60009054906101000a900460ff165b156130a657600090506131cd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603613146576006600e5461310a9190614410565b43101561311a5760639050613141565b6103e8600f5461312a9190614410565b42111561313b576009549050613140565b601590505b5b6131cc565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036131c6576103e8600f546131ab9190614410565b4211156131bc57600a5490506131c1565b601590505b6131cb565b600090505b5b5b600081111561320d576000606482866131e69190614218565b6131f09190614155565b905080856131fe9190614ec6565b945061320b873083613454565b505b601160009054906101000a900460ff161561338557601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132c65750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133205750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613384576000613330866115f0565b905060125485826133419190614410565b1115613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337990614f6c565b60405180910390fd5b505b5b613390868686613454565b5050505b505050565b6000814710156133de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d590614fd8565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405161340490615029565b60006040518083038185875af1925050503d8060008114613441576040519150601f19603f3d011682016040523d82523d6000602084013e613446565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ba90614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352990614da8565b60405180910390fd5b61353d838383613985565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156135c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ba906150b0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136569190614410565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136ba91906139a8565b60405180910390a36136cd84848461398a565b50505050565b60004790506000600267ffffffffffffffff8111156136f5576136f46150d0565b5b6040519080825280602002602001820160405280156137235781602001602082028036833780820191505090505b509050308160008151811061373b5761373a6150ff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190615143565b8160018151811061381a576138196150ff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016138b8959493929190615269565b600060405180830381600087803b1580156138d257600080fd5b505af11580156138e6573d6000803e3d6000fd5b50505050600082476138f89190614ec6565b905061394581600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661339990919063ffffffff16565b507f1ae1b1fbe828cd6f69b56baee0384f7096c4f0d8d469c3ae87cfaffe09ad74588482604051613977929190614542565b60405180910390a150505050565b505050565b505050565b6000819050919050565b6139a28161398f565b82525050565b60006020820190506139bd6000830184613999565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139fd5780820151818401526020810190506139e2565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a25826139c3565b613a2f81856139ce565b9350613a3f8185602086016139df565b613a4881613a09565b840191505092915050565b60006020820190508181036000830152613a6d8184613a1a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613aa582613a7a565b9050919050565b613ab581613a9a565b8114613ac057600080fd5b50565b600081359050613ad281613aac565b92915050565b613ae18161398f565b8114613aec57600080fd5b50565b600081359050613afe81613ad8565b92915050565b60008060408385031215613b1b57613b1a613a75565b5b6000613b2985828601613ac3565b9250506020613b3a85828601613aef565b9150509250929050565b60008115159050919050565b613b5981613b44565b82525050565b6000602082019050613b746000830184613b50565b92915050565b6000819050919050565b6000613b9f613b9a613b9584613a7a565b613b7a565b613a7a565b9050919050565b6000613bb182613b84565b9050919050565b6000613bc382613ba6565b9050919050565b613bd381613bb8565b82525050565b6000602082019050613bee6000830184613bca565b92915050565b600060208284031215613c0a57613c09613a75565b5b6000613c1884828501613ac3565b91505092915050565b600080600060608486031215613c3a57613c39613a75565b5b6000613c4886828701613ac3565b9350506020613c5986828701613ac3565b9250506040613c6a86828701613aef565b9150509250925092565b600060208284031215613c8a57613c89613a75565b5b6000613c9884828501613aef565b91505092915050565b613caa81613b44565b8114613cb557600080fd5b50565b600081359050613cc781613ca1565b92915050565b600060208284031215613ce357613ce2613a75565b5b6000613cf184828501613cb8565b91505092915050565b600060ff82169050919050565b613d1081613cfa565b82525050565b6000602082019050613d2b6000830184613d07565b92915050565b613d3a81613a9a565b82525050565b6000602082019050613d556000830184613d31565b92915050565b60008060408385031215613d7257613d71613a75565b5b6000613d8085828601613aef565b9250506020613d9185828601613aef565b9150509250929050565b60008060408385031215613db257613db1613a75565b5b6000613dc085828601613ac3565b9250506020613dd185828601613cb8565b9150509250929050565b60008060408385031215613df257613df1613a75565b5b6000613e0085828601613ac3565b9250506020613e1185828601613ac3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e6257607f821691505b602082108103613e7557613e74613e1b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ed76028836139ce565b9150613ee282613e7b565b604082019050919050565b60006020820190508181036000830152613f0681613eca565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f436020836139ce565b9150613f4e82613f0d565b602082019050919050565b60006020820190508181036000830152613f7281613f36565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613fff57808604811115613fdb57613fda613f79565b5b6001851615613fea5780820291505b8081029050613ff885613fa8565b9450613fbf565b94509492505050565b60008261401857600190506140d4565b8161402657600090506140d4565b816001811461403c576002811461404657614075565b60019150506140d4565b60ff84111561405857614057613f79565b5b8360020a91508482111561406f5761406e613f79565b5b506140d4565b5060208310610133831016604e8410600b84101617156140aa5782820a9050838111156140a5576140a4613f79565b5b6140d4565b6140b78484846001613fb5565b925090508184048111156140ce576140cd613f79565b5b81810290505b9392505050565b60006140e68261398f565b91506140f183613cfa565b925061411e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614008565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141608261398f565b915061416b8361398f565b92508261417b5761417a614126565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b60006141e2602d836139ce565b91506141ed82614186565b604082019050919050565b60006020820190508181036000830152614211816141d5565b9050919050565b60006142238261398f565b915061422e8361398f565b925082820261423c8161398f565b9150828204841483151761425357614252613f79565b5b5092915050565b7f505443442077616c6c657420697320616c72656164792074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006142b66023836139ce565b91506142c18261425a565b604082019050919050565b600060208201905081810360008301526142e5816142a9565b9050919050565b7f505443442077616c6c65742063616e6e6f7420626520746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143486026836139ce565b9150614353826142ec565b604082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b60006143da602d836139ce565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b600061441b8261398f565b91506144268361398f565b925082820190508082111561443e5761443d613f79565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b60006144a06032836139ce565b91506144ab82614444565b604082019050919050565b600060208201905081810360008301526144cf81614493565b9050919050565b7f4665652063616e6e6f74206578636565642031252e0000000000000000000000600082015250565b600061450c6015836139ce565b9150614517826144d6565b602082019050919050565b6000602082019050818103600083015261453b816144ff565b9050919050565b60006040820190506145576000830185613999565b6145646020830184613999565b9392505050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b60006145c76024836139ce565b91506145d28261456b565b604082019050919050565b600060208201905081810360008301526145f6816145ba565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b60006146336017836139ce565b915061463e826145fd565b602082019050919050565b6000602082019050818103600083015261466281614626565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b600061469f6018836139ce565b91506146aa82614669565b602082019050919050565b600060208201905081810360008301526146ce81614692565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006147316025836139ce565b915061473c826146d5565b604082019050919050565b6000602082019050818103600083015261476081614724565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b60006147c3603f836139ce565b91506147ce82614767565b604082019050919050565b600060208201905081810360008301526147f2816147b6565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614855603f836139ce565b9150614860826147f9565b604082019050919050565b6000602082019050818103600083015261488481614848565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006148e7602a836139ce565b91506148f28261488b565b604082019050919050565b60006020820190508181036000830152614916816148da565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006149796022836139ce565b91506149848261491d565b604082019050919050565b600060208201905081810360008301526149a88161496c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a0b6026836139ce565b9150614a16826149af565b604082019050919050565b60006020820190508181036000830152614a3a816149fe565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000614a9d6037836139ce565b9150614aa882614a41565b604082019050919050565b60006020820190508181036000830152614acc81614a90565b9050919050565b600081519050614ae281613ad8565b92915050565b600060208284031215614afe57614afd613a75565b5b6000614b0c84828501614ad3565b91505092915050565b6000604082019050614b2a6000830185613d31565b614b376020830184613999565b9392505050565b600081519050614b4d81613ca1565b92915050565b600060208284031215614b6957614b68613a75565b5b6000614b7784828501614b3e565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614bdc6024836139ce565b9150614be782614b80565b604082019050919050565b60006020820190508181036000830152614c0b81614bcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c6e6022836139ce565b9150614c7982614c12565b604082019050919050565b60006020820190508181036000830152614c9d81614c61565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d006025836139ce565b9150614d0b82614ca4565b604082019050919050565b60006020820190508181036000830152614d2f81614cf3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d926023836139ce565b9150614d9d82614d36565b604082019050919050565b60006020820190508181036000830152614dc181614d85565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000614dfe6018836139ce565b9150614e0982614dc8565b602082019050919050565b60006020820190508181036000830152614e2d81614df1565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000614e90603b836139ce565b9150614e9b82614e34565b604082019050919050565b60006020820190508181036000830152614ebf81614e83565b9050919050565b6000614ed18261398f565b9150614edc8361398f565b9250828203905081811115614ef457614ef3613f79565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000614f566030836139ce565b9150614f6182614efa565b604082019050919050565b60006020820190508181036000830152614f8581614f49565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614fc2601d836139ce565b9150614fcd82614f8c565b602082019050919050565b60006020820190508181036000830152614ff181614fb5565b9050919050565b600081905092915050565b50565b6000615013600083614ff8565b915061501e82615003565b600082019050919050565b600061503482615006565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061509a6026836139ce565b91506150a58261503e565b604082019050919050565b600060208201905081810360008301526150c98161508d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061513d81613aac565b92915050565b60006020828403121561515957615158613a75565b5b60006151678482850161512e565b91505092915050565b6000819050919050565b600061519561519061518b84615170565b613b7a565b61398f565b9050919050565b6151a58161517a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151e081613a9a565b82525050565b60006151f283836151d7565b60208301905092915050565b6000602082019050919050565b6000615216826151ab565b61522081856151b6565b935061522b836151c7565b8060005b8381101561525c57815161524388826151e6565b975061524e836151fe565b92505060018101905061522f565b5085935050505092915050565b600060a08201905061527e6000830188613999565b61528b602083018761519c565b818103604083015261529d818661520b565b90506152ac6060830185613d31565b6152b96080830184613999565b969550505050505056fea26469706673582212204940d6397820c2749c12344614d74ebc6875f395029b485b141535b61730bbf164736f6c63430008110033
Deployed Bytecode Sourcemap
15860:13044:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26972:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11145:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12059:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15941:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11466:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28760:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25380:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12236:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25958:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20421:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25670:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16124:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26923:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11365:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12817:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15989:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20745:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19920:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27337:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27018:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20053:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16270:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11582:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28353:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20847:253;;;;;;;;;;;;;:::i;:::-;;10274:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11253:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13040:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26705:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11717:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25423:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24360:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16089:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27656:689;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20812:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19622:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20778:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26306:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11900:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24173:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16196:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10488:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16162:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19149:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26972:39;;;;:::o;11145:100::-;11199:13;11232:5;11225:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11145:100;:::o;12059:169::-;12142:4;12159:39;12168:12;:10;:12::i;:::-;12182:7;12191:6;12159:8;:39::i;:::-;12216:4;12209:11;;12059:169;;;;:::o;15941:41::-;;;;;;;;;;;;;:::o;11466:108::-;11527:7;11554:12;;11547:19;;11466:108;:::o;28760:141::-;28835:4;28859:25;:34;28885:7;28859:34;;;;;;;;;;;;;;;;;;;;;;;;;28852:41;;28760:141;;;:::o;25380:36::-;;;;;;;;;;;;;:::o;12236:573::-;12376:4;12393:24;12420:11;:19;12432:6;12420:19;;;;;;;;;;;;;;;:33;12440:12;:10;:12::i;:::-;12420:33;;;;;;;;;;;;;;;;12393:60;;12488:17;12468:16;:37;12464:265;;12550:6;12530:16;:26;;12522:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12645:57;12654:6;12662:12;:10;:12::i;:::-;12695:6;12676:16;:25;12645:8;:57::i;:::-;12464:265;12741:36;12751:6;12759:9;12770:6;12741:9;:36::i;:::-;12797:4;12790:11;;;12236:573;;;;;:::o;25958:340::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26109:3:::1;26094:10;:8;:10::i;:::-;26088:2;:16;;;;:::i;:::-;26071:13;:11;:13::i;:::-;:34;;;;:::i;:::-;26070:42;;;;:::i;:::-;26050:16;:62;;26042:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;26217:10;:8;:10::i;:::-;26211:2;:16;;;;:::i;:::-;26191;:37;;;;:::i;:::-;26173:15;:55;;;;26246:44;26274:15;;26246:44;;;;;;:::i;:::-;;;;;;;;25958:340:::0;:::o;20421:316::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20517:9:::1;;;;;;;;;;;20503:23;;:10;:23;;::::0;20495:71:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20607:1;20585:24;;:10;:24;;::::0;20577:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20674:10;20662:9;;:22;;;;;;;;;;;;;;;;;;20702:27;20719:9;;;;;;;;;;;20702:27;;;;;;:::i;:::-;;;;;;;;20421:316:::0;:::o;25670:280::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25764:21:::1;;;;;;;;;;;25754:31;;:6;:31;;::::0;25746:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25869:6;25845:21;;:30;;;;;;;;;;;;;;;;;;25893:49;25920:21;;;;;;;;;;;25893:49;;;;;;:::i;:::-;;;;;;;;25670:280:::0;:::o;16124:29::-;;;;:::o;26923:42::-;;;;;;;;;;;;;:::o;11365:93::-;11423:5;11448:2;11441:9;;11365:93;:::o;12817:215::-;12905:4;12922:80;12931:12;:10;:12::i;:::-;12945:7;12991:10;12954:11;:25;12966:12;:10;:12::i;:::-;12954:25;;;;;;;;;;;;;;;:34;12980:7;12954:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12922:8;:80::i;:::-;13020:4;13013:11;;12817:215;;;;:::o;15989:29::-;;;;;;;;;;;;;:::o;20745:26::-;;;;;;;;;;;;;:::o;19920:125::-;19985:4;20009:19;:28;20029:7;20009:28;;;;;;;;;;;;;;;;;;;;;;;;;20002:35;;19920:125;;;:::o;27337:311::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27436:26:::1;;;;;;;;;;;27426:36;;:6;:36;;::::0;27418:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27557:6;27528:26;;:35;;;;;;;;;;;;;;;;;;27581:59;27613:26;;;;;;;;;;;27581:59;;;;;;:::i;:::-;;;;;;;;27337:311:::0;:::o;27018:40::-;;;;:::o;20053:360::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20176:1:::1;20158:14;:19;;20150:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20239:1;20222:13;:18;;20214:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20295:14;20279:13;:30;;;;20335:13;20320:12;:28;;;;20366:39;20377:13;;20392:12;;20366:39;;;;;;;:::i;:::-;;;;;;;;20053:360:::0;;:::o;16270:26::-;;;;;;;;;;;;;:::o;11582:127::-;11656:7;11683:9;:18;11693:7;11683:18;;;;;;;;;;;;;;;;11676:25;;11582:127;;;:::o;28353:399::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28501:7:::1;28463:45;;:25;:34;28489:7;28463:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;::::0;28454:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28587:4;28568:24;;:7;:24;;::::0;28560:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28670:7;28633:25;:34;28659:7;28633:34;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;28727:7;28695:49;;;28736:7;28695:49;;;;;;:::i;:::-;;;;;;;;28353:399:::0;;:::o;20847:253::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20910:14:::1;;;;;;;;;;;20909:15;20901:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20981:4;20964:14;;:21;;;;;;;;;;;;;;;;;;21010:4;20996:11;;:18;;;;;;;;;;;;;;;;;;21040:12;21025;:27;;;;21077:15;21063:11;:29;;;;20847:253::o:0;10274:79::-;10312:7;10339:6;;;;;;;;;;;10332:13;;10274:79;:::o;11253:104::-;11309:13;11342:7;11335:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11253:104;:::o;13040:413::-;13133:4;13150:24;13177:11;:25;13189:12;:10;:12::i;:::-;13177:25;;;;;;;;;;;;;;;:34;13203:7;13177:34;;;;;;;;;;;;;;;;13150:61;;13250:15;13230:16;:35;;13222:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13343:67;13352:12;:10;:12::i;:::-;13366:7;13394:15;13375:16;:34;13343:8;:67::i;:::-;13441:4;13434:11;;;13040:413;;;;:::o;26705:145::-;26780:4;26804:29;:38;26834:7;26804:38;;;;;;;;;;;;;;;;;;;;;;;;;26797:45;;26705:145;;;:::o;11717:175::-;11803:4;11820:42;11830:12;:10;:12::i;:::-;11844:9;11855:6;11820:9;:42::i;:::-;11880:4;11873:11;;11717:175;;;;:::o;25423:30::-;;;;:::o;24360:304::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24475:9:::1;24459:13;:11;:13::i;:::-;:25;;;;:::i;:::-;24447:9;:37;24439:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;24584:9;24563:18;:30;;;;24611:45;24637:18;;24611:45;;;;;;:::i;:::-;;;;;;;;24360:304:::0;:::o;16089:28::-;;;;:::o;27656:689::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27879:5:::1;27864:10;:8;:10::i;:::-;27858:2;:16;;;;:::i;:::-;27841:13;:11;:13::i;:::-;:34;;;;:::i;:::-;27840:44;;;;:::i;:::-;27811:24;:73;;:164;;;;;27970:5;27955:10;:8;:10::i;:::-;27949:2;:16;;;;:::i;:::-;27932:13;:11;:13::i;:::-;:34;;;;:::i;:::-;27931:44;;;;:::i;:::-;27902:25;:73;;27811:164;27789:278;;;;;;;;;;;;:::i;:::-;;;;;;;;;28141:10;:8;:10::i;:::-;28135:2;:16;;;;:::i;:::-;28106:24;:46;;;;:::i;:::-;28079:23;:73;;;;28225:10;:8;:10::i;:::-;28219:2;:16;;;;:::i;:::-;28190:25;:46;;;;:::i;:::-;28163:24;:73;;;;28254:83;28287:23;;28312:24;;28254:83;;;;;;;:::i;:::-;;;;;;;;27656:689:::0;;:::o;20812:26::-;;;;:::o;19622:290::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19748:8:::1;19716:40;;:19;:28;19736:7;19716:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;19708:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19844:8;19813:19;:28;19833:7;19813:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19886:7;19870:34;;;19895:8;19870:34;;;;;;:::i;:::-;;;;;;;;19622:290:::0;;:::o;20778:27::-;;;;:::o;26306:391::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26448:7:::1;26406:49;;:29;:38;26436:7;26406:38;;;;;;;;;;;;;;;;;;;;;;;;;:49;;::::0;26397:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26533:4;26514:24;;:7;:24;;::::0;26506:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26620:7;26579:29;:38;26609:7;26579:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;26672:7;26645:44;;;26681:7;26645:44;;;;;;:::i;:::-;;;;;;;;26306:391:::0;;:::o;11900:151::-;11989:7;12016:11;:18;12028:5;12016:18;;;;;;;;;;;;;;;:27;12035:7;12016:27;;;;;;;;;;;;;;;;12009:34;;11900:151;;;;:::o;24173:179::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24264:8:::1;24249:23;;:11;;;;;;;;;;;:23;;::::0;24241:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24336:8;24322:11;;:22;;;;;;;;;;;;;;;;;;24173:179:::0;:::o;16196:34::-;;;;:::o;10488:244::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10597:1:::1;10577:22;;:8;:22;;::::0;10569:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10687:8;10658:38;;10679:6;;;;;;;;;;;10658:38;;;;;;;;;;;;10716:8;10707:6;;:17;;;;;;;;;;;;;;;;;;10488:244:::0;:::o;16162:25::-;;;;;;;;;;;;;:::o;19149:465::-;10411:12;:10;:12::i;:::-;10401:22;;:6;;;;;;;;;;;:22;;;10393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19245:4:::1;19228:22;;:5;:22;;::::0;19220:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19342:3;19325:21;;:5;:21;;::::0;19321:127:::1;;19363:52;19393:21;19371:10;19363:29;;;;:52;;;;:::i;:::-;;19430:7;;19321:127;19458:17;19485:5;19458:33;;19502:15;19520:10;:20;;;19549:4;19520:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19502:53;;19566:10;:19;;;19586:10;19598:7;19566:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19209:405;;10471:1;19149:465:::0;:::o;9597:98::-;9650:7;9677:10;9670:17;;9597:98;:::o;15208:380::-;15361:1;15344:19;;:5;:19;;;15336:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15442:1;15423:21;;:7;:21;;;15415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15526:6;15496:11;:18;15508:5;15496:18;;;;;;;;;;;;;;;:27;15515:7;15496:27;;;;;;;;;;;;;;;:36;;;;15564:7;15548:32;;15557:5;15548:32;;;15573:6;15548:32;;;;;;:::i;:::-;;;;;;;;15208:380;;;:::o;21108:3057::-;21221:1;21205:18;;:4;:18;;;21197:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21298:1;21284:16;;:2;:16;;;21276:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21359:14;;;;;;;;;;;:43;;;;21377:19;:25;21397:4;21377:25;;;;;;;;;;;;;;;;;;;;;;;;;21359:43;:70;;;;21406:19;:23;21426:2;21406:23;;;;;;;;;;;;;;;;;;;;;;;;;21359:70;21351:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;21492:1;21482:6;:11;21478:93;;21510:28;21526:4;21532:2;21536:1;21510:15;:28::i;:::-;21553:7;;21478:93;21587:26;;;;;;;;;;;21583:752;;;21653:13;;;;;;;;;;;21645:21;;:4;:21;;;:44;;;;21676:13;;;;;;;;;;;21670:19;;:2;:19;;;21645:44;21644:99;;;;;21712:25;:31;21738:4;21712:31;;;;;;;;;;;;;;;;;;;;;;;;;21711:32;21644:99;:151;;;;;21766:25;:29;21792:2;21766:29;;;;;;;;;;;;;;;;;;;;;;;;;21765:30;21644:151;21640:684;;;21842:13;;;;;;;;;;;21834:21;;:4;:21;;;21830:479;;21924:23;;21914:6;:33;;21880:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;21830:479;;;22153:24;;22143:6;:34;;22109:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;21830:479;21640:684;21583:752;22341:28;22372:24;22390:4;22372:9;:24::i;:::-;22341:55;;22409:12;22448:18;;22424:20;:42;;22409:57;;22483:7;:33;;;;;22508:8;;;;;;;;;;;22507:9;22483:33;:69;;;;;22539:13;;;;;;;;;;;22533:19;;:2;:19;;;22483:69;:97;;;;;22569:11;;;;;;;;;;;22483:97;22479:247;;;22618:4;22607:8;;:15;;;;;;;;;;;;;;;;;;22639:37;22655:20;22639:15;:37::i;:::-;22709:5;22698:8;;:16;;;;;;;;;;;;;;;;;;22479:247;22738:18;22771:19;:25;22791:4;22771:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22800:19;:23;22820:2;22800:23;;;;;;;;;;;;;;;;;;;;;;;;;22771:52;:64;;;;22827:8;;;;;;;;;;;22771:64;22767:679;;;22865:1;22852:14;;22767:679;;;22896:13;;;;;;;;;;;22888:21;;:4;:21;;;22884:562;;22960:1;22945:12;;:16;;;;:::i;:::-;22930:12;:31;22926:248;;;22994:2;22981:15;;22926:248;;;23053:4;23039:11;;:18;;;;:::i;:::-;23021:15;:36;23018:156;;;23090:12;;23077:25;;23018:156;;;23156:2;23142:16;;23018:156;22926:248;22884:562;;;23201:13;;;;;;;;;;;23195:19;;:2;:19;;;23191:255;;23266:4;23252:11;;:18;;;;:::i;:::-;23234:15;:36;23231:157;;;23303:13;;23290:26;;23231:157;;;23370:2;23356:16;;23231:157;23191:255;;;23433:1;23420:14;;23191:255;22884:562;22767:679;23475:1;23462:10;:14;23458:183;;;23493:12;23532:3;23518:10;23509:6;:19;;;;:::i;:::-;23508:27;;;;:::i;:::-;23493:42;;23568:4;23559:6;:13;;;;:::i;:::-;23550:22;;23587:42;23603:4;23617;23624;23587:15;:42::i;:::-;23478:163;23458:183;23657:21;;;;;;;;;;;23653:459;;;23710:29;:35;23740:4;23710:35;;;;;;;;;;;;;;;;;;;;;;;;;23709:36;:92;;;;;23768:29;:33;23798:2;23768:33;;;;;;;;;;;;;;;;;;;;;;;;;23767:34;23709:92;:132;;;;;23828:13;;;;;;;;;;;23822:19;;:2;:19;;;;23709:132;23705:396;;;23876:15;23895:13;23905:2;23895:9;:13::i;:::-;23876:32;;23977:15;;23967:6;23957:7;:16;;;;:::i;:::-;:35;;23927:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;23857:244;23705:396;23653:459;24124:33;24140:4;24146:2;24150:6;24124:15;:33::i;:::-;21186:2979;;;21108:3057;;;;:::o;9291:266::-;9370:4;9419:6;9394:21;:31;;9386:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9473:12;9491:9;:14;;9513:6;9491:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9472:52;;;9542:7;9535:14;;;9291:266;;;;:::o;13461:733::-;13619:1;13601:20;;:6;:20;;;13593:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13703:1;13682:23;;:9;:23;;;13674:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13758:47;13779:6;13787:9;13798:6;13758:20;:47::i;:::-;13818:21;13842:9;:17;13852:6;13842:17;;;;;;;;;;;;;;;;13818:41;;13895:6;13878:13;:23;;13870:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14016:6;14000:13;:22;13980:9;:17;13990:6;13980:17;;;;;;;;;;;;;;;:42;;;;14068:6;14044:9;:20;14054:9;14044:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14109:9;14092:35;;14101:6;14092:35;;;14120:6;14092:35;;;;;;:::i;:::-;;;;;;;;14140:46;14160:6;14168:9;14179:6;14140:19;:46::i;:::-;13582:612;13461:733;;;:::o;24672:631::-;24737:22;24762:21;24737:46;;24796:21;24834:1;24820:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24796:40;;24865:4;24847;24852:1;24847:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24891:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24881:4;24886:1;24881:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24926:15;;;;;;;;;;;:66;;;25007:11;25033:1;25049:4;25076;25096:15;24926:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25125:18;25170:14;25146:21;:38;;;;:::i;:::-;25125:59;;25197:40;25226:10;25205:9;;;;;;;;;;;25197:28;;;;:40;;;;:::i;:::-;;25255;25271:11;25284:10;25255:40;;;;;;;:::i;:::-;;;;;;;;24726:577;;;24672:631;:::o;15596:125::-;;;;:::o;15729:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:329::-;4830:6;4879:2;4867:9;4858:7;4854:23;4850:32;4847:119;;;4885:79;;:::i;:::-;4847:119;5005:1;5030:53;5075:7;5066:6;5055:9;5051:22;5030:53;:::i;:::-;5020:63;;4976:117;4771:329;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:116::-;6136:21;6151:5;6136:21;:::i;:::-;6129:5;6126:32;6116:60;;6172:1;6169;6162:12;6116:60;6066:116;:::o;6188:133::-;6231:5;6269:6;6256:20;6247:29;;6285:30;6309:5;6285:30;:::i;:::-;6188:133;;;;:::o;6327:323::-;6383:6;6432:2;6420:9;6411:7;6407:23;6403:32;6400:119;;;6438:79;;:::i;:::-;6400:119;6558:1;6583:50;6625:7;6616:6;6605:9;6601:22;6583:50;:::i;:::-;6573:60;;6529:114;6327:323;;;;:::o;6656:86::-;6691:7;6731:4;6724:5;6720:16;6709:27;;6656:86;;;:::o;6748:112::-;6831:22;6847:5;6831:22;:::i;:::-;6826:3;6819:35;6748:112;;:::o;6866:214::-;6955:4;6993:2;6982:9;6978:18;6970:26;;7006:67;7070:1;7059:9;7055:17;7046:6;7006:67;:::i;:::-;6866:214;;;;:::o;7086:118::-;7173:24;7191:5;7173:24;:::i;:::-;7168:3;7161:37;7086:118;;:::o;7210:222::-;7303:4;7341:2;7330:9;7326:18;7318:26;;7354:71;7422:1;7411:9;7407:17;7398:6;7354:71;:::i;:::-;7210:222;;;;:::o;7438:474::-;7506:6;7514;7563:2;7551:9;7542:7;7538:23;7534:32;7531:119;;;7569:79;;:::i;:::-;7531:119;7689:1;7714:53;7759:7;7750:6;7739:9;7735:22;7714:53;:::i;:::-;7704:63;;7660:117;7816:2;7842:53;7887:7;7878:6;7867:9;7863:22;7842:53;:::i;:::-;7832:63;;7787:118;7438:474;;;;;:::o;7918:468::-;7983:6;7991;8040:2;8028:9;8019:7;8015:23;8011:32;8008:119;;;8046:79;;:::i;:::-;8008:119;8166:1;8191:53;8236:7;8227:6;8216:9;8212:22;8191:53;:::i;:::-;8181:63;;8137:117;8293:2;8319:50;8361:7;8352:6;8341:9;8337:22;8319:50;:::i;:::-;8309:60;;8264:115;7918:468;;;;;:::o;8392:474::-;8460:6;8468;8517:2;8505:9;8496:7;8492:23;8488:32;8485:119;;;8523:79;;:::i;:::-;8485:119;8643:1;8668:53;8713:7;8704:6;8693:9;8689:22;8668:53;:::i;:::-;8658:63;;8614:117;8770:2;8796:53;8841:7;8832:6;8821:9;8817:22;8796:53;:::i;:::-;8786:63;;8741:118;8392:474;;;;;:::o;8872:180::-;8920:77;8917:1;8910:88;9017:4;9014:1;9007:15;9041:4;9038:1;9031:15;9058:320;9102:6;9139:1;9133:4;9129:12;9119:22;;9186:1;9180:4;9176:12;9207:18;9197:81;;9263:4;9255:6;9251:17;9241:27;;9197:81;9325:2;9317:6;9314:14;9294:18;9291:38;9288:84;;9344:18;;:::i;:::-;9288:84;9109:269;9058:320;;;:::o;9384:227::-;9524:34;9520:1;9512:6;9508:14;9501:58;9593:10;9588:2;9580:6;9576:15;9569:35;9384:227;:::o;9617:366::-;9759:3;9780:67;9844:2;9839:3;9780:67;:::i;:::-;9773:74;;9856:93;9945:3;9856:93;:::i;:::-;9974:2;9969:3;9965:12;9958:19;;9617:366;;;:::o;9989:419::-;10155:4;10193:2;10182:9;10178:18;10170:26;;10242:9;10236:4;10232:20;10228:1;10217:9;10213:17;10206:47;10270:131;10396:4;10270:131;:::i;:::-;10262:139;;9989:419;;;:::o;10414:182::-;10554:34;10550:1;10542:6;10538:14;10531:58;10414:182;:::o;10602:366::-;10744:3;10765:67;10829:2;10824:3;10765:67;:::i;:::-;10758:74;;10841:93;10930:3;10841:93;:::i;:::-;10959:2;10954:3;10950:12;10943:19;;10602:366;;;:::o;10974:419::-;11140:4;11178:2;11167:9;11163:18;11155:26;;11227:9;11221:4;11217:20;11213:1;11202:9;11198:17;11191:47;11255:131;11381:4;11255:131;:::i;:::-;11247:139;;10974:419;;;:::o;11399:180::-;11447:77;11444:1;11437:88;11544:4;11541:1;11534:15;11568:4;11565:1;11558:15;11585:102;11627:8;11674:5;11671:1;11667:13;11646:34;;11585:102;;;:::o;11693:848::-;11754:5;11761:4;11785:6;11776:15;;11809:5;11800:14;;11823:712;11844:1;11834:8;11831:15;11823:712;;;11939:4;11934:3;11930:14;11924:4;11921:24;11918:50;;;11948:18;;:::i;:::-;11918:50;11998:1;11988:8;11984:16;11981:451;;;12413:4;12406:5;12402:16;12393:25;;11981:451;12463:4;12457;12453:15;12445:23;;12493:32;12516:8;12493:32;:::i;:::-;12481:44;;11823:712;;;11693:848;;;;;;;:::o;12547:1073::-;12601:5;12792:8;12782:40;;12813:1;12804:10;;12815:5;;12782:40;12841:4;12831:36;;12858:1;12849:10;;12860:5;;12831:36;12927:4;12975:1;12970:27;;;;13011:1;13006:191;;;;12920:277;;12970:27;12988:1;12979:10;;12990:5;;;13006:191;13051:3;13041:8;13038:17;13035:43;;;13058:18;;:::i;:::-;13035:43;13107:8;13104:1;13100:16;13091:25;;13142:3;13135:5;13132:14;13129:40;;;13149:18;;:::i;:::-;13129:40;13182:5;;;12920:277;;13306:2;13296:8;13293:16;13287:3;13281:4;13278:13;13274:36;13256:2;13246:8;13243:16;13238:2;13232:4;13229:12;13225:35;13209:111;13206:246;;;13362:8;13356:4;13352:19;13343:28;;13397:3;13390:5;13387:14;13384:40;;;13404:18;;:::i;:::-;13384:40;13437:5;;13206:246;13477:42;13515:3;13505:8;13499:4;13496:1;13477:42;:::i;:::-;13462:57;;;;13551:4;13546:3;13542:14;13535:5;13532:25;13529:51;;;13560:18;;:::i;:::-;13529:51;13609:4;13602:5;13598:16;13589:25;;12547:1073;;;;;;:::o;13626:281::-;13684:5;13708:23;13726:4;13708:23;:::i;:::-;13700:31;;13752:25;13768:8;13752:25;:::i;:::-;13740:37;;13796:104;13833:66;13823:8;13817:4;13796:104;:::i;:::-;13787:113;;13626:281;;;;:::o;13913:180::-;13961:77;13958:1;13951:88;14058:4;14055:1;14048:15;14082:4;14079:1;14072:15;14099:185;14139:1;14156:20;14174:1;14156:20;:::i;:::-;14151:25;;14190:20;14208:1;14190:20;:::i;:::-;14185:25;;14229:1;14219:35;;14234:18;;:::i;:::-;14219:35;14276:1;14273;14269:9;14264:14;;14099:185;;;;:::o;14290:232::-;14430:34;14426:1;14418:6;14414:14;14407:58;14499:15;14494:2;14486:6;14482:15;14475:40;14290:232;:::o;14528:366::-;14670:3;14691:67;14755:2;14750:3;14691:67;:::i;:::-;14684:74;;14767:93;14856:3;14767:93;:::i;:::-;14885:2;14880:3;14876:12;14869:19;;14528:366;;;:::o;14900:419::-;15066:4;15104:2;15093:9;15089:18;15081:26;;15153:9;15147:4;15143:20;15139:1;15128:9;15124:17;15117:47;15181:131;15307:4;15181:131;:::i;:::-;15173:139;;14900:419;;;:::o;15325:410::-;15365:7;15388:20;15406:1;15388:20;:::i;:::-;15383:25;;15422:20;15440:1;15422:20;:::i;:::-;15417:25;;15477:1;15474;15470:9;15499:30;15517:11;15499:30;:::i;:::-;15488:41;;15678:1;15669:7;15665:15;15662:1;15659:22;15639:1;15632:9;15612:83;15589:139;;15708:18;;:::i;:::-;15589:139;15373:362;15325:410;;;;:::o;15741:222::-;15881:34;15877:1;15869:6;15865:14;15858:58;15950:5;15945:2;15937:6;15933:15;15926:30;15741:222;:::o;15969:366::-;16111:3;16132:67;16196:2;16191:3;16132:67;:::i;:::-;16125:74;;16208:93;16297:3;16208:93;:::i;:::-;16326:2;16321:3;16317:12;16310:19;;15969:366;;;:::o;16341:419::-;16507:4;16545:2;16534:9;16530:18;16522:26;;16594:9;16588:4;16584:20;16580:1;16569:9;16565:17;16558:47;16622:131;16748:4;16622:131;:::i;:::-;16614:139;;16341:419;;;:::o;16766:225::-;16906:34;16902:1;16894:6;16890:14;16883:58;16975:8;16970:2;16962:6;16958:15;16951:33;16766:225;:::o;16997:366::-;17139:3;17160:67;17224:2;17219:3;17160:67;:::i;:::-;17153:74;;17236:93;17325:3;17236:93;:::i;:::-;17354:2;17349:3;17345:12;17338:19;;16997:366;;;:::o;17369:419::-;17535:4;17573:2;17562:9;17558:18;17550:26;;17622:9;17616:4;17612:20;17608:1;17597:9;17593:17;17586:47;17650:131;17776:4;17650:131;:::i;:::-;17642:139;;17369:419;;;:::o;17794:232::-;17934:34;17930:1;17922:6;17918:14;17911:58;18003:15;17998:2;17990:6;17986:15;17979:40;17794:232;:::o;18032:366::-;18174:3;18195:67;18259:2;18254:3;18195:67;:::i;:::-;18188:74;;18271:93;18360:3;18271:93;:::i;:::-;18389:2;18384:3;18380:12;18373:19;;18032:366;;;:::o;18404:419::-;18570:4;18608:2;18597:9;18593:18;18585:26;;18657:9;18651:4;18647:20;18643:1;18632:9;18628:17;18621:47;18685:131;18811:4;18685:131;:::i;:::-;18677:139;;18404:419;;;:::o;18829:191::-;18869:3;18888:20;18906:1;18888:20;:::i;:::-;18883:25;;18922:20;18940:1;18922:20;:::i;:::-;18917:25;;18965:1;18962;18958:9;18951:16;;18986:3;18983:1;18980:10;18977:36;;;18993:18;;:::i;:::-;18977:36;18829:191;;;;:::o;19026:237::-;19166:34;19162:1;19154:6;19150:14;19143:58;19235:20;19230:2;19222:6;19218:15;19211:45;19026:237;:::o;19269:366::-;19411:3;19432:67;19496:2;19491:3;19432:67;:::i;:::-;19425:74;;19508:93;19597:3;19508:93;:::i;:::-;19626:2;19621:3;19617:12;19610:19;;19269:366;;;:::o;19641:419::-;19807:4;19845:2;19834:9;19830:18;19822:26;;19894:9;19888:4;19884:20;19880:1;19869:9;19865:17;19858:47;19922:131;20048:4;19922:131;:::i;:::-;19914:139;;19641:419;;;:::o;20066:171::-;20206:23;20202:1;20194:6;20190:14;20183:47;20066:171;:::o;20243:366::-;20385:3;20406:67;20470:2;20465:3;20406:67;:::i;:::-;20399:74;;20482:93;20571:3;20482:93;:::i;:::-;20600:2;20595:3;20591:12;20584:19;;20243:366;;;:::o;20615:419::-;20781:4;20819:2;20808:9;20804:18;20796:26;;20868:9;20862:4;20858:20;20854:1;20843:9;20839:17;20832:47;20896:131;21022:4;20896:131;:::i;:::-;20888:139;;20615:419;;;:::o;21040:332::-;21161:4;21199:2;21188:9;21184:18;21176:26;;21212:71;21280:1;21269:9;21265:17;21256:6;21212:71;:::i;:::-;21293:72;21361:2;21350:9;21346:18;21337:6;21293:72;:::i;:::-;21040:332;;;;;:::o;21378:223::-;21518:34;21514:1;21506:6;21502:14;21495:58;21587:6;21582:2;21574:6;21570:15;21563:31;21378:223;:::o;21607:366::-;21749:3;21770:67;21834:2;21829:3;21770:67;:::i;:::-;21763:74;;21846:93;21935:3;21846:93;:::i;:::-;21964:2;21959:3;21955:12;21948:19;;21607:366;;;:::o;21979:419::-;22145:4;22183:2;22172:9;22168:18;22160:26;;22232:9;22226:4;22222:20;22218:1;22207:9;22203:17;22196:47;22260:131;22386:4;22260:131;:::i;:::-;22252:139;;21979:419;;;:::o;22404:173::-;22544:25;22540:1;22532:6;22528:14;22521:49;22404:173;:::o;22583:366::-;22725:3;22746:67;22810:2;22805:3;22746:67;:::i;:::-;22739:74;;22822:93;22911:3;22822:93;:::i;:::-;22940:2;22935:3;22931:12;22924:19;;22583:366;;;:::o;22955:419::-;23121:4;23159:2;23148:9;23144:18;23136:26;;23208:9;23202:4;23198:20;23194:1;23183:9;23179:17;23172:47;23236:131;23362:4;23236:131;:::i;:::-;23228:139;;22955:419;;;:::o;23380:174::-;23520:26;23516:1;23508:6;23504:14;23497:50;23380:174;:::o;23560:366::-;23702:3;23723:67;23787:2;23782:3;23723:67;:::i;:::-;23716:74;;23799:93;23888:3;23799:93;:::i;:::-;23917:2;23912:3;23908:12;23901:19;;23560:366;;;:::o;23932:419::-;24098:4;24136:2;24125:9;24121:18;24113:26;;24185:9;24179:4;24175:20;24171:1;24160:9;24156:17;24149:47;24213:131;24339:4;24213:131;:::i;:::-;24205:139;;23932:419;;;:::o;24357:224::-;24497:34;24493:1;24485:6;24481:14;24474:58;24566:7;24561:2;24553:6;24549:15;24542:32;24357:224;:::o;24587:366::-;24729:3;24750:67;24814:2;24809:3;24750:67;:::i;:::-;24743:74;;24826:93;24915:3;24826:93;:::i;:::-;24944:2;24939:3;24935:12;24928:19;;24587:366;;;:::o;24959:419::-;25125:4;25163:2;25152:9;25148:18;25140:26;;25212:9;25206:4;25202:20;25198:1;25187:9;25183:17;25176:47;25240:131;25366:4;25240:131;:::i;:::-;25232:139;;24959:419;;;:::o;25384:250::-;25524:34;25520:1;25512:6;25508:14;25501:58;25593:33;25588:2;25580:6;25576:15;25569:58;25384:250;:::o;25640:366::-;25782:3;25803:67;25867:2;25862:3;25803:67;:::i;:::-;25796:74;;25879:93;25968:3;25879:93;:::i;:::-;25997:2;25992:3;25988:12;25981:19;;25640:366;;;:::o;26012:419::-;26178:4;26216:2;26205:9;26201:18;26193:26;;26265:9;26259:4;26255:20;26251:1;26240:9;26236:17;26229:47;26293:131;26419:4;26293:131;:::i;:::-;26285:139;;26012:419;;;:::o;26437:250::-;26577:34;26573:1;26565:6;26561:14;26554:58;26646:33;26641:2;26633:6;26629:15;26622:58;26437:250;:::o;26693:366::-;26835:3;26856:67;26920:2;26915:3;26856:67;:::i;:::-;26849:74;;26932:93;27021:3;26932:93;:::i;:::-;27050:2;27045:3;27041:12;27034:19;;26693:366;;;:::o;27065:419::-;27231:4;27269:2;27258:9;27254:18;27246:26;;27318:9;27312:4;27308:20;27304:1;27293:9;27289:17;27282:47;27346:131;27472:4;27346:131;:::i;:::-;27338:139;;27065:419;;;:::o;27490:229::-;27630:34;27626:1;27618:6;27614:14;27607:58;27699:12;27694:2;27686:6;27682:15;27675:37;27490:229;:::o;27725:366::-;27867:3;27888:67;27952:2;27947:3;27888:67;:::i;:::-;27881:74;;27964:93;28053:3;27964:93;:::i;:::-;28082:2;28077:3;28073:12;28066:19;;27725:366;;;:::o;28097:419::-;28263:4;28301:2;28290:9;28286:18;28278:26;;28350:9;28344:4;28340:20;28336:1;28325:9;28321:17;28314:47;28378:131;28504:4;28378:131;:::i;:::-;28370:139;;28097:419;;;:::o;28522:221::-;28662:34;28658:1;28650:6;28646:14;28639:58;28731:4;28726:2;28718:6;28714:15;28707:29;28522:221;:::o;28749:366::-;28891:3;28912:67;28976:2;28971:3;28912:67;:::i;:::-;28905:74;;28988:93;29077:3;28988:93;:::i;:::-;29106:2;29101:3;29097:12;29090:19;;28749:366;;;:::o;29121:419::-;29287:4;29325:2;29314:9;29310:18;29302:26;;29374:9;29368:4;29364:20;29360:1;29349:9;29345:17;29338:47;29402:131;29528:4;29402:131;:::i;:::-;29394:139;;29121:419;;;:::o;29546:225::-;29686:34;29682:1;29674:6;29670:14;29663:58;29755:8;29750:2;29742:6;29738:15;29731:33;29546:225;:::o;29777:366::-;29919:3;29940:67;30004:2;29999:3;29940:67;:::i;:::-;29933:74;;30016:93;30105:3;30016:93;:::i;:::-;30134:2;30129:3;30125:12;30118:19;;29777:366;;;:::o;30149:419::-;30315:4;30353:2;30342:9;30338:18;30330:26;;30402:9;30396:4;30392:20;30388:1;30377:9;30373:17;30366:47;30430:131;30556:4;30430:131;:::i;:::-;30422:139;;30149:419;;;:::o;30574:242::-;30714:34;30710:1;30702:6;30698:14;30691:58;30783:25;30778:2;30770:6;30766:15;30759:50;30574:242;:::o;30822:366::-;30964:3;30985:67;31049:2;31044:3;30985:67;:::i;:::-;30978:74;;31061:93;31150:3;31061:93;:::i;:::-;31179:2;31174:3;31170:12;31163:19;;30822:366;;;:::o;31194:419::-;31360:4;31398:2;31387:9;31383:18;31375:26;;31447:9;31441:4;31437:20;31433:1;31422:9;31418:17;31411:47;31475:131;31601:4;31475:131;:::i;:::-;31467:139;;31194:419;;;:::o;31619:143::-;31676:5;31707:6;31701:13;31692:22;;31723:33;31750:5;31723:33;:::i;:::-;31619:143;;;;:::o;31768:351::-;31838:6;31887:2;31875:9;31866:7;31862:23;31858:32;31855:119;;;31893:79;;:::i;:::-;31855:119;32013:1;32038:64;32094:7;32085:6;32074:9;32070:22;32038:64;:::i;:::-;32028:74;;31984:128;31768:351;;;;:::o;32125:332::-;32246:4;32284:2;32273:9;32269:18;32261:26;;32297:71;32365:1;32354:9;32350:17;32341:6;32297:71;:::i;:::-;32378:72;32446:2;32435:9;32431:18;32422:6;32378:72;:::i;:::-;32125:332;;;;;:::o;32463:137::-;32517:5;32548:6;32542:13;32533:22;;32564:30;32588:5;32564:30;:::i;:::-;32463:137;;;;:::o;32606:345::-;32673:6;32722:2;32710:9;32701:7;32697:23;32693:32;32690:119;;;32728:79;;:::i;:::-;32690:119;32848:1;32873:61;32926:7;32917:6;32906:9;32902:22;32873:61;:::i;:::-;32863:71;;32819:125;32606:345;;;;:::o;32957:223::-;33097:34;33093:1;33085:6;33081:14;33074:58;33166:6;33161:2;33153:6;33149:15;33142:31;32957:223;:::o;33186:366::-;33328:3;33349:67;33413:2;33408:3;33349:67;:::i;:::-;33342:74;;33425:93;33514:3;33425:93;:::i;:::-;33543:2;33538:3;33534:12;33527:19;;33186:366;;;:::o;33558:419::-;33724:4;33762:2;33751:9;33747:18;33739:26;;33811:9;33805:4;33801:20;33797:1;33786:9;33782:17;33775:47;33839:131;33965:4;33839:131;:::i;:::-;33831:139;;33558:419;;;:::o;33983:221::-;34123:34;34119:1;34111:6;34107:14;34100:58;34192:4;34187:2;34179:6;34175:15;34168:29;33983:221;:::o;34210:366::-;34352:3;34373:67;34437:2;34432:3;34373:67;:::i;:::-;34366:74;;34449:93;34538:3;34449:93;:::i;:::-;34567:2;34562:3;34558:12;34551:19;;34210:366;;;:::o;34582:419::-;34748:4;34786:2;34775:9;34771:18;34763:26;;34835:9;34829:4;34825:20;34821:1;34810:9;34806:17;34799:47;34863:131;34989:4;34863:131;:::i;:::-;34855:139;;34582:419;;;:::o;35007:224::-;35147:34;35143:1;35135:6;35131:14;35124:58;35216:7;35211:2;35203:6;35199:15;35192:32;35007:224;:::o;35237:366::-;35379:3;35400:67;35464:2;35459:3;35400:67;:::i;:::-;35393:74;;35476:93;35565:3;35476:93;:::i;:::-;35594:2;35589:3;35585:12;35578:19;;35237:366;;;:::o;35609:419::-;35775:4;35813:2;35802:9;35798:18;35790:26;;35862:9;35856:4;35852:20;35848:1;35837:9;35833:17;35826:47;35890:131;36016:4;35890:131;:::i;:::-;35882:139;;35609:419;;;:::o;36034:222::-;36174:34;36170:1;36162:6;36158:14;36151:58;36243:5;36238:2;36230:6;36226:15;36219:30;36034:222;:::o;36262:366::-;36404:3;36425:67;36489:2;36484:3;36425:67;:::i;:::-;36418:74;;36501:93;36590:3;36501:93;:::i;:::-;36619:2;36614:3;36610:12;36603:19;;36262:366;;;:::o;36634:419::-;36800:4;36838:2;36827:9;36823:18;36815:26;;36887:9;36881:4;36877:20;36873:1;36862:9;36858:17;36851:47;36915:131;37041:4;36915:131;:::i;:::-;36907:139;;36634:419;;;:::o;37059:174::-;37199:26;37195:1;37187:6;37183:14;37176:50;37059:174;:::o;37239:366::-;37381:3;37402:67;37466:2;37461:3;37402:67;:::i;:::-;37395:74;;37478:93;37567:3;37478:93;:::i;:::-;37596:2;37591:3;37587:12;37580:19;;37239:366;;;:::o;37611:419::-;37777:4;37815:2;37804:9;37800:18;37792:26;;37864:9;37858:4;37854:20;37850:1;37839:9;37835:17;37828:47;37892:131;38018:4;37892:131;:::i;:::-;37884:139;;37611:419;;;:::o;38036:246::-;38176:34;38172:1;38164:6;38160:14;38153:58;38245:29;38240:2;38232:6;38228:15;38221:54;38036:246;:::o;38288:366::-;38430:3;38451:67;38515:2;38510:3;38451:67;:::i;:::-;38444:74;;38527:93;38616:3;38527:93;:::i;:::-;38645:2;38640:3;38636:12;38629:19;;38288:366;;;:::o;38660:419::-;38826:4;38864:2;38853:9;38849:18;38841:26;;38913:9;38907:4;38903:20;38899:1;38888:9;38884:17;38877:47;38941:131;39067:4;38941:131;:::i;:::-;38933:139;;38660:419;;;:::o;39085:194::-;39125:4;39145:20;39163:1;39145:20;:::i;:::-;39140:25;;39179:20;39197:1;39179:20;:::i;:::-;39174:25;;39223:1;39220;39216:9;39208:17;;39247:1;39241:4;39238:11;39235:37;;;39252:18;;:::i;:::-;39235:37;39085:194;;;;:::o;39285:235::-;39425:34;39421:1;39413:6;39409:14;39402:58;39494:18;39489:2;39481:6;39477:15;39470:43;39285:235;:::o;39526:366::-;39668:3;39689:67;39753:2;39748:3;39689:67;:::i;:::-;39682:74;;39765:93;39854:3;39765:93;:::i;:::-;39883:2;39878:3;39874:12;39867:19;;39526:366;;;:::o;39898:419::-;40064:4;40102:2;40091:9;40087:18;40079:26;;40151:9;40145:4;40141:20;40137:1;40126:9;40122:17;40115:47;40179:131;40305:4;40179:131;:::i;:::-;40171:139;;39898:419;;;:::o;40323:179::-;40463:31;40459:1;40451:6;40447:14;40440:55;40323:179;:::o;40508:366::-;40650:3;40671:67;40735:2;40730:3;40671:67;:::i;:::-;40664:74;;40747:93;40836:3;40747:93;:::i;:::-;40865:2;40860:3;40856:12;40849:19;;40508:366;;;:::o;40880:419::-;41046:4;41084:2;41073:9;41069:18;41061:26;;41133:9;41127:4;41123:20;41119:1;41108:9;41104:17;41097:47;41161:131;41287:4;41161:131;:::i;:::-;41153:139;;40880:419;;;:::o;41305:147::-;41406:11;41443:3;41428:18;;41305:147;;;;:::o;41458:114::-;;:::o;41578:398::-;41737:3;41758:83;41839:1;41834:3;41758:83;:::i;:::-;41751:90;;41850:93;41939:3;41850:93;:::i;:::-;41968:1;41963:3;41959:11;41952:18;;41578:398;;;:::o;41982:379::-;42166:3;42188:147;42331:3;42188:147;:::i;:::-;42181:154;;42352:3;42345:10;;41982:379;;;:::o;42367:225::-;42507:34;42503:1;42495:6;42491:14;42484:58;42576:8;42571:2;42563:6;42559:15;42552:33;42367:225;:::o;42598:366::-;42740:3;42761:67;42825:2;42820:3;42761:67;:::i;:::-;42754:74;;42837:93;42926:3;42837:93;:::i;:::-;42955:2;42950:3;42946:12;42939:19;;42598:366;;;:::o;42970:419::-;43136:4;43174:2;43163:9;43159:18;43151:26;;43223:9;43217:4;43213:20;43209:1;43198:9;43194:17;43187:47;43251:131;43377:4;43251:131;:::i;:::-;43243:139;;42970:419;;;:::o;43395:180::-;43443:77;43440:1;43433:88;43540:4;43537:1;43530:15;43564:4;43561:1;43554:15;43581:180;43629:77;43626:1;43619:88;43726:4;43723:1;43716:15;43750:4;43747:1;43740:15;43767:143;43824:5;43855:6;43849:13;43840:22;;43871:33;43898:5;43871:33;:::i;:::-;43767:143;;;;:::o;43916:351::-;43986:6;44035:2;44023:9;44014:7;44010:23;44006:32;44003:119;;;44041:79;;:::i;:::-;44003:119;44161:1;44186:64;44242:7;44233:6;44222:9;44218:22;44186:64;:::i;:::-;44176:74;;44132:128;43916:351;;;;:::o;44273:85::-;44318:7;44347:5;44336:16;;44273:85;;;:::o;44364:158::-;44422:9;44455:61;44473:42;44482:32;44508:5;44482:32;:::i;:::-;44473:42;:::i;:::-;44455:61;:::i;:::-;44442:74;;44364:158;;;:::o;44528:147::-;44623:45;44662:5;44623:45;:::i;:::-;44618:3;44611:58;44528:147;;:::o;44681:114::-;44748:6;44782:5;44776:12;44766:22;;44681:114;;;:::o;44801:184::-;44900:11;44934:6;44929:3;44922:19;44974:4;44969:3;44965:14;44950:29;;44801:184;;;;:::o;44991:132::-;45058:4;45081:3;45073:11;;45111:4;45106:3;45102:14;45094:22;;44991:132;;;:::o;45129:108::-;45206:24;45224:5;45206:24;:::i;:::-;45201:3;45194:37;45129:108;;:::o;45243:179::-;45312:10;45333:46;45375:3;45367:6;45333:46;:::i;:::-;45411:4;45406:3;45402:14;45388:28;;45243:179;;;;:::o;45428:113::-;45498:4;45530;45525:3;45521:14;45513:22;;45428:113;;;:::o;45577:732::-;45696:3;45725:54;45773:5;45725:54;:::i;:::-;45795:86;45874:6;45869:3;45795:86;:::i;:::-;45788:93;;45905:56;45955:5;45905:56;:::i;:::-;45984:7;46015:1;46000:284;46025:6;46022:1;46019:13;46000:284;;;46101:6;46095:13;46128:63;46187:3;46172:13;46128:63;:::i;:::-;46121:70;;46214:60;46267:6;46214:60;:::i;:::-;46204:70;;46060:224;46047:1;46044;46040:9;46035:14;;46000:284;;;46004:14;46300:3;46293:10;;45701:608;;;45577:732;;;;:::o;46315:831::-;46578:4;46616:3;46605:9;46601:19;46593:27;;46630:71;46698:1;46687:9;46683:17;46674:6;46630:71;:::i;:::-;46711:80;46787:2;46776:9;46772:18;46763:6;46711:80;:::i;:::-;46838:9;46832:4;46828:20;46823:2;46812:9;46808:18;46801:48;46866:108;46969:4;46960:6;46866:108;:::i;:::-;46858:116;;46984:72;47052:2;47041:9;47037:18;47028:6;46984:72;:::i;:::-;47066:73;47134:3;47123:9;47119:19;47110:6;47066:73;:::i;:::-;46315:831;;;;;;;;:::o
Swarm Source
ipfs://4940d6397820c2749c12344614d74ebc6875f395029b485b141535b61730bbf1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.