More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 83 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15855991 | 864 days ago | IN | 0 ETH | 0.00031033 | ||||
Approve | 15581040 | 902 days ago | IN | 0 ETH | 0.00027096 | ||||
Approve | 15399364 | 931 days ago | IN | 0 ETH | 0.00042413 | ||||
Approve | 15373161 | 935 days ago | IN | 0 ETH | 0.00268448 | ||||
Approve | 15372938 | 935 days ago | IN | 0 ETH | 0.00068472 | ||||
Approve | 15372704 | 935 days ago | IN | 0 ETH | 0.00099622 | ||||
Approve | 15372575 | 935 days ago | IN | 0 ETH | 0.00058889 | ||||
Approve | 15372290 | 935 days ago | IN | 0 ETH | 0.00084842 | ||||
Approve | 15371904 | 935 days ago | IN | 0 ETH | 0.00057639 | ||||
Approve | 15371865 | 935 days ago | IN | 0 ETH | 0.00084878 | ||||
Approve | 15371798 | 935 days ago | IN | 0 ETH | 0.00036611 | ||||
Approve | 15371791 | 935 days ago | IN | 0 ETH | 0.00059036 | ||||
Approve | 15371735 | 935 days ago | IN | 0 ETH | 0.00084631 | ||||
Approve | 15371725 | 935 days ago | IN | 0 ETH | 0.00052454 | ||||
Approve | 15371724 | 935 days ago | IN | 0 ETH | 0.00081329 | ||||
Approve | 15371718 | 935 days ago | IN | 0 ETH | 0.00080949 | ||||
Approve | 15371633 | 935 days ago | IN | 0 ETH | 0.00113498 | ||||
Approve | 15371550 | 935 days ago | IN | 0 ETH | 0.00070505 | ||||
Approve | 15371523 | 935 days ago | IN | 0 ETH | 0.00071793 | ||||
Approve | 15371501 | 935 days ago | IN | 0 ETH | 0.00079805 | ||||
Approve | 15371490 | 935 days ago | IN | 0 ETH | 0.00102104 | ||||
Approve | 15371489 | 935 days ago | IN | 0 ETH | 0.00091556 | ||||
Approve | 15371489 | 935 days ago | IN | 0 ETH | 0.00108098 | ||||
Approve | 15371485 | 935 days ago | IN | 0 ETH | 0.00101145 | ||||
Approve | 15371464 | 935 days ago | IN | 0 ETH | 0.00108738 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 15376237 | 934 days ago | 0.00326675 ETH | ||||
Transfer | 15376237 | 934 days ago | 0.00054369 ETH | ||||
Add Liquidity ET... | 15376237 | 934 days ago | 0.00136152 ETH | ||||
Transfer | 15376237 | 934 days ago | 0.00408458 ETH | ||||
Transfer | 15373180 | 935 days ago | 0.00323296 ETH | ||||
Transfer | 15373180 | 935 days ago | 0.00053801 ETH | ||||
Add Liquidity ET... | 15373180 | 935 days ago | 0.00134747 ETH | ||||
Transfer | 15373180 | 935 days ago | 0.00404242 ETH | ||||
Transfer | 15372963 | 935 days ago | 0.00257612 ETH | ||||
Transfer | 15372963 | 935 days ago | 0.00042848 ETH | ||||
Add Liquidity ET... | 15372963 | 935 days ago | 0.00107381 ETH | ||||
Transfer | 15372963 | 935 days ago | 0.00322145 ETH | ||||
Transfer | 15372569 | 935 days ago | 0.00241499 ETH | ||||
Transfer | 15372569 | 935 days ago | 0.00040161 ETH | ||||
Add Liquidity ET... | 15372569 | 935 days ago | 0.00100668 ETH | ||||
Transfer | 15372569 | 935 days ago | 0.00302005 ETH | ||||
Transfer | 15372293 | 935 days ago | 0.00356154 ETH | ||||
Transfer | 15372293 | 935 days ago | 0.0005927 ETH | ||||
Add Liquidity ET... | 15372293 | 935 days ago | 0.00148441 ETH | ||||
Transfer | 15372293 | 935 days ago | 0.00445325 ETH | ||||
Transfer | 15371980 | 935 days ago | 0.00447686 ETH | ||||
Transfer | 15371980 | 935 days ago | 0.00074539 ETH | ||||
Add Liquidity ET... | 15371980 | 935 days ago | 0.00186573 ETH | ||||
Transfer | 15371980 | 935 days ago | 0.00559721 ETH | ||||
Transfer | 15371906 | 935 days ago | 0.00622777 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
QINJA
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-19 */ // // $QINJA // Tax 6% (2% Reflection / 2% Development / 2% Marketing) // Total supply 100000000 // Max wallet 3% 3000000 // Max sell 2% 2000000 // // 30 mins after launch - Remove All Limits (token is stable) and Renounce Ownership. // // ✅LP Lock & CA Renounced // // “If they think first place is the winner, then they don't know a $QINJA.” // // Telegram: https://t.me/QINJAerc20 // Twitter: https://twitter.com/qinjaerc20 // Website: https://qinja.org/ // // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.9; 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; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract QINJA is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public enableEarlySellTax = true; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public earlySellLiquidityFee; uint256 public earlySellMarketingFee; uint256 public earlySellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("QINJA", "QINJA") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 4; uint256 _buyLiquidityFee = 2; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 4; uint256 _sellLiquidityFee = 2; uint256 _sellDevFee = 0; uint256 _earlySellLiquidityFee = 2; uint256 _earlySellMarketingFee = 4; uint256 _earlySellDevFee = 0; uint256 totalSupply = 1 * 1e8 * 1e18; maxTransactionAmount = totalSupply * 2 / 100; maxWallet = totalSupply * 3 / 100; swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; earlySellDevFee = _earlySellDevFee; marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner(){ buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 20, "Must keep buy fees at 20% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _earlySellLiquidityFee, uint256 _earlySellMarketingFee, uint256 _earlySellDevFee) external onlyOwner(){ sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; earlySellDevFee = _earlySellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 20, "Must keep sell fees at 20% or less"); uint256 earlySellTotalFees = _earlySellMarketingFee + _earlySellLiquidityFee + _earlySellDevFee; require(earlySellTotalFees <= 20, "Must keep early sell fee at 20% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; excludeFromFees(marketingWallet,true); excludeFromMaxTransaction(marketingWallet,true); } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; excludeFromFees(devWallet,true); excludeFromMaxTransaction(devWallet,true); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } bool isBuy = from == uniswapV2Pair; if (!isBuy && enableEarlySellTax) { if (_holderFirstBuyTimestamp[from] != 0 && (_holderFirstBuyTimestamp[from] + (24 hours) >= block.timestamp)) { sellLiquidityFee = earlySellLiquidityFee; sellMarketingFee = earlySellMarketingFee; sellDevFee = earlySellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } else { sellLiquidityFee = 2; sellMarketingFee = 4; sellDevFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } } else { if (_holderFirstBuyTimestamp[to] == 0) { _holderFirstBuyTimestamp[to] = block.timestamp; } if (!enableEarlySellTax) { sellLiquidityFee = 2; sellMarketingFee = 4; sellDevFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040518060400160405280600581526020017f51494e4a410000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f51494e4a4100000000000000000000000000000000000000000000000000000081525081600390805190602001906200011d92919062000bf5565b5080600490805190602001906200013692919062000bf5565b50505060006200014b620006c160201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000216816001620006c960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029157600080fd5b505afa158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc919062000d0f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000d0f565b6040518363ffffffff1660e01b81526004016200038992919062000d52565b602060405180830381600087803b158015620003a457600080fd5b505af1158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000d0f565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200042760a0516001620006c960201b60201c565b6200043c60a0516001620007c660201b60201c565b60006004905060006002905060008060049050600060029050600080600290506000600490506000806a52b7d2dcc80cd2e40000009050606460028262000484919062000db8565b62000490919062000e48565b6008819055506064600382620004a7919062000db8565b620004b3919062000e48565b600a81905550612710600a82620004cb919062000db8565b620004d7919062000e48565b60098190555089601081905550886011819055508760128190555060125460115460105462000507919062000e80565b62000513919062000e80565b600f8190555086601481905550856015819055508460168190555060165460155460145462000543919062000e80565b6200054f919062000e80565b6013819055508360178190555082601881905550816019819055506200057a6200086760201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005ca6200086760201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200062c6200061e6200086760201b60201c565b60016200089160201b60201c565b6200063f3060016200089160201b60201c565b6200065461dead60016200089160201b60201c565b62000676620006686200086760201b60201c565b6001620006c960201b60201c565b62000689306001620006c960201b60201c565b6200069e61dead6001620006c960201b60201c565b620006b03382620009de60201b60201c565b505050505050505050505062001111565b600033905090565b620006d9620006c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200076b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007629062000f3e565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a1620006c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000933576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092a9062000f3e565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d2919062000f7d565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a489062000fea565b60405180910390fd5b62000a656000838362000b8d60201b60201c565b62000a818160025462000b9260201b620026591790919060201c565b60028190555062000adf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b9260201b620026591790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b8191906200101d565b60405180910390a35050565b505050565b600080828462000ba3919062000e80565b90508381101562000beb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be2906200108a565b60405180910390fd5b8091505092915050565b82805462000c0390620010db565b90600052602060002090601f01602090048101928262000c27576000855562000c73565b82601f1062000c4257805160ff191683800117855562000c73565b8280016001018555821562000c73579182015b8281111562000c7257825182559160200191906001019062000c55565b5b50905062000c82919062000c86565b5090565b5b8082111562000ca157600081600090555060010162000c87565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cd78262000caa565b9050919050565b62000ce98162000cca565b811462000cf557600080fd5b50565b60008151905062000d098162000cde565b92915050565b60006020828403121562000d285762000d2762000ca5565b5b600062000d388482850162000cf8565b91505092915050565b62000d4c8162000cca565b82525050565b600060408201905062000d69600083018562000d41565b62000d78602083018462000d41565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dc58262000d7f565b915062000dd28362000d7f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e0e5762000e0d62000d89565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e558262000d7f565b915062000e628362000d7f565b92508262000e755762000e7462000e19565b5b828204905092915050565b600062000e8d8262000d7f565b915062000e9a8362000d7f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ed25762000ed162000d89565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f2660208362000edd565b915062000f338262000eee565b602082019050919050565b6000602082019050818103600083015262000f598162000f17565b9050919050565b60008115159050919050565b62000f778162000f60565b82525050565b600060208201905062000f94600083018462000f6c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fd2601f8362000edd565b915062000fdf8262000f9a565b602082019050919050565b60006020820190508181036000830152620010058162000fc3565b9050919050565b620010178162000d7f565b82525050565b60006020820190506200103460008301846200100c565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001072601b8362000edd565b91506200107f826200103a565b602082019050919050565b60006020820190508181036000830152620010a58162001063565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010f457607f821691505b602082108114156200110b576200110a620010ac565b5b50919050565b60805160a051615819620011766000396000818161147101528181611c6601528181612c42015261304b015260008181610e2901528181612bea01528181613fcf015281816140bf015281816140e60152818161418201526141a901526158196000f3fe60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063b62496f5116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610cad578063f2fde38b14610cd8578063f637434214610d01578063f8b45b0514610d2c57610376565b8063dd62ed3e14610c1a578063e2f4560514610c57578063e884f26014610c8257610376565b8063c18bc195116100d1578063c18bc19514610b70578063c876d0b914610b99578063c8c8ebe414610bc4578063d85ba06314610bef57610376565b8063b62496f514610adf578063bbc0c74214610b1c578063c024666814610b4757610376565b8063a0d82dc511610164578063a4d15b641161013e578063a4d15b6414610a23578063a7fc9e2114610a4e578063a9059cbb14610a79578063aacebbe314610ab657610376565b8063a0d82dc514610992578063a2657778146109bd578063a457c2d7146109e657610376565b806395d89b41116101a057806395d89b41146108e85780639a7a23d6146109135780639c3b4fdc1461093c5780639fccce321461096757610376565b80638da5cb5b146108695780639213691314610894578063924de9b7146108bf57610376565b806339509351116102a057806370a082311161023e5780637571336a116102185780637571336a146107d55780637bce5a04146107fe5780638095d564146108295780638a8c523c1461085257610376565b806370a0823114610756578063715018a614610793578063751039fc146107aa57610376565b80634fbee1931161027a5780634fbee19314610698578063541a43cf146106d55780636a486a8e146107005780636ddd17131461072b57610376565b8063395093511461060557806349bd5a5e146106425780634a62bb651461066d57610376565b80631f3fed8f1161030d57806323b872dd116102e757806323b872dd1461054757806327c8f835146105845780632bf3d42d146105af578063313ce567146105da57610376565b80631f3fed8f146104ca578063203e727e146104f557806322d3e2aa1461051e57610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631816467f146104765780631a8145bb1461049f57610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d57565b60405161039d9190614363565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061441e565b610de9565b6040516103da9190614479565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614494565b610e07565b6040516104179190614479565b60405180910390f35b34801561042c57600080fd5b50610435610e27565b6040516104429190614520565b60405180910390f35b34801561045757600080fd5b50610460610e4b565b60405161046d919061454a565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190614494565b610e55565b005b3480156104ab57600080fd5b506104b4611006565b6040516104c1919061454a565b60405180910390f35b3480156104d657600080fd5b506104df61100c565b6040516104ec919061454a565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190614565565b611012565b005b34801561052a57600080fd5b5061054560048036038101906105409190614592565b61113c565b005b34801561055357600080fd5b5061056e6004803603810190610569919061461f565b6112ce565b60405161057b9190614479565b60405180910390f35b34801561059057600080fd5b506105996113a7565b6040516105a69190614681565b60405180910390f35b3480156105bb57600080fd5b506105c46113ad565b6040516105d1919061454a565b60405180910390f35b3480156105e657600080fd5b506105ef6113b3565b6040516105fc91906146b8565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061441e565b6113bc565b6040516106399190614479565b60405180910390f35b34801561064e57600080fd5b5061065761146f565b6040516106649190614681565b60405180910390f35b34801561067957600080fd5b50610682611493565b60405161068f9190614479565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba9190614494565b6114a6565b6040516106cc9190614479565b60405180910390f35b3480156106e157600080fd5b506106ea6114fc565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b50610715611502565b604051610722919061454a565b60405180910390f35b34801561073757600080fd5b50610740611508565b60405161074d9190614479565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614494565b61151b565b60405161078a919061454a565b60405180910390f35b34801561079f57600080fd5b506107a8611563565b005b3480156107b657600080fd5b506107bf6116bb565b6040516107cc9190614479565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906146ff565b611776565b005b34801561080a57600080fd5b50610813611868565b604051610820919061454a565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b919061473f565b61186e565b005b34801561085e57600080fd5b50610867611988565b005b34801561087557600080fd5b5061087e611a57565b60405161088b9190614681565b60405180910390f35b3480156108a057600080fd5b506108a9611a81565b6040516108b6919061454a565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e19190614792565b611a87565b005b3480156108f457600080fd5b506108fd611b3b565b60405161090a9190614363565b60405180910390f35b34801561091f57600080fd5b5061093a600480360381019061093591906146ff565b611bcd565b005b34801561094857600080fd5b50610951611d01565b60405161095e919061454a565b60405180910390f35b34801561097357600080fd5b5061097c611d07565b604051610989919061454a565b60405180910390f35b34801561099e57600080fd5b506109a7611d0d565b6040516109b4919061454a565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190614792565b611d13565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061441e565b611dc7565b604051610a1a9190614479565b60405180910390f35b348015610a2f57600080fd5b50610a38611e94565b604051610a459190614479565b60405180910390f35b348015610a5a57600080fd5b50610a63611ea7565b604051610a70919061454a565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b919061441e565b611ead565b604051610aad9190614479565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614494565b611ecb565b005b348015610aeb57600080fd5b50610b066004803603810190610b019190614494565b61207c565b604051610b139190614479565b60405180910390f35b348015610b2857600080fd5b50610b3161209c565b604051610b3e9190614479565b60405180910390f35b348015610b5357600080fd5b50610b6e6004803603810190610b6991906146ff565b6120af565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190614565565b6121ef565b005b348015610ba557600080fd5b50610bae612319565b604051610bbb9190614479565b60405180910390f35b348015610bd057600080fd5b50610bd961232c565b604051610be6919061454a565b60405180910390f35b348015610bfb57600080fd5b50610c04612332565b604051610c11919061454a565b60405180910390f35b348015610c2657600080fd5b50610c416004803603810190610c3c91906147bf565b612338565b604051610c4e919061454a565b60405180910390f35b348015610c6357600080fd5b50610c6c6123bf565b604051610c79919061454a565b60405180910390f35b348015610c8e57600080fd5b50610c976123c5565b604051610ca49190614479565b60405180910390f35b348015610cb957600080fd5b50610cc2612480565b604051610ccf919061454a565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614494565b612486565b005b348015610d0d57600080fd5b50610d1661264d565b604051610d23919061454a565b60405180910390f35b348015610d3857600080fd5b50610d41612653565b604051610d4e919061454a565b60405180910390f35b606060038054610d669061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d929061482e565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b5050505050905090565b6000610dfd610df66126b7565b84846126bf565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610e5d6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906148ac565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b611003600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601b5481565b601a5481565b61101a6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906148ac565b60405180910390fd5b670de0b6b3a76400006103e860056110bf610e4b565b6110c991906148fb565b6110d39190614984565b6110dd9190614984565b81101561111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614a27565b60405180910390fd5b670de0b6b3a76400008161113391906148fb565b60088190555050565b6111446126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906148ac565b60405180910390fd5b8560148190555084601581905550836016819055508260178190555081601881905550806019819055506016546015546014546112109190614a47565b61121a9190614a47565b60138190555060146013541115611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90614b0f565b60405180910390fd5b60008184846112759190614a47565b61127f9190614a47565b905060148111156112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90614ba1565b60405180910390fd5b50505050505050565b60006112db84848461288a565b61139c846112e76126b7565b6113978560405180606001604052806028815260200161579760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134d6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b600190509392505050565b61dead81565b60185481565b60006012905090565b60006114656113c96126b7565b8461146085600160006113da6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6126bf565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61156b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006116c56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b906148ac565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61177e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906148ac565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6118766126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc906148ac565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461192d9190614a47565b6119379190614a47565b600f819055506014600f541115611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614c33565b60405180910390fd5b505050565b6119906126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906148ac565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b611a8f6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906148ac565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611b4a9061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b769061482e565b8015611bc35780601f10611b9857610100808354040283529160200191611bc3565b820191906000526020600020905b815481529060010190602001808311611ba657829003601f168201915b5050505050905090565b611bd56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b906148ac565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614cc5565b60405180910390fd5b611cfd82826137ff565b5050565b60125481565b601c5481565b60165481565b611d1b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da1906148ac565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611e8a611dd46126b7565b84611e85856040518060600160405280602581526020016157bf6025913960016000611dfe6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b6001905092915050565b600b60039054906101000a900460ff1681565b60195481565b6000611ec1611eba6126b7565b848461288a565b6001905092915050565b611ed36126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906148ac565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061204c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b612079600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601f6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6120b76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d906148ac565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e39190614479565b60405180910390a25050565b6121f76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d906148ac565b60405180910390fd5b670de0b6b3a76400006103e8600561229c610e4b565b6122a691906148fb565b6122b09190614984565b6122ba9190614984565b8110156122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614d57565b60405180910390fd5b670de0b6b3a76400008161231091906148fb565b600a8190555050565b600e60009054906101000a900460ff1681565b60085481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006123cf6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906148ac565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61248e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612514906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258490614de9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600a5481565b60008082846126689190614a47565b9050838110156126ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a490614e55565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561272f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272690614ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614f79565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161287d919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f19061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129619061509d565b60405180910390fd5b60008114156129845761297f838360006138a0565b613796565b600b60009054906101000a900460ff1615613047576129a1611a57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0f57506129df611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a485750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a82575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a9b5750600560149054906101000a900460ff16155b1561304657600b60019054906101000a900460ff16612b9557601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b555750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8b90615109565b60405180910390fd5b5b600e60009054906101000a900460ff1615612d5d57612bb2611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c3957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c9157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d5c5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e906151c1565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e005750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ea757600854811115612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4190615253565b60405180910390fd5b600a54612e568361151b565b82612e619190614a47565b1115612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e99906152bf565b60405180910390fd5b613045565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9957600854811115612f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8b90615351565b60405180910390fd5b613044565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661304357600a54612ff68361151b565b826130019190614a47565b1115613042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613039906152bf565b60405180910390fd5b5b5b5b5b5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156130b45750600b60039054906101000a900460ff165b156131df576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561315657504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131539190614a47565b10155b1561319e576017546015819055506018546014819055506019546016819055506016546015546014546131899190614a47565b6131939190614a47565b6013819055506131da565b6002601581905550600460148190555060006016819055506016546015546014546131c99190614a47565b6131d39190614a47565b6013819055505b6132bd565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561326c5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff166132bc576002601581905550600460148190555060006016819055506016546015546014546132ab9190614a47565b6132b59190614a47565b6013819055505b5b60006132c83061151b565b9050600060095482101590508080156132ed5750600b60029054906101000a900460ff165b80156133065750600560149054906101000a900460ff16155b801561335c5750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133b25750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134085750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561344c576001600560146101000a81548160ff021916908315150217905550613430613b35565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135025750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561350c57600090505b6000811561378557601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561356f57506000601354115b1561363c5761359c606461358e60135489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050601354601554826135af91906148fb565b6135b99190614984565b601b60008282546135ca9190614a47565b92505081905550601354601654826135e291906148fb565b6135ec9190614984565b601c60008282546135fd9190614a47565b925050819055506013546014548261361591906148fb565b61361f9190614984565b601a60008282546136309190614a47565b92505081905550613761565b601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561369757506000600f54115b15613760576136c460646136b6600f5489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050600f54601154826136d791906148fb565b6136e19190614984565b601b60008282546136f29190614a47565b92505081905550600f546012548261370a91906148fb565b6137149190614984565b601c60008282546137259190614a47565b92505081905550600f546010548261373d91906148fb565b6137479190614984565b601a60008282546137589190614a47565b925050819055505b5b6000811115613776576137758830836138a0565b5b80866137829190615371565b95505b6137908888886138a0565b50505050505b505050565b60008383111582906137e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137da9190614363565b60405180910390fd5b50600083856137f29190615371565b9050809150509392505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139079061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139779061509d565b60405180910390fd5b61398b838383613ee1565b6139f681604051806060016040528060268152602001615771602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a89816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b28919061454a565b60405180910390a3505050565b6000613b403061151b565b90506000601c54601a54601b54613b579190614a47565b613b619190614a47565b9050600080831480613b735750600082145b15613b8057505050613e1a565b6014600954613b8f91906148fb565b831115613ba8576014600954613ba591906148fb565b92505b6000600283601b5486613bbb91906148fb565b613bc59190614984565b613bcf9190614984565b90506000613be68286613ee690919063ffffffff16565b90506000479050613bf682613f30565b6000613c0b8247613ee690919063ffffffff16565b90506000613c3687613c28601a5485613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000613c6188613c53601c5486613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000818385613c729190615371565b613c7c9190615371565b90506000601b819055506000601a819055506000601c81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613cdc906153d6565b60006040518083038185875af1925050503d8060008114613d19576040519150601f19603f3d011682016040523d82523d6000602084013e613d1e565b606091505b505080985050600087118015613d345750600081115b15613d8157613d43878261417c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613d78939291906153eb565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dc7906153d6565b60006040518083038185875af1925050503d8060008114613e04576040519150601f19603f3d011682016040523d82523d6000602084013e613e09565b606091505b505080985050505050505050505050505b565b600080831415613e2f5760009050613e91565b60008284613e3d91906148fb565b9050828482613e4c9190614984565b14613e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8390615494565b60405180910390fd5b809150505b92915050565b6000613ed983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b905092915050565b505050565b6000613f2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061379b565b905092915050565b6000600267ffffffffffffffff811115613f4d57613f4c6154b4565b5b604051908082528060200260200182016040528015613f7b5781602001602082028036833780820191505090505b5090503081600081518110613f9357613f926154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561403357600080fd5b505afa158015614047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406b9190615527565b8160018151811061407f5761407e6154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140e4307f0000000000000000000000000000000000000000000000000000000000000000846126bf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161414695949392919061564d565b600060405180830381600087803b15801561416057600080fd5b505af1158015614174573d6000803e3d6000fd5b505050505050565b6141a7307f0000000000000000000000000000000000000000000000000000000000000000846126bf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161420e969594939291906156a7565b6060604051808303818588803b15801561422757600080fd5b505af115801561423b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614260919061571d565b5050505050565b600080831182906142ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142a59190614363565b60405180910390fd5b50600083856142bd9190614984565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143045780820151818401526020810190506142e9565b83811115614313576000848401525b50505050565b6000601f19601f8301169050919050565b6000614335826142ca565b61433f81856142d5565b935061434f8185602086016142e6565b61435881614319565b840191505092915050565b6000602082019050818103600083015261437d818461432a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143b58261438a565b9050919050565b6143c5816143aa565b81146143d057600080fd5b50565b6000813590506143e2816143bc565b92915050565b6000819050919050565b6143fb816143e8565b811461440657600080fd5b50565b600081359050614418816143f2565b92915050565b6000806040838503121561443557614434614385565b5b6000614443858286016143d3565b925050602061445485828601614409565b9150509250929050565b60008115159050919050565b6144738161445e565b82525050565b600060208201905061448e600083018461446a565b92915050565b6000602082840312156144aa576144a9614385565b5b60006144b8848285016143d3565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461438a565b6144c1565b61438a565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143e8565b82525050565b600060208201905061455f600083018461453b565b92915050565b60006020828403121561457b5761457a614385565b5b600061458984828501614409565b91505092915050565b60008060008060008060c087890312156145af576145ae614385565b5b60006145bd89828a01614409565b96505060206145ce89828a01614409565b95505060406145df89828a01614409565b94505060606145f089828a01614409565b935050608061460189828a01614409565b92505060a061461289828a01614409565b9150509295509295509295565b60008060006060848603121561463857614637614385565b5b6000614646868287016143d3565b9350506020614657868287016143d3565b925050604061466886828701614409565b9150509250925092565b61467b816143aa565b82525050565b60006020820190506146966000830184614672565b92915050565b600060ff82169050919050565b6146b28161469c565b82525050565b60006020820190506146cd60008301846146a9565b92915050565b6146dc8161445e565b81146146e757600080fd5b50565b6000813590506146f9816146d3565b92915050565b6000806040838503121561471657614715614385565b5b6000614724858286016143d3565b9250506020614735858286016146ea565b9150509250929050565b60008060006060848603121561475857614757614385565b5b600061476686828701614409565b935050602061477786828701614409565b925050604061478886828701614409565b9150509250925092565b6000602082840312156147a8576147a7614385565b5b60006147b6848285016146ea565b91505092915050565b600080604083850312156147d6576147d5614385565b5b60006147e4858286016143d3565b92505060206147f5858286016143d3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061484657607f821691505b6020821081141561485a576148596147ff565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148966020836142d5565b91506148a182614860565b602082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614906826143e8565b9150614911836143e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561494a576149496148cc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061498f826143e8565b915061499a836143e8565b9250826149aa576149a9614955565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614a11602f836142d5565b9150614a1c826149b5565b604082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b6000614a52826143e8565b9150614a5d836143e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9257614a916148cc565b5b828201905092915050565b7f4d757374206b6565702073656c6c206665657320617420323025206f72206c6560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614af96022836142d5565b9150614b0482614a9d565b604082019050919050565b60006020820190508181036000830152614b2881614aec565b9050919050565b7f4d757374206b656570206561726c792073656c6c20666565206174203230252060008201527f6f72206c65737300000000000000000000000000000000000000000000000000602082015250565b6000614b8b6027836142d5565b9150614b9682614b2f565b604082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f4d757374206b65657020627579206665657320617420323025206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c1d6021836142d5565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614caf6039836142d5565b9150614cba82614c53565b604082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d416024836142d5565b9150614d4c82614ce5565b604082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dd36026836142d5565b9150614dde82614d77565b604082019050919050565b60006020820190508181036000830152614e0281614dc6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e3f601b836142d5565b9150614e4a82614e09565b602082019050919050565b60006020820190508181036000830152614e6e81614e32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ed16024836142d5565b9150614edc82614e75565b604082019050919050565b60006020820190508181036000830152614f0081614ec4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f636022836142d5565b9150614f6e82614f07565b604082019050919050565b60006020820190508181036000830152614f9281614f56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ff56025836142d5565b915061500082614f99565b604082019050919050565b6000602082019050818103600083015261502481614fe8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150876023836142d5565b91506150928261502b565b604082019050919050565b600060208201905081810360008301526150b68161507a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150f36016836142d5565b91506150fe826150bd565b602082019050919050565b60006020820190508181036000830152615122816150e6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006151ab6049836142d5565b91506151b682615129565b606082019050919050565b600060208201905081810360008301526151da8161519e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061523d6035836142d5565b9150615248826151e1565b604082019050919050565b6000602082019050818103600083015261526c81615230565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006152a96013836142d5565b91506152b482615273565b602082019050919050565b600060208201905081810360008301526152d88161529c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061533b6036836142d5565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b600061537c826143e8565b9150615387836143e8565b92508282101561539a576153996148cc565b5b828203905092915050565b600081905092915050565b50565b60006153c06000836153a5565b91506153cb826153b0565b600082019050919050565b60006153e1826153b3565b9150819050919050565b6000606082019050615400600083018661453b565b61540d602083018561453b565b61541a604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061547e6021836142d5565b915061548982615422565b604082019050919050565b600060208201905081810360008301526154ad81615471565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615521816143bc565b92915050565b60006020828403121561553d5761553c614385565b5b600061554b84828501615512565b91505092915050565b6000819050919050565b600061557961557461556f84615554565b6144c1565b6143e8565b9050919050565b6155898161555e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155c4816143aa565b82525050565b60006155d683836155bb565b60208301905092915050565b6000602082019050919050565b60006155fa8261558f565b615604818561559a565b935061560f836155ab565b8060005b8381101561564057815161562788826155ca565b9750615632836155e2565b925050600181019050615613565b5085935050505092915050565b600060a082019050615662600083018861453b565b61566f6020830187615580565b818103604083015261568181866155ef565b90506156906060830185614672565b61569d608083018461453b565b9695505050505050565b600060c0820190506156bc6000830189614672565b6156c9602083018861453b565b6156d66040830187615580565b6156e36060830186615580565b6156f06080830185614672565b6156fd60a083018461453b565b979650505050505050565b600081519050615717816143f2565b92915050565b60008060006060848603121561573657615735614385565b5b600061574486828701615708565b935050602061575586828701615708565b925050604061576686828701615708565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206a078c851a3aaa6551ef886311d60dd57372e3ddadf18a4dce77cc61f1e6e84764736f6c63430008090033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063b62496f5116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610cad578063f2fde38b14610cd8578063f637434214610d01578063f8b45b0514610d2c57610376565b8063dd62ed3e14610c1a578063e2f4560514610c57578063e884f26014610c8257610376565b8063c18bc195116100d1578063c18bc19514610b70578063c876d0b914610b99578063c8c8ebe414610bc4578063d85ba06314610bef57610376565b8063b62496f514610adf578063bbc0c74214610b1c578063c024666814610b4757610376565b8063a0d82dc511610164578063a4d15b641161013e578063a4d15b6414610a23578063a7fc9e2114610a4e578063a9059cbb14610a79578063aacebbe314610ab657610376565b8063a0d82dc514610992578063a2657778146109bd578063a457c2d7146109e657610376565b806395d89b41116101a057806395d89b41146108e85780639a7a23d6146109135780639c3b4fdc1461093c5780639fccce321461096757610376565b80638da5cb5b146108695780639213691314610894578063924de9b7146108bf57610376565b806339509351116102a057806370a082311161023e5780637571336a116102185780637571336a146107d55780637bce5a04146107fe5780638095d564146108295780638a8c523c1461085257610376565b806370a0823114610756578063715018a614610793578063751039fc146107aa57610376565b80634fbee1931161027a5780634fbee19314610698578063541a43cf146106d55780636a486a8e146107005780636ddd17131461072b57610376565b8063395093511461060557806349bd5a5e146106425780634a62bb651461066d57610376565b80631f3fed8f1161030d57806323b872dd116102e757806323b872dd1461054757806327c8f835146105845780632bf3d42d146105af578063313ce567146105da57610376565b80631f3fed8f146104ca578063203e727e146104f557806322d3e2aa1461051e57610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631816467f146104765780631a8145bb1461049f57610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d57565b60405161039d9190614363565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061441e565b610de9565b6040516103da9190614479565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614494565b610e07565b6040516104179190614479565b60405180910390f35b34801561042c57600080fd5b50610435610e27565b6040516104429190614520565b60405180910390f35b34801561045757600080fd5b50610460610e4b565b60405161046d919061454a565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190614494565b610e55565b005b3480156104ab57600080fd5b506104b4611006565b6040516104c1919061454a565b60405180910390f35b3480156104d657600080fd5b506104df61100c565b6040516104ec919061454a565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190614565565b611012565b005b34801561052a57600080fd5b5061054560048036038101906105409190614592565b61113c565b005b34801561055357600080fd5b5061056e6004803603810190610569919061461f565b6112ce565b60405161057b9190614479565b60405180910390f35b34801561059057600080fd5b506105996113a7565b6040516105a69190614681565b60405180910390f35b3480156105bb57600080fd5b506105c46113ad565b6040516105d1919061454a565b60405180910390f35b3480156105e657600080fd5b506105ef6113b3565b6040516105fc91906146b8565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061441e565b6113bc565b6040516106399190614479565b60405180910390f35b34801561064e57600080fd5b5061065761146f565b6040516106649190614681565b60405180910390f35b34801561067957600080fd5b50610682611493565b60405161068f9190614479565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba9190614494565b6114a6565b6040516106cc9190614479565b60405180910390f35b3480156106e157600080fd5b506106ea6114fc565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b50610715611502565b604051610722919061454a565b60405180910390f35b34801561073757600080fd5b50610740611508565b60405161074d9190614479565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614494565b61151b565b60405161078a919061454a565b60405180910390f35b34801561079f57600080fd5b506107a8611563565b005b3480156107b657600080fd5b506107bf6116bb565b6040516107cc9190614479565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906146ff565b611776565b005b34801561080a57600080fd5b50610813611868565b604051610820919061454a565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b919061473f565b61186e565b005b34801561085e57600080fd5b50610867611988565b005b34801561087557600080fd5b5061087e611a57565b60405161088b9190614681565b60405180910390f35b3480156108a057600080fd5b506108a9611a81565b6040516108b6919061454a565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e19190614792565b611a87565b005b3480156108f457600080fd5b506108fd611b3b565b60405161090a9190614363565b60405180910390f35b34801561091f57600080fd5b5061093a600480360381019061093591906146ff565b611bcd565b005b34801561094857600080fd5b50610951611d01565b60405161095e919061454a565b60405180910390f35b34801561097357600080fd5b5061097c611d07565b604051610989919061454a565b60405180910390f35b34801561099e57600080fd5b506109a7611d0d565b6040516109b4919061454a565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190614792565b611d13565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061441e565b611dc7565b604051610a1a9190614479565b60405180910390f35b348015610a2f57600080fd5b50610a38611e94565b604051610a459190614479565b60405180910390f35b348015610a5a57600080fd5b50610a63611ea7565b604051610a70919061454a565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b919061441e565b611ead565b604051610aad9190614479565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614494565b611ecb565b005b348015610aeb57600080fd5b50610b066004803603810190610b019190614494565b61207c565b604051610b139190614479565b60405180910390f35b348015610b2857600080fd5b50610b3161209c565b604051610b3e9190614479565b60405180910390f35b348015610b5357600080fd5b50610b6e6004803603810190610b6991906146ff565b6120af565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190614565565b6121ef565b005b348015610ba557600080fd5b50610bae612319565b604051610bbb9190614479565b60405180910390f35b348015610bd057600080fd5b50610bd961232c565b604051610be6919061454a565b60405180910390f35b348015610bfb57600080fd5b50610c04612332565b604051610c11919061454a565b60405180910390f35b348015610c2657600080fd5b50610c416004803603810190610c3c91906147bf565b612338565b604051610c4e919061454a565b60405180910390f35b348015610c6357600080fd5b50610c6c6123bf565b604051610c79919061454a565b60405180910390f35b348015610c8e57600080fd5b50610c976123c5565b604051610ca49190614479565b60405180910390f35b348015610cb957600080fd5b50610cc2612480565b604051610ccf919061454a565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614494565b612486565b005b348015610d0d57600080fd5b50610d1661264d565b604051610d23919061454a565b60405180910390f35b348015610d3857600080fd5b50610d41612653565b604051610d4e919061454a565b60405180910390f35b606060038054610d669061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d929061482e565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b5050505050905090565b6000610dfd610df66126b7565b84846126bf565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610e5d6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906148ac565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b611003600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601b5481565b601a5481565b61101a6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906148ac565b60405180910390fd5b670de0b6b3a76400006103e860056110bf610e4b565b6110c991906148fb565b6110d39190614984565b6110dd9190614984565b81101561111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614a27565b60405180910390fd5b670de0b6b3a76400008161113391906148fb565b60088190555050565b6111446126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906148ac565b60405180910390fd5b8560148190555084601581905550836016819055508260178190555081601881905550806019819055506016546015546014546112109190614a47565b61121a9190614a47565b60138190555060146013541115611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90614b0f565b60405180910390fd5b60008184846112759190614a47565b61127f9190614a47565b905060148111156112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90614ba1565b60405180910390fd5b50505050505050565b60006112db84848461288a565b61139c846112e76126b7565b6113978560405180606001604052806028815260200161579760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134d6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b600190509392505050565b61dead81565b60185481565b60006012905090565b60006114656113c96126b7565b8461146085600160006113da6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6126bf565b6001905092915050565b7f000000000000000000000000c038e030ae3dd053db2d45ec027fe35153ce7d2e81565b600b60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61156b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006116c56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b906148ac565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61177e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906148ac565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6118766126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc906148ac565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461192d9190614a47565b6119379190614a47565b600f819055506014600f541115611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614c33565b60405180910390fd5b505050565b6119906126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906148ac565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b611a8f6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906148ac565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611b4a9061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b769061482e565b8015611bc35780601f10611b9857610100808354040283529160200191611bc3565b820191906000526020600020905b815481529060010190602001808311611ba657829003601f168201915b5050505050905090565b611bd56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b906148ac565b60405180910390fd5b7f000000000000000000000000c038e030ae3dd053db2d45ec027fe35153ce7d2e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614cc5565b60405180910390fd5b611cfd82826137ff565b5050565b60125481565b601c5481565b60165481565b611d1b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da1906148ac565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611e8a611dd46126b7565b84611e85856040518060600160405280602581526020016157bf6025913960016000611dfe6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b6001905092915050565b600b60039054906101000a900460ff1681565b60195481565b6000611ec1611eba6126b7565b848461288a565b6001905092915050565b611ed36126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906148ac565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061204c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b612079600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601f6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6120b76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d906148ac565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e39190614479565b60405180910390a25050565b6121f76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d906148ac565b60405180910390fd5b670de0b6b3a76400006103e8600561229c610e4b565b6122a691906148fb565b6122b09190614984565b6122ba9190614984565b8110156122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614d57565b60405180910390fd5b670de0b6b3a76400008161231091906148fb565b600a8190555050565b600e60009054906101000a900460ff1681565b60085481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006123cf6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906148ac565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61248e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612514906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258490614de9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600a5481565b60008082846126689190614a47565b9050838110156126ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a490614e55565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561272f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272690614ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614f79565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161287d919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f19061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129619061509d565b60405180910390fd5b60008114156129845761297f838360006138a0565b613796565b600b60009054906101000a900460ff1615613047576129a1611a57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0f57506129df611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a485750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a82575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a9b5750600560149054906101000a900460ff16155b1561304657600b60019054906101000a900460ff16612b9557601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b555750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8b90615109565b60405180910390fd5b5b600e60009054906101000a900460ff1615612d5d57612bb2611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c3957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c9157507f000000000000000000000000c038e030ae3dd053db2d45ec027fe35153ce7d2e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d5c5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e906151c1565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e005750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ea757600854811115612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4190615253565b60405180910390fd5b600a54612e568361151b565b82612e619190614a47565b1115612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e99906152bf565b60405180910390fd5b613045565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9957600854811115612f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8b90615351565b60405180910390fd5b613044565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661304357600a54612ff68361151b565b826130019190614a47565b1115613042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613039906152bf565b60405180910390fd5b5b5b5b5b5b60007f000000000000000000000000c038e030ae3dd053db2d45ec027fe35153ce7d2e73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156130b45750600b60039054906101000a900460ff165b156131df576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561315657504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131539190614a47565b10155b1561319e576017546015819055506018546014819055506019546016819055506016546015546014546131899190614a47565b6131939190614a47565b6013819055506131da565b6002601581905550600460148190555060006016819055506016546015546014546131c99190614a47565b6131d39190614a47565b6013819055505b6132bd565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561326c5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff166132bc576002601581905550600460148190555060006016819055506016546015546014546132ab9190614a47565b6132b59190614a47565b6013819055505b5b60006132c83061151b565b9050600060095482101590508080156132ed5750600b60029054906101000a900460ff165b80156133065750600560149054906101000a900460ff16155b801561335c5750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133b25750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134085750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561344c576001600560146101000a81548160ff021916908315150217905550613430613b35565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135025750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561350c57600090505b6000811561378557601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561356f57506000601354115b1561363c5761359c606461358e60135489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050601354601554826135af91906148fb565b6135b99190614984565b601b60008282546135ca9190614a47565b92505081905550601354601654826135e291906148fb565b6135ec9190614984565b601c60008282546135fd9190614a47565b925050819055506013546014548261361591906148fb565b61361f9190614984565b601a60008282546136309190614a47565b92505081905550613761565b601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561369757506000600f54115b15613760576136c460646136b6600f5489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050600f54601154826136d791906148fb565b6136e19190614984565b601b60008282546136f29190614a47565b92505081905550600f546012548261370a91906148fb565b6137149190614984565b601c60008282546137259190614a47565b92505081905550600f546010548261373d91906148fb565b6137479190614984565b601a60008282546137589190614a47565b925050819055505b5b6000811115613776576137758830836138a0565b5b80866137829190615371565b95505b6137908888886138a0565b50505050505b505050565b60008383111582906137e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137da9190614363565b60405180910390fd5b50600083856137f29190615371565b9050809150509392505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139079061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139779061509d565b60405180910390fd5b61398b838383613ee1565b6139f681604051806060016040528060268152602001615771602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a89816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b28919061454a565b60405180910390a3505050565b6000613b403061151b565b90506000601c54601a54601b54613b579190614a47565b613b619190614a47565b9050600080831480613b735750600082145b15613b8057505050613e1a565b6014600954613b8f91906148fb565b831115613ba8576014600954613ba591906148fb565b92505b6000600283601b5486613bbb91906148fb565b613bc59190614984565b613bcf9190614984565b90506000613be68286613ee690919063ffffffff16565b90506000479050613bf682613f30565b6000613c0b8247613ee690919063ffffffff16565b90506000613c3687613c28601a5485613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000613c6188613c53601c5486613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000818385613c729190615371565b613c7c9190615371565b90506000601b819055506000601a819055506000601c81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613cdc906153d6565b60006040518083038185875af1925050503d8060008114613d19576040519150601f19603f3d011682016040523d82523d6000602084013e613d1e565b606091505b505080985050600087118015613d345750600081115b15613d8157613d43878261417c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613d78939291906153eb565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dc7906153d6565b60006040518083038185875af1925050503d8060008114613e04576040519150601f19603f3d011682016040523d82523d6000602084013e613e09565b606091505b505080985050505050505050505050505b565b600080831415613e2f5760009050613e91565b60008284613e3d91906148fb565b9050828482613e4c9190614984565b14613e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8390615494565b60405180910390fd5b809150505b92915050565b6000613ed983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b905092915050565b505050565b6000613f2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061379b565b905092915050565b6000600267ffffffffffffffff811115613f4d57613f4c6154b4565b5b604051908082528060200260200182016040528015613f7b5781602001602082028036833780820191505090505b5090503081600081518110613f9357613f926154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561403357600080fd5b505afa158015614047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406b9190615527565b8160018151811061407f5761407e6154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140e4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126bf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161414695949392919061564d565b600060405180830381600087803b15801561416057600080fd5b505af1158015614174573d6000803e3d6000fd5b505050505050565b6141a7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126bf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161420e969594939291906156a7565b6060604051808303818588803b15801561422757600080fd5b505af115801561423b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614260919061571d565b5050505050565b600080831182906142ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142a59190614363565b60405180910390fd5b50600083856142bd9190614984565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143045780820151818401526020810190506142e9565b83811115614313576000848401525b50505050565b6000601f19601f8301169050919050565b6000614335826142ca565b61433f81856142d5565b935061434f8185602086016142e6565b61435881614319565b840191505092915050565b6000602082019050818103600083015261437d818461432a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143b58261438a565b9050919050565b6143c5816143aa565b81146143d057600080fd5b50565b6000813590506143e2816143bc565b92915050565b6000819050919050565b6143fb816143e8565b811461440657600080fd5b50565b600081359050614418816143f2565b92915050565b6000806040838503121561443557614434614385565b5b6000614443858286016143d3565b925050602061445485828601614409565b9150509250929050565b60008115159050919050565b6144738161445e565b82525050565b600060208201905061448e600083018461446a565b92915050565b6000602082840312156144aa576144a9614385565b5b60006144b8848285016143d3565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461438a565b6144c1565b61438a565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143e8565b82525050565b600060208201905061455f600083018461453b565b92915050565b60006020828403121561457b5761457a614385565b5b600061458984828501614409565b91505092915050565b60008060008060008060c087890312156145af576145ae614385565b5b60006145bd89828a01614409565b96505060206145ce89828a01614409565b95505060406145df89828a01614409565b94505060606145f089828a01614409565b935050608061460189828a01614409565b92505060a061461289828a01614409565b9150509295509295509295565b60008060006060848603121561463857614637614385565b5b6000614646868287016143d3565b9350506020614657868287016143d3565b925050604061466886828701614409565b9150509250925092565b61467b816143aa565b82525050565b60006020820190506146966000830184614672565b92915050565b600060ff82169050919050565b6146b28161469c565b82525050565b60006020820190506146cd60008301846146a9565b92915050565b6146dc8161445e565b81146146e757600080fd5b50565b6000813590506146f9816146d3565b92915050565b6000806040838503121561471657614715614385565b5b6000614724858286016143d3565b9250506020614735858286016146ea565b9150509250929050565b60008060006060848603121561475857614757614385565b5b600061476686828701614409565b935050602061477786828701614409565b925050604061478886828701614409565b9150509250925092565b6000602082840312156147a8576147a7614385565b5b60006147b6848285016146ea565b91505092915050565b600080604083850312156147d6576147d5614385565b5b60006147e4858286016143d3565b92505060206147f5858286016143d3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061484657607f821691505b6020821081141561485a576148596147ff565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148966020836142d5565b91506148a182614860565b602082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614906826143e8565b9150614911836143e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561494a576149496148cc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061498f826143e8565b915061499a836143e8565b9250826149aa576149a9614955565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614a11602f836142d5565b9150614a1c826149b5565b604082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b6000614a52826143e8565b9150614a5d836143e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9257614a916148cc565b5b828201905092915050565b7f4d757374206b6565702073656c6c206665657320617420323025206f72206c6560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614af96022836142d5565b9150614b0482614a9d565b604082019050919050565b60006020820190508181036000830152614b2881614aec565b9050919050565b7f4d757374206b656570206561726c792073656c6c20666565206174203230252060008201527f6f72206c65737300000000000000000000000000000000000000000000000000602082015250565b6000614b8b6027836142d5565b9150614b9682614b2f565b604082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f4d757374206b65657020627579206665657320617420323025206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c1d6021836142d5565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614caf6039836142d5565b9150614cba82614c53565b604082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d416024836142d5565b9150614d4c82614ce5565b604082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dd36026836142d5565b9150614dde82614d77565b604082019050919050565b60006020820190508181036000830152614e0281614dc6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e3f601b836142d5565b9150614e4a82614e09565b602082019050919050565b60006020820190508181036000830152614e6e81614e32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ed16024836142d5565b9150614edc82614e75565b604082019050919050565b60006020820190508181036000830152614f0081614ec4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f636022836142d5565b9150614f6e82614f07565b604082019050919050565b60006020820190508181036000830152614f9281614f56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ff56025836142d5565b915061500082614f99565b604082019050919050565b6000602082019050818103600083015261502481614fe8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150876023836142d5565b91506150928261502b565b604082019050919050565b600060208201905081810360008301526150b68161507a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150f36016836142d5565b91506150fe826150bd565b602082019050919050565b60006020820190508181036000830152615122816150e6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006151ab6049836142d5565b91506151b682615129565b606082019050919050565b600060208201905081810360008301526151da8161519e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061523d6035836142d5565b9150615248826151e1565b604082019050919050565b6000602082019050818103600083015261526c81615230565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006152a96013836142d5565b91506152b482615273565b602082019050919050565b600060208201905081810360008301526152d88161529c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061533b6036836142d5565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b600061537c826143e8565b9150615387836143e8565b92508282101561539a576153996148cc565b5b828203905092915050565b600081905092915050565b50565b60006153c06000836153a5565b91506153cb826153b0565b600082019050919050565b60006153e1826153b3565b9150819050919050565b6000606082019050615400600083018661453b565b61540d602083018561453b565b61541a604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061547e6021836142d5565b915061548982615422565b604082019050919050565b600060208201905081810360008301526154ad81615471565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615521816143bc565b92915050565b60006020828403121561553d5761553c614385565b5b600061554b84828501615512565b91505092915050565b6000819050919050565b600061557961557461556f84615554565b6144c1565b6143e8565b9050919050565b6155898161555e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155c4816143aa565b82525050565b60006155d683836155bb565b60208301905092915050565b6000602082019050919050565b60006155fa8261558f565b615604818561559a565b935061560f836155ab565b8060005b8381101561564057815161562788826155ca565b9750615632836155e2565b925050600181019050615613565b5085935050505092915050565b600060a082019050615662600083018861453b565b61566f6020830187615580565b818103604083015261568181866155ef565b90506156906060830185614672565b61569d608083018461453b565b9695505050505050565b600060c0820190506156bc6000830189614672565b6156c9602083018861453b565b6156d66040830187615580565b6156e36060830186615580565b6156f06080830185614672565b6156fd60a083018461453b565b979650505050505050565b600081519050615717816143f2565b92915050565b60008060006060848603121561573657615735614385565b5b600061574486828701615708565b935050602061575586828701615708565b925050604061576686828701615708565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206a078c851a3aaa6551ef886311d60dd57372e3ddadf18a4dce77cc61f1e6e84764736f6c63430008090033
Deployed Bytecode Sourcemap
18451:16153:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6321:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20072:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18527:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5724:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26731:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19853:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19813;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23820:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24933:823;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6499:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18630:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19730:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5622:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6863:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18585:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18913:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26994:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19687:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19541:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18993:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5841:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11624:148;;;;;;;;;;;;;:::i;:::-;;23437:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24287:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19433:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24550:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23316:112;;;;;;;;;;;;;:::i;:::-;;11408:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19576:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24440:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5509:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25956:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19507:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19893:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19652:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23709:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7090:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19031:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19773:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5977:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26408:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20295:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18953:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25765:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24063:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19350:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18797:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19399:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6161:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18839:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23566:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19470:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11781:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19614:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18879:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5400:100;5454:13;5487:5;5480:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:100;:::o;6321:169::-;6404:4;6421:39;6430:12;:10;:12::i;:::-;6444:7;6453:6;6421:8;:39::i;:::-;6478:4;6471:11;;6321:169;;;;:::o;20072:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18527:51::-;;;:::o;5724:108::-;5785:7;5812:12;;5805:19;;5724:108;:::o;26731:251::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26838:9:::1;;;;;;;;;;;26810:38;;26827:9;26810:38;;;;;;;;;;;;26871:9;26859;;:21;;;;;;;;;;;;;;;;;;26891:31;26907:9;;;;;;;;;;;26917:4;26891:15;:31::i;:::-;26933:41;26959:9;;;;;;;;;;;26969:4;26933:25;:41::i;:::-;26731:251:::0;:::o;19853:33::-;;;;:::o;19813:::-;;;;:::o;23820:234::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23939:4:::1;23933;23929:1;23913:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23912:31;;;;:::i;:::-;23902:6;:41;;23894:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;24039:6;24029;:17;;;;:::i;:::-;24006:20;:40;;;;23820:234:::0;:::o;24933:823::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25160:13:::1;25141:16;:32;;;;25203:13;25184:16;:32;;;;25240:7;25227:10;:20;;;;25282:22;25258:21;:46;;;;25339:22;25315:21;:46;;;;25387:16;25369:15;:34;;;;25468:10;;25449:16;;25430;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;25414:13;:64;;;;25514:2;25497:13;;:19;;25489:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25566:26;25645:16;25620:22;25595;:47;;;;:::i;:::-;:66;;;;:::i;:::-;25566:95;;25702:2;25680:18;:24;;25672:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25130:626;24933:823:::0;;;;;;:::o;6499:355::-;6639:4;6656:36;6666:6;6674:9;6685:6;6656:9;:36::i;:::-;6703:121;6712:6;6720:12;:10;:12::i;:::-;6734:89;6772:6;6734:89;;;;;;;;;;;;;;;;;:11;:19;6746:6;6734:19;;;;;;;;;;;;;;;:33;6754:12;:10;:12::i;:::-;6734:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6703:8;:121::i;:::-;6842:4;6835:11;;6499:355;;;;;:::o;18630:53::-;18676:6;18630:53;:::o;19730:36::-;;;;:::o;5622:93::-;5680:5;5705:2;5698:9;;5622:93;:::o;6863:218::-;6951:4;6968:83;6977:12;:10;:12::i;:::-;6991:7;7000:50;7039:10;7000:11;:25;7012:12;:10;:12::i;:::-;7000:25;;;;;;;;;;;;;;;:34;7026:7;7000:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6968:8;:83::i;:::-;7069:4;7062:11;;6863:218;;;;:::o;18585:38::-;;;:::o;18913:33::-;;;;;;;;;;;;;:::o;26994:125::-;27059:4;27083:19;:28;27103:7;27083:28;;;;;;;;;;;;;;;;;;;;;;;;;27076:35;;26994:125;;;:::o;19687:36::-;;;;:::o;19541:28::-;;;;:::o;18993:31::-;;;;;;;;;;;;;:::o;5841:127::-;5915:7;5942:9;:18;5952:7;5942:18;;;;;;;;;;;;;;;;5935:25;;5841:127;;;:::o;11624:148::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11731:1:::1;11694:40;;11715:6;;;;;;;;;;;11694:40;;;;;;;;;;;;11762:1;11745:6;;:19;;;;;;;;;;;;;;;;;;11624:148::o:0;23437:120::-;23489:4;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23522:5:::1;23505:14;;:22;;;;;;;;;;;;;;;;;;23545:4;23538:11;;23437:120:::0;:::o;24287:144::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24419:4:::1;24377:31;:39;24409:6;24377:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24287:144:::0;;:::o;19433:30::-;;;;:::o;24550:374::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24685:13:::1;24667:15;:31;;;;24727:13;24709:15;:31;;;;24763:7;24751:9;:19;;;;24832:9;;24814:15;;24796;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;24781:12;:60;;;;24876:2;24860:12;;:18;;24852:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24550:374:::0;;;:::o;23316:112::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23387:4:::1;23371:13;;:20;;;;;;;;;;;;;;;;;;23416:4;23402:11;;:18;;;;;;;;;;;;;;;;;;23316:112::o:0;11408:79::-;11446:7;11473:6;;;;;;;;;;;11466:13;;11408:79;:::o;19576:31::-;;;;:::o;24440:101::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24526:7:::1;24512:11;;:21;;;;;;;;;;;;;;;;;;24440:101:::0;:::o;5509:104::-;5565:13;5598:7;5591:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5509:104;:::o;25956:245::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26063:13:::1;26055:21;;:4;:21;;;;26047:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;26152:41;26181:4;26187:5;26152:28;:41::i;:::-;25956:245:::0;;:::o;19507:24::-;;;;:::o;19893:27::-;;;;:::o;19652:25::-;;;;:::o;23709:102::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23798:5:::1;23777:18;;:26;;;;;;;;;;;;;;;;;;23709:102:::0;:::o;7090:269::-;7183:4;7200:129;7209:12;:10;:12::i;:::-;7223:7;7232:96;7271:15;7232:96;;;;;;;;;;;;;;;;;:11;:25;7244:12;:10;:12::i;:::-;7232:25;;;;;;;;;;;;;;;:34;7258:7;7232:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;7200:8;:129::i;:::-;7347:4;7340:11;;7090:269;;;;:::o;19031:37::-;;;;;;;;;;;;;:::o;19773:30::-;;;;:::o;5977:175::-;6063:4;6080:42;6090:12;:10;:12::i;:::-;6104:9;6115:6;6080:9;:42::i;:::-;6140:4;6133:11;;5977:175;;;;:::o;26408:314::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26545:15:::1;;;;;;;;;;;26502:59;;26525:18;26502:59;;;;;;;;;;;;26590:18;26572:15;;:36;;;;;;;;;;;;;;;;;;26619:37;26635:15;;;;;;;;;;;26651:4;26619:15;:37::i;:::-;26667:47;26693:15;;;;;;;;;;;26709:4;26667:25;:47::i;:::-;26408:314:::0;:::o;20295:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;18953:33::-;;;;;;;;;;;;;:::o;25765:182::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25881:8:::1;25850:19;:28;25870:7;25850:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25921:7;25905:34;;;25930:8;25905:34;;;;;;:::i;:::-;;;;;;;;25765:182:::0;;:::o;24063:215::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24185:4:::1;24179;24175:1;24159:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;24158:31;;;;:::i;:::-;24148:6;:41;;24140:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;24263:6;24253;:17;;;;:::i;:::-;24241:9;:29;;;;24063:215:::0;:::o;19350:39::-;;;;;;;;;;;;;:::o;18797:35::-;;;;:::o;19399:27::-;;;;:::o;6161:151::-;6250:7;6277:11;:18;6289:5;6277:18;;;;;;;;;;;;;;;:27;6296:7;6277:27;;;;;;;;;;;;;;;;6270:34;;6161:151;;;;:::o;18839:33::-;;;;:::o;23566:134::-;23626:4;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23665:5:::1;23642:20;;:28;;;;;;;;;;;;;;;;;;23688:4;23681:11;;23566:134:::0;:::o;19470:30::-;;;;:::o;11781:244::-;11546:12;:10;:12::i;:::-;11536:22;;:6;;;;;;;;;;;:22;;;11528:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11890:1:::1;11870:22;;:8;:22;;;;11862:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11980:8;11951:38;;11972:6;;;;;;;;;;;11951:38;;;;;;;;;;;;12009:8;12000:6;;:17;;;;;;;;;;;;;;;;;;11781:244:::0;:::o;19614:31::-;;;;:::o;18879:24::-;;;;:::o;9323:182::-;9381:7;9401:9;9417:1;9413;:5;;;;:::i;:::-;9401:17;;9442:1;9437;:6;;9429:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9496:1;9489:8;;;9323:182;;;;:::o;601:98::-;654:7;681:10;674:17;;601:98;:::o;8770:381::-;8923:1;8906:19;;:5;:19;;;;8898:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9004:1;8985:21;;:7;:21;;;;8977:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9089:6;9059:11;:18;9071:5;9059:18;;;;;;;;;;;;;;;:27;9078:7;9059:27;;;;;;;;;;;;;;;:36;;;;9127:7;9111:32;;9120:5;9111:32;;;9136:6;9111:32;;;;;;:::i;:::-;;;;;;;;8770:381;;;:::o;27128:4993::-;27276:1;27260:18;;:4;:18;;;;27252:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27353:1;27339:16;;:2;:16;;;;27331:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27419:1;27409:6;:11;27406:92;;;27437:28;27453:4;27459:2;27463:1;27437:15;:28::i;:::-;27480:7;;27406:92;27514:14;;;;;;;;;;;27511:1811;;;27574:7;:5;:7::i;:::-;27566:15;;:4;:15;;;;:49;;;;;27608:7;:5;:7::i;:::-;27602:13;;:2;:13;;;;27566:49;:86;;;;;27650:1;27636:16;;:2;:16;;;;27566:86;:128;;;;;27687:6;27673:21;;:2;:21;;;;27566:128;:158;;;;;27716:8;;;;;;;;;;;27715:9;27566:158;27544:1767;;;27762:13;;;;;;;;;;;27758:148;;27807:19;:25;27827:4;27807:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27836:19;:23;27856:2;27836:23;;;;;;;;;;;;;;;;;;;;;;;;;27807:52;27799:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27758:148;28065:20;;;;;;;;;;;28061:423;;;28119:7;:5;:7::i;:::-;28113:13;;:2;:13;;;;:47;;;;;28144:15;28130:30;;:2;:30;;;;28113:47;:79;;;;;28178:13;28164:28;;:2;:28;;;;28113:79;28109:356;;;28270:12;28228:28;:39;28257:9;28228:39;;;;;;;;;;;;;;;;:54;28220:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28429:12;28387:28;:39;28416:9;28387:39;;;;;;;;;;;;;;;:54;;;;28109:356;28061:423;28537:25;:31;28563:4;28537:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28573:31;:35;28605:2;28573:35;;;;;;;;;;;;;;;;;;;;;;;;;28572:36;28537:71;28533:763;;;28655:20;;28645:6;:30;;28637:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;28794:9;;28777:13;28787:2;28777:9;:13::i;:::-;28768:6;:22;;;;:::i;:::-;:35;;28760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28533:763;;;28906:25;:29;28932:2;28906:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28940:31;:37;28972:4;28940:37;;;;;;;;;;;;;;;;;;;;;;;;;28939:38;28906:71;28902:394;;;29024:20;;29014:6;:30;;29006:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;28902:394;;;29150:31;:35;29182:2;29150:35;;;;;;;;;;;;;;;;;;;;;;;;;29146:150;;29243:9;;29226:13;29236:2;29226:9;:13::i;:::-;29217:6;:22;;;;:::i;:::-;:35;;29209:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29146:150;28902:394;28533:763;27544:1767;27511:1811;29335:10;29356:13;29348:21;;:4;:21;;;29335:34;;29385:5;29384:6;:28;;;;;29394:18;;;;;;;;;;;29384:28;29380:1059;;;29467:1;29433:24;:30;29458:4;29433:30;;;;;;;;;;;;;;;;:35;;:120;;;;;29537:15;29524:8;29490:24;:30;29515:4;29490:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:62;;29433:120;29429:601;;;29594:21;;29575:16;:40;;;;29653:21;;29634:16;:40;;;;29700:15;;29687:10;:28;;;;29788:10;;29769:16;;29750;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;29734:13;:64;;;;29429:601;;;29858:1;29839:16;:20;;;;29897:1;29878:16;:20;;;;29930:1;29917:10;:14;;;;30004:10;;29985:16;;29966;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;29950:13;:64;;;;29429:601;29380:1059;;;30098:1;30066:24;:28;30091:2;30066:28;;;;;;;;;;;;;;;;:33;30062:120;;;30151:15;30120:24;:28;30145:2;30120:28;;;;;;;;;;;;;;;:46;;;;30062:120;30204:18;;;;;;;;;;;30199:229;;30262:1;30243:16;:20;;;;30301:1;30282:16;:20;;;;30328:1;30315:10;:14;;;;30402:10;;30383:16;;30364;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;30348:13;:64;;;;30199:229;29380:1059;30452:28;30483:24;30501:4;30483:9;:24::i;:::-;30452:55;;30521:12;30560:18;;30536:20;:42;;30521:57;;30610:7;:35;;;;;30634:11;;;;;;;;;;;30610:35;:61;;;;;30663:8;;;;;;;;;;;30662:9;30610:61;:110;;;;;30689:25;:31;30715:4;30689:31;;;;;;;;;;;;;;;;;;;;;;;;;30688:32;30610:110;:153;;;;;30738:19;:25;30758:4;30738:25;;;;;;;;;;;;;;;;;;;;;;;;;30737:26;30610:153;:194;;;;;30781:19;:23;30801:2;30781:23;;;;;;;;;;;;;;;;;;;;;;;;;30780:24;30610:194;30592:328;;;30842:4;30831:8;;:15;;;;;;;;;;;;;;;;;;30864:10;:8;:10::i;:::-;30903:5;30892:8;;:16;;;;;;;;;;;;;;;;;;30592:328;30933:12;30949:8;;;;;;;;;;;30948:9;30933:24;;30974:19;:25;30994:4;30974:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;31003:19;:23;31023:2;31003:23;;;;;;;;;;;;;;;;;;;;;;;;;30974:52;30971:99;;;31053:5;31043:15;;30971:99;31083:12;31113:7;31110:957;;;31164:25;:29;31190:2;31164:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;31213:1;31197:13;;:17;31164:50;31160:754;;;31241:34;31271:3;31241:25;31252:13;;31241:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;31234:41;;31342:13;;31323:16;;31316:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31294:18;;:61;;;;;;;:::i;:::-;;;;;;;;31410:13;;31397:10;;31390:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;31374:12;;:49;;;;;;;:::i;:::-;;;;;;;;31490:13;;31471:16;;31464:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31442:18;;:61;;;;;;;:::i;:::-;;;;;;;;31160:754;;;31564:25;:31;31590:4;31564:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;31614:1;31599:12;;:16;31564:51;31561:353;;;31643:33;31672:3;31643:24;31654:12;;31643:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;31636:40;;31742:12;;31724:15;;31717:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31695:18;;:59;;;;;;;:::i;:::-;;;;;;;;31808:12;;31796:9;;31789:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;31773:12;;:47;;;;;;;:::i;:::-;;;;;;;;31886:12;;31868:15;;31861:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31839:18;;:59;;;;;;;:::i;:::-;;;;;;;;31561:353;31160:754;31941:1;31934:4;:8;31931:93;;;31966:42;31982:4;31996;32003;31966:15;:42::i;:::-;31931:93;32051:4;32041:14;;;;;:::i;:::-;;;31110:957;32080:33;32096:4;32102:2;32106:6;32080:15;:33::i;:::-;27241:4880;;;;;27128:4993;;;;:::o;9659:193::-;9745:7;9778:1;9773;:6;;9781:12;9765:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9805:9;9821:1;9817;:5;;;;:::i;:::-;9805:17;;9843:1;9836:8;;;9659:193;;;;;:::o;26210:189::-;26327:5;26293:25;:31;26319:4;26293:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26385:5;26351:40;;26379:4;26351:40;;;;;;;;;;;;26210:189;;:::o;7368:575::-;7526:1;7508:20;;:6;:20;;;;7500:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7610:1;7589:23;;:9;:23;;;;7581:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7666:47;7687:6;7695:9;7706:6;7666:20;:47::i;:::-;7747:71;7769:6;7747:71;;;;;;;;;;;;;;;;;:9;:17;7757:6;7747:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7727:9;:17;7737:6;7727:17;;;;;;;;;;;;;;;:91;;;;7852:32;7877:6;7852:9;:20;7862:9;7852:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7829:9;:20;7839:9;7829:20;;;;;;;;;;;;;;;:55;;;;7917:9;7900:35;;7909:6;7900:35;;;7928:6;7900:35;;;;;;:::i;:::-;;;;;;;;7368:575;;;:::o;33080:1519::-;33119:23;33145:24;33163:4;33145:9;:24::i;:::-;33119:50;;33180:25;33250:12;;33229:18;;33208;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;33180:82;;33273:12;33321:1;33302:15;:20;:46;;;;33347:1;33326:17;:22;33302:46;33299:60;;;33351:7;;;;;33299:60;33414:2;33393:18;;:23;;;;:::i;:::-;33375:15;:41;33372:111;;;33469:2;33448:18;;:23;;;;:::i;:::-;33430:41;;33372:111;33496:23;33581:1;33561:17;33540:18;;33522:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;33496:86;;33593:26;33622:36;33642:15;33622;:19;;:36;;;;:::i;:::-;33593:65;;33672:25;33700:21;33672:49;;33735:36;33752:18;33735:16;:36::i;:::-;33786:18;33807:44;33833:17;33807:21;:25;;:44;;;;:::i;:::-;33786:65;;33865:23;33891:57;33930:17;33891:34;33906:18;;33891:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;33865:83;;33959:17;33979:51;34012:17;33979:28;33994:12;;33979:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;33959:71;;34041:23;34098:9;34080:15;34067:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;34041:66;;34145:1;34124:18;:22;;;;34178:1;34157:18;:22;;;;34205:1;34190:12;:16;;;;34241:9;;;;;;;;;;;34233:23;;34264:9;34233:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34220:58;;;;;34313:1;34295:15;:19;:42;;;;;34336:1;34318:15;:19;34295:42;34292:210;;;34353:46;34366:15;34383;34353:12;:46::i;:::-;34419:71;34434:18;34454:15;34471:18;;34419:71;;;;;;;;:::i;:::-;;;;;;;;34292:210;34536:15;;;;;;;;;;;34528:29;;34565:21;34528:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34515:76;;;;;33108:1491;;;;;;;;;;33080:1519;:::o;9861:473::-;9919:7;10169:1;10164;:6;10160:47;;;10194:1;10187:8;;;;10160:47;10220:9;10236:1;10232;:5;;;;:::i;:::-;10220:17;;10265:1;10260;10256;:5;;;;:::i;:::-;:10;10248:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10325:1;10318:8;;;9861:473;;;;;:::o;10343:132::-;10401:7;10428:39;10432:1;10435;10428:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10421:46;;10343:132;;;;:::o;9160:125::-;;;;:::o;9514:136::-;9572:7;9599:43;9603:1;9606;9599:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9592:50;;9514:136;;;;:::o;32130:511::-;32199:21;32237:1;32223:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32199:40;;32268:4;32250;32255:1;32250:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32294:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32284:4;32289:1;32284:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32330:62;32347:4;32362:15;32380:11;32330:8;:62::i;:::-;32406:15;:66;;;32487:11;32513:1;32557:4;32584;32604:15;32406:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32185:456;32130:511;:::o;32650:421::-;32731:62;32748:4;32763:15;32781:11;32731:8;:62::i;:::-;32807:15;:31;;;32846:9;32879:4;32899:11;32925:1;32968;18676:6;33037:15;32807:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32650:421;;:::o;10484:279::-;10570:7;10602:1;10598;:5;10605:12;10590:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10629:9;10645:1;10641;:5;;;;:::i;:::-;10629:17;;10754:1;10747:8;;;10484:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:1057::-;5598:6;5606;5614;5622;5630;5638;5687:3;5675:9;5666:7;5662:23;5658:33;5655:120;;;5694:79;;:::i;:::-;5655:120;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;6197:2;6223:53;6268:7;6259:6;6248:9;6244:22;6223:53;:::i;:::-;6213:63;;6168:118;6325:3;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6296:119;6454:3;6481:53;6526:7;6517:6;6506:9;6502:22;6481:53;:::i;:::-;6471:63;;6425:119;5494:1057;;;;;;;;:::o;6557:619::-;6634:6;6642;6650;6699:2;6687:9;6678:7;6674:23;6670:32;6667:119;;;6705:79;;:::i;:::-;6667:119;6825:1;6850:53;6895:7;6886:6;6875:9;6871:22;6850:53;:::i;:::-;6840:63;;6796:117;6952:2;6978:53;7023:7;7014:6;7003:9;6999:22;6978:53;:::i;:::-;6968:63;;6923:118;7080:2;7106:53;7151:7;7142:6;7131:9;7127:22;7106:53;:::i;:::-;7096:63;;7051:118;6557:619;;;;;:::o;7182:118::-;7269:24;7287:5;7269:24;:::i;:::-;7264:3;7257:37;7182:118;;:::o;7306:222::-;7399:4;7437:2;7426:9;7422:18;7414:26;;7450:71;7518:1;7507:9;7503:17;7494:6;7450:71;:::i;:::-;7306:222;;;;:::o;7534:86::-;7569:7;7609:4;7602:5;7598:16;7587:27;;7534:86;;;:::o;7626:112::-;7709:22;7725:5;7709:22;:::i;:::-;7704:3;7697:35;7626:112;;:::o;7744:214::-;7833:4;7871:2;7860:9;7856:18;7848:26;;7884:67;7948:1;7937:9;7933:17;7924:6;7884:67;:::i;:::-;7744:214;;;;:::o;7964:116::-;8034:21;8049:5;8034:21;:::i;:::-;8027:5;8024:32;8014:60;;8070:1;8067;8060:12;8014:60;7964:116;:::o;8086:133::-;8129:5;8167:6;8154:20;8145:29;;8183:30;8207:5;8183:30;:::i;:::-;8086:133;;;;:::o;8225:468::-;8290:6;8298;8347:2;8335:9;8326:7;8322:23;8318:32;8315:119;;;8353:79;;:::i;:::-;8315:119;8473:1;8498:53;8543:7;8534:6;8523:9;8519:22;8498:53;:::i;:::-;8488:63;;8444:117;8600:2;8626:50;8668:7;8659:6;8648:9;8644:22;8626:50;:::i;:::-;8616:60;;8571:115;8225:468;;;;;:::o;8699:619::-;8776:6;8784;8792;8841:2;8829:9;8820:7;8816:23;8812:32;8809:119;;;8847:79;;:::i;:::-;8809:119;8967:1;8992:53;9037:7;9028:6;9017:9;9013:22;8992:53;:::i;:::-;8982:63;;8938:117;9094:2;9120:53;9165:7;9156:6;9145:9;9141:22;9120:53;:::i;:::-;9110:63;;9065:118;9222:2;9248:53;9293:7;9284:6;9273:9;9269:22;9248:53;:::i;:::-;9238:63;;9193:118;8699:619;;;;;:::o;9324:323::-;9380:6;9429:2;9417:9;9408:7;9404:23;9400:32;9397:119;;;9435:79;;:::i;:::-;9397:119;9555:1;9580:50;9622:7;9613:6;9602:9;9598:22;9580:50;:::i;:::-;9570:60;;9526:114;9324:323;;;;:::o;9653:474::-;9721:6;9729;9778:2;9766:9;9757:7;9753:23;9749:32;9746:119;;;9784:79;;:::i;:::-;9746:119;9904:1;9929:53;9974:7;9965:6;9954:9;9950:22;9929:53;:::i;:::-;9919:63;;9875:117;10031:2;10057:53;10102:7;10093:6;10082:9;10078:22;10057:53;:::i;:::-;10047:63;;10002:118;9653:474;;;;;:::o;10133:180::-;10181:77;10178:1;10171:88;10278:4;10275:1;10268:15;10302:4;10299:1;10292:15;10319:320;10363:6;10400:1;10394:4;10390:12;10380:22;;10447:1;10441:4;10437:12;10468:18;10458:81;;10524:4;10516:6;10512:17;10502:27;;10458:81;10586:2;10578:6;10575:14;10555:18;10552:38;10549:84;;;10605:18;;:::i;:::-;10549:84;10370:269;10319:320;;;:::o;10645:182::-;10785:34;10781:1;10773:6;10769:14;10762:58;10645:182;:::o;10833:366::-;10975:3;10996:67;11060:2;11055:3;10996:67;:::i;:::-;10989:74;;11072:93;11161:3;11072:93;:::i;:::-;11190:2;11185:3;11181:12;11174:19;;10833:366;;;:::o;11205:419::-;11371:4;11409:2;11398:9;11394:18;11386:26;;11458:9;11452:4;11448:20;11444:1;11433:9;11429:17;11422:47;11486:131;11612:4;11486:131;:::i;:::-;11478:139;;11205:419;;;:::o;11630:180::-;11678:77;11675:1;11668:88;11775:4;11772:1;11765:15;11799:4;11796:1;11789:15;11816:348;11856:7;11879:20;11897:1;11879:20;:::i;:::-;11874:25;;11913:20;11931:1;11913:20;:::i;:::-;11908:25;;12101:1;12033:66;12029:74;12026:1;12023:81;12018:1;12011:9;12004:17;12000:105;11997:131;;;12108:18;;:::i;:::-;11997:131;12156:1;12153;12149:9;12138:20;;11816:348;;;;:::o;12170:180::-;12218:77;12215:1;12208:88;12315:4;12312:1;12305:15;12339:4;12336:1;12329:15;12356:185;12396:1;12413:20;12431:1;12413:20;:::i;:::-;12408:25;;12447:20;12465:1;12447:20;:::i;:::-;12442:25;;12486:1;12476:35;;12491:18;;:::i;:::-;12476:35;12533:1;12530;12526:9;12521:14;;12356:185;;;;:::o;12547:234::-;12687:34;12683:1;12675:6;12671:14;12664:58;12756:17;12751:2;12743:6;12739:15;12732:42;12547:234;:::o;12787:366::-;12929:3;12950:67;13014:2;13009:3;12950:67;:::i;:::-;12943:74;;13026:93;13115:3;13026:93;:::i;:::-;13144:2;13139:3;13135:12;13128:19;;12787:366;;;:::o;13159:419::-;13325:4;13363:2;13352:9;13348:18;13340:26;;13412:9;13406:4;13402:20;13398:1;13387:9;13383:17;13376:47;13440:131;13566:4;13440:131;:::i;:::-;13432:139;;13159:419;;;:::o;13584:305::-;13624:3;13643:20;13661:1;13643:20;:::i;:::-;13638:25;;13677:20;13695:1;13677:20;:::i;:::-;13672:25;;13831:1;13763:66;13759:74;13756:1;13753:81;13750:107;;;13837:18;;:::i;:::-;13750:107;13881:1;13878;13874:9;13867:16;;13584:305;;;;:::o;13895:221::-;14035:34;14031:1;14023:6;14019:14;14012:58;14104:4;14099:2;14091:6;14087:15;14080:29;13895:221;:::o;14122:366::-;14264:3;14285:67;14349:2;14344:3;14285:67;:::i;:::-;14278:74;;14361:93;14450:3;14361:93;:::i;:::-;14479:2;14474:3;14470:12;14463:19;;14122:366;;;:::o;14494:419::-;14660:4;14698:2;14687:9;14683:18;14675:26;;14747:9;14741:4;14737:20;14733:1;14722:9;14718:17;14711:47;14775:131;14901:4;14775:131;:::i;:::-;14767:139;;14494:419;;;:::o;14919:226::-;15059:34;15055:1;15047:6;15043:14;15036:58;15128:9;15123:2;15115:6;15111:15;15104:34;14919:226;:::o;15151:366::-;15293:3;15314:67;15378:2;15373:3;15314:67;:::i;:::-;15307:74;;15390:93;15479:3;15390:93;:::i;:::-;15508:2;15503:3;15499:12;15492:19;;15151:366;;;:::o;15523:419::-;15689:4;15727:2;15716:9;15712:18;15704:26;;15776:9;15770:4;15766:20;15762:1;15751:9;15747:17;15740:47;15804:131;15930:4;15804:131;:::i;:::-;15796:139;;15523:419;;;:::o;15948:220::-;16088:34;16084:1;16076:6;16072:14;16065:58;16157:3;16152:2;16144:6;16140:15;16133:28;15948:220;:::o;16174:366::-;16316:3;16337:67;16401:2;16396:3;16337:67;:::i;:::-;16330:74;;16413:93;16502:3;16413:93;:::i;:::-;16531:2;16526:3;16522:12;16515:19;;16174:366;;;:::o;16546:419::-;16712:4;16750:2;16739:9;16735:18;16727:26;;16799:9;16793:4;16789:20;16785:1;16774:9;16770:17;16763:47;16827:131;16953:4;16827:131;:::i;:::-;16819:139;;16546:419;;;:::o;16971:244::-;17111:34;17107:1;17099:6;17095:14;17088:58;17180:27;17175:2;17167:6;17163:15;17156:52;16971:244;:::o;17221:366::-;17363:3;17384:67;17448:2;17443:3;17384:67;:::i;:::-;17377:74;;17460:93;17549:3;17460:93;:::i;:::-;17578:2;17573:3;17569:12;17562:19;;17221:366;;;:::o;17593:419::-;17759:4;17797:2;17786:9;17782:18;17774:26;;17846:9;17840:4;17836:20;17832:1;17821:9;17817:17;17810:47;17874:131;18000:4;17874:131;:::i;:::-;17866:139;;17593:419;;;:::o;18018:223::-;18158:34;18154:1;18146:6;18142:14;18135:58;18227:6;18222:2;18214:6;18210:15;18203:31;18018:223;:::o;18247:366::-;18389:3;18410:67;18474:2;18469:3;18410:67;:::i;:::-;18403:74;;18486:93;18575:3;18486:93;:::i;:::-;18604:2;18599:3;18595:12;18588:19;;18247:366;;;:::o;18619:419::-;18785:4;18823:2;18812:9;18808:18;18800:26;;18872:9;18866:4;18862:20;18858:1;18847:9;18843:17;18836:47;18900:131;19026:4;18900:131;:::i;:::-;18892:139;;18619:419;;;:::o;19044:225::-;19184:34;19180:1;19172:6;19168:14;19161:58;19253:8;19248:2;19240:6;19236:15;19229:33;19044:225;:::o;19275:366::-;19417:3;19438:67;19502:2;19497:3;19438:67;:::i;:::-;19431:74;;19514:93;19603:3;19514:93;:::i;:::-;19632:2;19627:3;19623:12;19616:19;;19275:366;;;:::o;19647:419::-;19813:4;19851:2;19840:9;19836:18;19828:26;;19900:9;19894:4;19890:20;19886:1;19875:9;19871:17;19864:47;19928:131;20054:4;19928:131;:::i;:::-;19920:139;;19647:419;;;:::o;20072:177::-;20212:29;20208:1;20200:6;20196:14;20189:53;20072:177;:::o;20255:366::-;20397:3;20418:67;20482:2;20477:3;20418:67;:::i;:::-;20411:74;;20494:93;20583:3;20494:93;:::i;:::-;20612:2;20607:3;20603:12;20596:19;;20255:366;;;:::o;20627:419::-;20793:4;20831:2;20820:9;20816:18;20808:26;;20880:9;20874:4;20870:20;20866:1;20855:9;20851:17;20844:47;20908:131;21034:4;20908:131;:::i;:::-;20900:139;;20627:419;;;:::o;21052:223::-;21192:34;21188:1;21180:6;21176:14;21169:58;21261:6;21256:2;21248:6;21244:15;21237:31;21052:223;:::o;21281:366::-;21423:3;21444:67;21508:2;21503:3;21444:67;:::i;:::-;21437:74;;21520:93;21609:3;21520:93;:::i;:::-;21638:2;21633:3;21629:12;21622:19;;21281:366;;;:::o;21653:419::-;21819:4;21857:2;21846:9;21842:18;21834:26;;21906:9;21900:4;21896:20;21892:1;21881:9;21877:17;21870:47;21934:131;22060:4;21934:131;:::i;:::-;21926:139;;21653:419;;;:::o;22078:221::-;22218:34;22214:1;22206:6;22202:14;22195:58;22287:4;22282:2;22274:6;22270:15;22263:29;22078:221;:::o;22305:366::-;22447:3;22468:67;22532:2;22527:3;22468:67;:::i;:::-;22461:74;;22544:93;22633:3;22544:93;:::i;:::-;22662:2;22657:3;22653:12;22646:19;;22305:366;;;:::o;22677:419::-;22843:4;22881:2;22870:9;22866:18;22858:26;;22930:9;22924:4;22920:20;22916:1;22905:9;22901:17;22894:47;22958:131;23084:4;22958:131;:::i;:::-;22950:139;;22677:419;;;:::o;23102:224::-;23242:34;23238:1;23230:6;23226:14;23219:58;23311:7;23306:2;23298:6;23294:15;23287:32;23102:224;:::o;23332:366::-;23474:3;23495:67;23559:2;23554:3;23495:67;:::i;:::-;23488:74;;23571:93;23660:3;23571:93;:::i;:::-;23689:2;23684:3;23680:12;23673:19;;23332:366;;;:::o;23704:419::-;23870:4;23908:2;23897:9;23893:18;23885:26;;23957:9;23951:4;23947:20;23943:1;23932:9;23928:17;23921:47;23985:131;24111:4;23985:131;:::i;:::-;23977:139;;23704:419;;;:::o;24129:222::-;24269:34;24265:1;24257:6;24253:14;24246:58;24338:5;24333:2;24325:6;24321:15;24314:30;24129:222;:::o;24357:366::-;24499:3;24520:67;24584:2;24579:3;24520:67;:::i;:::-;24513:74;;24596:93;24685:3;24596:93;:::i;:::-;24714:2;24709:3;24705:12;24698:19;;24357:366;;;:::o;24729:419::-;24895:4;24933:2;24922:9;24918:18;24910:26;;24982:9;24976:4;24972:20;24968:1;24957:9;24953:17;24946:47;25010:131;25136:4;25010:131;:::i;:::-;25002:139;;24729:419;;;:::o;25154:172::-;25294:24;25290:1;25282:6;25278:14;25271:48;25154:172;:::o;25332:366::-;25474:3;25495:67;25559:2;25554:3;25495:67;:::i;:::-;25488:74;;25571:93;25660:3;25571:93;:::i;:::-;25689:2;25684:3;25680:12;25673:19;;25332:366;;;:::o;25704:419::-;25870:4;25908:2;25897:9;25893:18;25885:26;;25957:9;25951:4;25947:20;25943:1;25932:9;25928:17;25921:47;25985:131;26111:4;25985:131;:::i;:::-;25977:139;;25704:419;;;:::o;26129:297::-;26269:34;26265:1;26257:6;26253:14;26246:58;26338:34;26333:2;26325:6;26321:15;26314:59;26407:11;26402:2;26394:6;26390:15;26383:36;26129:297;:::o;26432:366::-;26574:3;26595:67;26659:2;26654:3;26595:67;:::i;:::-;26588:74;;26671:93;26760:3;26671:93;:::i;:::-;26789:2;26784:3;26780:12;26773:19;;26432:366;;;:::o;26804:419::-;26970:4;27008:2;26997:9;26993:18;26985:26;;27057:9;27051:4;27047:20;27043:1;27032:9;27028:17;27021:47;27085:131;27211:4;27085:131;:::i;:::-;27077:139;;26804:419;;;:::o;27229:240::-;27369:34;27365:1;27357:6;27353:14;27346:58;27438:23;27433:2;27425:6;27421:15;27414:48;27229:240;:::o;27475:366::-;27617:3;27638:67;27702:2;27697:3;27638:67;:::i;:::-;27631:74;;27714:93;27803:3;27714:93;:::i;:::-;27832:2;27827:3;27823:12;27816:19;;27475:366;;;:::o;27847:419::-;28013:4;28051:2;28040:9;28036:18;28028:26;;28100:9;28094:4;28090:20;28086:1;28075:9;28071:17;28064:47;28128:131;28254:4;28128:131;:::i;:::-;28120:139;;27847:419;;;:::o;28272:169::-;28412:21;28408:1;28400:6;28396:14;28389:45;28272:169;:::o;28447:366::-;28589:3;28610:67;28674:2;28669:3;28610:67;:::i;:::-;28603:74;;28686:93;28775:3;28686:93;:::i;:::-;28804:2;28799:3;28795:12;28788:19;;28447:366;;;:::o;28819:419::-;28985:4;29023:2;29012:9;29008:18;29000:26;;29072:9;29066:4;29062:20;29058:1;29047:9;29043:17;29036:47;29100:131;29226:4;29100:131;:::i;:::-;29092:139;;28819:419;;;:::o;29244:241::-;29384:34;29380:1;29372:6;29368:14;29361:58;29453:24;29448:2;29440:6;29436:15;29429:49;29244:241;:::o;29491:366::-;29633:3;29654:67;29718:2;29713:3;29654:67;:::i;:::-;29647:74;;29730:93;29819:3;29730:93;:::i;:::-;29848:2;29843:3;29839:12;29832:19;;29491:366;;;:::o;29863:419::-;30029:4;30067:2;30056:9;30052:18;30044:26;;30116:9;30110:4;30106:20;30102:1;30091:9;30087:17;30080:47;30144:131;30270:4;30144:131;:::i;:::-;30136:139;;29863:419;;;:::o;30288:191::-;30328:4;30348:20;30366:1;30348:20;:::i;:::-;30343:25;;30382:20;30400:1;30382:20;:::i;:::-;30377:25;;30421:1;30418;30415:8;30412:34;;;30426:18;;:::i;:::-;30412:34;30471:1;30468;30464:9;30456:17;;30288:191;;;;:::o;30485:147::-;30586:11;30623:3;30608:18;;30485:147;;;;:::o;30638:114::-;;:::o;30758:398::-;30917:3;30938:83;31019:1;31014:3;30938:83;:::i;:::-;30931:90;;31030:93;31119:3;31030:93;:::i;:::-;31148:1;31143:3;31139:11;31132:18;;30758:398;;;:::o;31162:379::-;31346:3;31368:147;31511:3;31368:147;:::i;:::-;31361:154;;31532:3;31525:10;;31162:379;;;:::o;31547:442::-;31696:4;31734:2;31723:9;31719:18;31711:26;;31747:71;31815:1;31804:9;31800:17;31791:6;31747:71;:::i;:::-;31828:72;31896:2;31885:9;31881:18;31872:6;31828:72;:::i;:::-;31910;31978:2;31967:9;31963:18;31954:6;31910:72;:::i;:::-;31547:442;;;;;;:::o;31995:220::-;32135:34;32131:1;32123:6;32119:14;32112:58;32204:3;32199:2;32191:6;32187:15;32180:28;31995:220;:::o;32221:366::-;32363:3;32384:67;32448:2;32443:3;32384:67;:::i;:::-;32377:74;;32460:93;32549:3;32460:93;:::i;:::-;32578:2;32573:3;32569:12;32562:19;;32221:366;;;:::o;32593:419::-;32759:4;32797:2;32786:9;32782:18;32774:26;;32846:9;32840:4;32836:20;32832:1;32821:9;32817:17;32810:47;32874:131;33000:4;32874:131;:::i;:::-;32866:139;;32593:419;;;:::o;33018:180::-;33066:77;33063:1;33056:88;33163:4;33160:1;33153:15;33187:4;33184:1;33177:15;33204:180;33252:77;33249:1;33242:88;33349:4;33346:1;33339:15;33373:4;33370:1;33363:15;33390:143;33447:5;33478:6;33472:13;33463:22;;33494:33;33521:5;33494:33;:::i;:::-;33390:143;;;;:::o;33539:351::-;33609:6;33658:2;33646:9;33637:7;33633:23;33629:32;33626:119;;;33664:79;;:::i;:::-;33626:119;33784:1;33809:64;33865:7;33856:6;33845:9;33841:22;33809:64;:::i;:::-;33799:74;;33755:128;33539:351;;;;:::o;33896:85::-;33941:7;33970:5;33959:16;;33896:85;;;:::o;33987:158::-;34045:9;34078:61;34096:42;34105:32;34131:5;34105:32;:::i;:::-;34096:42;:::i;:::-;34078:61;:::i;:::-;34065:74;;33987:158;;;:::o;34151:147::-;34246:45;34285:5;34246:45;:::i;:::-;34241:3;34234:58;34151:147;;:::o;34304:114::-;34371:6;34405:5;34399:12;34389:22;;34304:114;;;:::o;34424:184::-;34523:11;34557:6;34552:3;34545:19;34597:4;34592:3;34588:14;34573:29;;34424:184;;;;:::o;34614:132::-;34681:4;34704:3;34696:11;;34734:4;34729:3;34725:14;34717:22;;34614:132;;;:::o;34752:108::-;34829:24;34847:5;34829:24;:::i;:::-;34824:3;34817:37;34752:108;;:::o;34866:179::-;34935:10;34956:46;34998:3;34990:6;34956:46;:::i;:::-;35034:4;35029:3;35025:14;35011:28;;34866:179;;;;:::o;35051:113::-;35121:4;35153;35148:3;35144:14;35136:22;;35051:113;;;:::o;35200:732::-;35319:3;35348:54;35396:5;35348:54;:::i;:::-;35418:86;35497:6;35492:3;35418:86;:::i;:::-;35411:93;;35528:56;35578:5;35528:56;:::i;:::-;35607:7;35638:1;35623:284;35648:6;35645:1;35642:13;35623:284;;;35724:6;35718:13;35751:63;35810:3;35795:13;35751:63;:::i;:::-;35744:70;;35837:60;35890:6;35837:60;:::i;:::-;35827:70;;35683:224;35670:1;35667;35663:9;35658:14;;35623:284;;;35627:14;35923:3;35916:10;;35324:608;;;35200:732;;;;:::o;35938:831::-;36201:4;36239:3;36228:9;36224:19;36216:27;;36253:71;36321:1;36310:9;36306:17;36297:6;36253:71;:::i;:::-;36334:80;36410:2;36399:9;36395:18;36386:6;36334:80;:::i;:::-;36461:9;36455:4;36451:20;36446:2;36435:9;36431:18;36424:48;36489:108;36592:4;36583:6;36489:108;:::i;:::-;36481:116;;36607:72;36675:2;36664:9;36660:18;36651:6;36607:72;:::i;:::-;36689:73;36757:3;36746:9;36742:19;36733:6;36689:73;:::i;:::-;35938:831;;;;;;;;:::o;36775:807::-;37024:4;37062:3;37051:9;37047:19;37039:27;;37076:71;37144:1;37133:9;37129:17;37120:6;37076:71;:::i;:::-;37157:72;37225:2;37214:9;37210:18;37201:6;37157:72;:::i;:::-;37239:80;37315:2;37304:9;37300:18;37291:6;37239:80;:::i;:::-;37329;37405:2;37394:9;37390:18;37381:6;37329:80;:::i;:::-;37419:73;37487:3;37476:9;37472:19;37463:6;37419:73;:::i;:::-;37502;37570:3;37559:9;37555:19;37546:6;37502:73;:::i;:::-;36775:807;;;;;;;;;:::o;37588:143::-;37645:5;37676:6;37670:13;37661:22;;37692:33;37719:5;37692:33;:::i;:::-;37588:143;;;;:::o;37737:663::-;37825:6;37833;37841;37890:2;37878:9;37869:7;37865:23;37861:32;37858:119;;;37896:79;;:::i;:::-;37858:119;38016:1;38041:64;38097:7;38088:6;38077:9;38073:22;38041:64;:::i;:::-;38031:74;;37987:128;38154:2;38180:64;38236:7;38227:6;38216:9;38212:22;38180:64;:::i;:::-;38170:74;;38125:129;38293:2;38319:64;38375:7;38366:6;38355:9;38351:22;38319:64;:::i;:::-;38309:74;;38264:129;37737:663;;;;;:::o
Swarm Source
ipfs://6a078c851a3aaa6551ef886311d60dd57372e3ddadf18a4dce77cc61f1e6e847
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 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.