More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15702006 | 770 days ago | IN | 0 ETH | 0.00021046 | ||||
Approve | 15702001 | 770 days ago | IN | 0 ETH | 0.00027892 | ||||
Update Max Walle... | 15701984 | 770 days ago | IN | 0 ETH | 0.0001411 | ||||
Update Max Txn A... | 15701984 | 770 days ago | IN | 0 ETH | 0.00014121 | ||||
Remove Limits | 15701979 | 770 days ago | IN | 0 ETH | 0.00014045 | ||||
Approve | 15701961 | 770 days ago | IN | 0 ETH | 0.00074082 | ||||
Approve | 15701958 | 770 days ago | IN | 0 ETH | 0.00069448 | ||||
Approve | 15701954 | 770 days ago | IN | 0 ETH | 0.00067574 | ||||
Approve | 15701951 | 770 days ago | IN | 0 ETH | 0.00066716 | ||||
Approve | 15701948 | 770 days ago | IN | 0 ETH | 0.00028747 | ||||
Approve | 15701948 | 770 days ago | IN | 0 ETH | 0.00035833 | ||||
Approve | 15701948 | 770 days ago | IN | 0 ETH | 0.00035833 | ||||
Approve | 15701948 | 770 days ago | IN | 0 ETH | 0.00035833 | ||||
Approve | 15701948 | 770 days ago | IN | 0 ETH | 0.00035833 | ||||
Approve | 15701948 | 770 days ago | IN | 0 ETH | 0.00035833 | ||||
Enable Trading | 15701947 | 770 days ago | IN | 0 ETH | 0.00026599 | ||||
Approve | 15701843 | 770 days ago | IN | 0 ETH | 0.00037325 | ||||
Update Marketing... | 15701720 | 770 days ago | IN | 0 ETH | 0.00014746 | ||||
Update Dev Walle... | 15701715 | 770 days ago | IN | 0 ETH | 0.00013372 | ||||
0x60c06040 | 15701684 | 770 days ago | IN | 0 ETH | 0.04025057 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15702082 | 770 days ago | 0.00066818 ETH | ||||
15702082 | 770 days ago | 0.00011761 ETH | ||||
15702082 | 770 days ago | 0.00027528 ETH | ||||
15702082 | 770 days ago | 0.00027528 ETH | ||||
15702082 | 770 days ago | 0.00110114 ETH | ||||
15702082 | 770 days ago | 0.00067984 ETH | ||||
15702082 | 770 days ago | 0.00011966 ETH | ||||
15702082 | 770 days ago | 0.00028008 ETH | ||||
15702082 | 770 days ago | 0.00028008 ETH | ||||
15702082 | 770 days ago | 0.00112034 ETH | ||||
15702082 | 770 days ago | 0.00139476 ETH | ||||
15702082 | 770 days ago | 0.0002457 ETH | ||||
15702082 | 770 days ago | 0.00057452 ETH | ||||
15702082 | 770 days ago | 0.00057452 ETH | ||||
15702082 | 770 days ago | 0.00229811 ETH | ||||
15702074 | 770 days ago | 0.00072568 ETH | ||||
15702074 | 770 days ago | 0.00012774 ETH | ||||
15702074 | 770 days ago | 0.00029897 ETH | ||||
15702074 | 770 days ago | 0.00029897 ETH | ||||
15702074 | 770 days ago | 0.00119589 ETH | ||||
15702074 | 770 days ago | 0.00139421 ETH | ||||
15702074 | 770 days ago | 0.00024559 ETH | ||||
15702074 | 770 days ago | 0.0005743 ETH | ||||
15702074 | 770 days ago | 0.0005743 ETH | ||||
15702074 | 770 days ago | 0.00229722 ETH |
Loading...
Loading
Contract Name:
ProofOfBear
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-08 */ /** // SPDX-License-Identifier: MIT //https://t.me/POBRportal /* ─────────███──────────███ ────────█▓▓▓█────────█▓▓▓█ ───────█▓▓▓▓██████████▓▓▓▓█ ───────█▓▓▓██▒▒▒▒▒▒▒▒██▓▓▓█ ────────████▒▒▒▒▒▒▒▒▒▒████ ──────────█▒▒▒██▒▒██▒▒▒█ ──────────█▒▒▒▒▒▒▒▒▒▒▒▒█ ──────────█▒▒▒▒░██░▒▒▒▒█ ──────────██▒▒▓▒▒▒▒▓▒▒██ ───────────██▒▒▓▓▓▓▒▒██ ────────────█▒▒▒▒▒▒▒▒█ ─────████████████████████████ ───▓▓▓▓▒▒░░░░░░░░░░░░░░░░▒▒▓▓▓▓ ──▓▓▒▒▓▒░░░░░░░░░░░░░░░░░░▒▓▒▒▓▓ ──▓▒▒▒▓░░░ Proof Of Bear░░▒▓▒▒▒▓ ──▓▓▒▒▓▒▒░░░░░░░░░░░░░░░░▒▒▓▒▒▓▓ ───▓▓▒▓▒▒░░░░░░░░░░░░░░░░▒▒▓▒▓▓ ─────████████████████████████ ─────────█▒▒▓▓▓▓▓▓▓▓▓▒▒█ ────────██▒▒▓▓▓▓▓▓▓▓▓▒▒██ ───────-█▓▒▒▒▓▓▓▓▓▓▓▓▓▒▒▒▓█ ─███▄─█▒▒▓▒▒▒▓▓▓▓▓▓▓▒▒▒▓▒▒█─▄███ █▓▓▓██▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▓▒▒▒██▓▓▓█ █▓▓▓▓█▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▓▒▒▒▒█▓▓▓▓█ █▓▓▓▓██▒▒▒▒▓█████████▓▒▒▒▒██▓▓▓▓█ █▓▓▓▓▓█▒▒▒█▓─────────▓█▒▒▒█▓▓▓▓▓█ ─█▓▓▓▓█▒██▓───────────▓██▒█▓▓▓▓█ ──█▓▓▓██▓▓─────────────▓███▓▓▓█ ───████▓────────────────▓█████ */ pragma solidity 0.8.11; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function factory() external view returns (address); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract ProofOfBear is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; mapping (address => bool) public isBot; bool private _swapping; uint256 private _launchTime; address private marketingWallet; address private devWallet; address public _Deployer; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch 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 tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); constructor(address depAddr) ERC20("Proof Of Bear", "POBR") { 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 = 3; uint256 _buyLiquidityFee = 1; uint256 _buyDevFee = 1; uint256 _sellMarketingFee = 4; uint256 _sellLiquidityFee = 2; uint256 _sellDevFee = 2; uint256 totalSupply = 1 * 1e6 * 1e18; maxTransactionAmount = totalSupply * 1 / 100; // 1% maxTransactionAmountTxn maxWallet = totalSupply * 2 / 100; // 2% maxWallet swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet // Set Fees buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; // Set Fee Wallet marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet _Deployer = depAddr; // exclude from paying fees or having max transaction amount 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 { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; _launchTime = block.timestamp.add(2); } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * 1e18; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * 1e18; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external { require(_msgSender() == _Deployer); buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 6, "Must keep fees at 6% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external { require(_msgSender() == _Deployer); sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 16, "Must keep fees at 16% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } // Variable Block - once enabled, can never be turned off function enableTrading(uint256 Bblock) external onlyOwner { tradingActive = true; _launchTime = block.timestamp.add(Bblock); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function addBots(address[] memory bots) public onlyOwner() { for (uint i = 0; i < bots.length; i++) { if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) { isBot[bots[i]] = true; } } } function removeBots(address[] memory bots) public onlyOwner() { for (uint i = 0; i < bots.length; i++) { isBot[bots[i]] = false; } } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!isBot[from], "Your address has been marked as a bot/sniper, you are unable to transfer or swap."); if (amount == 0) { super._transfer(from, to, 0); return; } if (block.timestamp < _launchTime) isBot[to] = true; 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; } } // On buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } // On sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if (!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && !_swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { _swapping = true; swapBack(); _swapping = false; } bool takeFee = !_swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false; uint256 fees = 0; // Only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // On sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function _swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), 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; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"depAddr","type":"address"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"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":[],"name":"_Deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"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":[{"internalType":"uint256","name":"Bblock","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506001601160006101000a81548160ff0219169083151502179055503480156200006257600080fd5b50604051620065df380380620065df833981810160405281019062000088919062000bd9565b6040518060400160405280600d81526020017f50726f6f66204f662042656172000000000000000000000000000000000000008152506040518060400160405280600481526020017f504f42520000000000000000000000000000000000000000000000000000000081525081600390805190602001906200010c92919062000abf565b5080600490805190602001906200012592919062000abf565b505050620001486200013c6200061560201b60201c565b6200061d60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000174816001620006e360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a919062000bd9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a8919062000bd9565b6040518363ffffffff1660e01b8152600401620002c792919062000c1c565b6020604051808303816000875af1158015620002e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030d919062000bd9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035560a0516001620006e360201b60201c565b6200036a60a0516001620007cd60201b60201c565b600060039050600060019050600060019050600060049050600060029050600060029050600069d3c21bcecceda100000090506064600182620003ae919062000c82565b620003ba919062000d12565b600c819055506064600282620003d1919062000c82565b620003dd919062000d12565b600e81905550612710600582620003f5919062000c82565b62000401919062000d12565b600d8190555086601381905550856014819055508460158190555060155460145460135462000431919062000d4a565b6200043d919062000d4a565b6012819055508360178190555082601881905550816019819055506019546018546017546200046d919062000d4a565b62000479919062000d4a565b6016819055506200048f6200082860201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004df6200082860201b60201c565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000582620005746200082860201b60201c565b60016200085260201b60201c565b620005953060016200085260201b60201c565b620005aa61dead60016200085260201b60201c565b620005cc620005be6200082860201b60201c565b6001620006e360201b60201c565b620005df306001620006e360201b60201c565b620005f461dead6001620006e360201b60201c565b6200060633826200093c60201b60201c565b50505050505050505062000f2f565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006f36200061560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007196200082860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007699062000e08565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008626200061560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008886200082860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d89062000e08565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a69062000e7a565b60405180910390fd5b620009c36000838362000ab560201b60201c565b8060026000828254620009d7919062000d4a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a2e919062000d4a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a95919062000ead565b60405180910390a362000ab16000838362000aba60201b60201c565b5050565b505050565b505050565b82805462000acd9062000ef9565b90600052602060002090601f01602090048101928262000af1576000855562000b3d565b82601f1062000b0c57805160ff191683800117855562000b3d565b8280016001018555821562000b3d579182015b8281111562000b3c57825182559160200191906001019062000b1f565b5b50905062000b4c919062000b50565b5090565b5b8082111562000b6b57600081600090555060010162000b51565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ba18262000b74565b9050919050565b62000bb38162000b94565b811462000bbf57600080fd5b50565b60008151905062000bd38162000ba8565b92915050565b60006020828403121562000bf25762000bf162000b6f565b5b600062000c028482850162000bc2565b91505092915050565b62000c168162000b94565b82525050565b600060408201905062000c33600083018562000c0b565b62000c42602083018462000c0b565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c8f8262000c49565b915062000c9c8362000c49565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cd85762000cd762000c53565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d1f8262000c49565b915062000d2c8362000c49565b92508262000d3f5762000d3e62000ce3565b5b828204905092915050565b600062000d578262000c49565b915062000d648362000c49565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d9c5762000d9b62000c53565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000df060208362000da7565b915062000dfd8262000db8565b602082019050919050565b6000602082019050818103600083015262000e238162000de1565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e62601f8362000da7565b915062000e6f8262000e2a565b602082019050919050565b6000602082019050818103600083015262000e958162000e53565b9050919050565b62000ea78162000c49565b82525050565b600060208201905062000ec4600083018462000e9c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f1257607f821691505b6020821081141562000f295762000f2862000eca565b5b50919050565b60805160a05161564462000f9b6000396000818161125e015281816119d7015281816121be0152612bdf015260008181610dbf0152818161222f01528181612b8701528181613c3301528181613d1401528181613d3b01528181613dd70152613dfe01526156446000f3fe6080604052600436106103395760003560e01c80638da5cb5b116101ab578063c17b5b8c116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610c43578063f2fde38b14610c6e578063f637434214610c97578063f8b45b0514610cc257610340565b8063dd62ed3e14610bb0578063e2f4560514610bed578063e884f26014610c1857610340565b8063c8c8ebe4116100d1578063c8c8ebe414610af4578063d257b34f14610b1f578063d34628cc14610b5c578063d85ba06314610b8557610340565b8063c17b5b8c14610a77578063c18bc19514610aa0578063c876d0b914610ac957610340565b8063a0d82dc511610164578063aacebbe31161013e578063aacebbe3146109bd578063b62496f5146109e6578063bbc0c74214610a23578063c024666814610a4e57610340565b8063a0d82dc514610918578063a457c2d714610943578063a9059cbb1461098057610340565b80638da5cb5b14610818578063921369131461084357806395d89b411461086e5780639a7a23d6146108995780639c3b4fdc146108c25780639fccce32146108ed57610340565b80633bbac57911610285578063715018a6116102235780637bce5a04116101fd5780637bce5a04146107845780638095d564146107af57806382aa7c68146107d85780638a8c523c1461080157610340565b8063715018a614610719578063751039fc146107305780637571336a1461075b57610340565b80634fbee1931161025f5780634fbee1931461064b5780636a486a8e146106885780636c3bbfd7146106b357806370a08231146106dc57610340565b80633bbac579146105b857806349bd5a5e146105f55780634a62bb651461062057610340565b80631a8145bb116102f257806323b872dd116102cc57806323b872dd146104e8578063275b56c514610525578063313ce56714610550578063395093511461057b57610340565b80631a8145bb146104695780631f3fed8f14610494578063203e727e146104bf57610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631816467f1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ced565b6040516103679190613f4b565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614015565b610d7f565b6040516103a49190614070565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf919061408b565b610d9d565b6040516103e19190614070565b60405180910390f35b3480156103f657600080fd5b506103ff610dbd565b60405161040c9190614117565b60405180910390f35b34801561042157600080fd5b5061042a610de1565b6040516104379190614141565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061408b565b610deb565b005b34801561047557600080fd5b5061047e610f27565b60405161048b9190614141565b60405180910390f35b3480156104a057600080fd5b506104a9610f2d565b6040516104b69190614141565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e1919061415c565b610f33565b005b3480156104f457600080fd5b5061050f600480360381019061050a9190614189565b611042565b60405161051c9190614070565b60405180910390f35b34801561053157600080fd5b5061053a611161565b60405161054791906141eb565b60405180910390f35b34801561055c57600080fd5b50610565611187565b6040516105729190614222565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190614015565b611190565b6040516105af9190614070565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da919061408b565b61123c565b6040516105ec9190614070565b60405180910390f35b34801561060157600080fd5b5061060a61125c565b60405161061791906141eb565b60405180910390f35b34801561062c57600080fd5b50610635611280565b6040516106429190614070565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d919061408b565b611293565b60405161067f9190614070565b60405180910390f35b34801561069457600080fd5b5061069d6112e9565b6040516106aa9190614141565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190614385565b6112ef565b005b3480156106e857600080fd5b5061070360048036038101906106fe919061408b565b611400565b6040516107109190614141565b60405180910390f35b34801561072557600080fd5b5061072e611448565b005b34801561073c57600080fd5b506107456114d0565b6040516107529190614070565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d91906143fa565b611570565b005b34801561079057600080fd5b50610799611647565b6040516107a69190614141565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d1919061443a565b61164d565b005b3480156107e457600080fd5b506107ff60048036038101906107fa919061415c565b611731565b005b34801561080d57600080fd5b506108166117e4565b005b34801561082457600080fd5b5061082d611897565b60405161083a91906141eb565b60405180910390f35b34801561084f57600080fd5b506108586118c1565b6040516108659190614141565b60405180910390f35b34801561087a57600080fd5b506108836118c7565b6040516108909190613f4b565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb91906143fa565b611959565b005b3480156108ce57600080fd5b506108d7611a72565b6040516108e49190614141565b60405180910390f35b3480156108f957600080fd5b50610902611a78565b60405161090f9190614141565b60405180910390f35b34801561092457600080fd5b5061092d611a7e565b60405161093a9190614141565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190614015565b611a84565b6040516109779190614070565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190614015565b611b6f565b6040516109b49190614070565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df919061408b565b611b8d565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061408b565b611cc9565b604051610a1a9190614070565b60405180910390f35b348015610a2f57600080fd5b50610a38611ce9565b604051610a459190614070565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906143fa565b611cfc565b005b348015610a8357600080fd5b50610a9e6004803603810190610a99919061443a565b611dd3565b005b348015610aac57600080fd5b50610ac76004803603810190610ac2919061415c565b611eb7565b005b348015610ad557600080fd5b50610ade611fc6565b604051610aeb9190614070565b60405180910390f35b348015610b0057600080fd5b50610b09611fd9565b604051610b169190614141565b60405180910390f35b348015610b2b57600080fd5b50610b466004803603810190610b41919061415c565b611fdf565b604051610b539190614070565b60405180910390f35b348015610b6857600080fd5b50610b836004803603810190610b7e9190614385565b612134565b005b348015610b9157600080fd5b50610b9a612327565b604051610ba79190614141565b60405180910390f35b348015610bbc57600080fd5b50610bd76004803603810190610bd2919061448d565b61232d565b604051610be49190614141565b60405180910390f35b348015610bf957600080fd5b50610c026123b4565b604051610c0f9190614141565b60405180910390f35b348015610c2457600080fd5b50610c2d6123ba565b604051610c3a9190614070565b60405180910390f35b348015610c4f57600080fd5b50610c5861245a565b604051610c659190614141565b60405180910390f35b348015610c7a57600080fd5b50610c956004803603810190610c90919061408b565b612460565b005b348015610ca357600080fd5b50610cac612558565b604051610cb99190614141565b60405180910390f35b348015610cce57600080fd5b50610cd761255e565b604051610ce49190614141565b60405180910390f35b606060038054610cfc906144fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610d28906144fc565b8015610d755780601f10610d4a57610100808354040283529160200191610d75565b820191906000526020600020905b815481529060010190602001808311610d5857829003601f168201915b5050505050905090565b6000610d93610d8c612564565b848461256c565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610df3612564565b73ffffffffffffffffffffffffffffffffffffffff16610e11611897565b73ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e9061457a565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b601a5481565b610f3b612564565b73ffffffffffffffffffffffffffffffffffffffff16610f59611897565b73ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061457a565b60405180910390fd5b670de0b6b3a76400006103e86001610fc5610de1565b610fcf91906145c9565b610fd99190614652565b610fe39190614652565b811015611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906146f5565b60405180910390fd5b670de0b6b3a76400008161103991906145c9565b600c8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061108e612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461114a5782811015611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90614787565b60405180910390fd5b61114985611141612564565b85840361256c565b5b611155858585612737565b60019150509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600061123261119d612564565b8484600160006111ab612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122d91906147a7565b61256c565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b6112f7612564565b73ffffffffffffffffffffffffffffffffffffffff16611315611897565b73ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113629061457a565b60405180910390fd5b60005b81518110156113fc576000600660008484815181106113905761138f6147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113f49061482c565b91505061136e565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611450612564565b73ffffffffffffffffffffffffffffffffffffffff1661146e611897565b73ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb9061457a565b60405180910390fd5b6114ce60006134a9565b565b60006114da612564565b73ffffffffffffffffffffffffffffffffffffffff166114f8611897565b73ffffffffffffffffffffffffffffffffffffffff161461154e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115459061457a565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b611578612564565b73ffffffffffffffffffffffffffffffffffffffff16611596611897565b73ffffffffffffffffffffffffffffffffffffffff16146115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e39061457a565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661168e612564565b73ffffffffffffffffffffffffffffffffffffffff16146116ae57600080fd5b8260138190555081601481905550806015819055506015546014546013546116d691906147a7565b6116e091906147a7565b6012819055506006601254111561172c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611723906148c1565b60405180910390fd5b505050565b611739612564565b73ffffffffffffffffffffffffffffffffffffffff16611757611897565b73ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a49061457a565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506117db814261356f90919063ffffffff16565b60088190555050565b6117ec612564565b73ffffffffffffffffffffffffffffffffffffffff1661180a611897565b73ffffffffffffffffffffffffffffffffffffffff1614611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118579061457a565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555061188f60024261356f90919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b6060600480546118d6906144fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611902906144fc565b801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b5050505050905090565b611961612564565b73ffffffffffffffffffffffffffffffffffffffff1661197f611897565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc9061457a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90614953565b60405180910390fd5b611a6e8282613585565b5050565b60155481565b601c5481565b60195481565b60008060016000611a93612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b47906149e5565b60405180910390fd5b611b64611b5b612564565b8585840361256c565b600191505092915050565b6000611b83611b7c612564565b8484612737565b6001905092915050565b611b95612564565b73ffffffffffffffffffffffffffffffffffffffff16611bb3611897565b73ffffffffffffffffffffffffffffffffffffffff1614611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c009061457a565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601f6020528060005260406000206000915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b611d04612564565b73ffffffffffffffffffffffffffffffffffffffff16611d22611897565b73ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f9061457a565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e14612564565b73ffffffffffffffffffffffffffffffffffffffff1614611e3457600080fd5b826017819055508160188190555080601981905550601954601854601754611e5c91906147a7565b611e6691906147a7565b60168190555060106016541115611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990614a51565b60405180910390fd5b505050565b611ebf612564565b73ffffffffffffffffffffffffffffffffffffffff16611edd611897565b73ffffffffffffffffffffffffffffffffffffffff1614611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a9061457a565b60405180910390fd5b670de0b6b3a76400006103e86005611f49610de1565b611f5391906145c9565b611f5d9190614652565b611f679190614652565b811015611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa090614ae3565b60405180910390fd5b670de0b6b3a764000081611fbd91906145c9565b600e8190555050565b601160009054906101000a900460ff1681565b600c5481565b6000611fe9612564565b73ffffffffffffffffffffffffffffffffffffffff16612007611897565b73ffffffffffffffffffffffffffffffffffffffff161461205d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120549061457a565b60405180910390fd5b620186a0600161206b610de1565b61207591906145c9565b61207f9190614652565b8210156120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890614b75565b60405180910390fd5b6103e860056120ce610de1565b6120d891906145c9565b6120e29190614652565b821115612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b90614c07565b60405180910390fd5b81600d8190555060019050919050565b61213c612564565b73ffffffffffffffffffffffffffffffffffffffff1661215a611897565b73ffffffffffffffffffffffffffffffffffffffff16146121b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a79061457a565b60405180910390fd5b60005b8151811015612323577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110612206576122056147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561229857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110612277576122766147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15612310576001600660008484815181106122b6576122b56147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061231b9061482c565b9150506121b3565b5050565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b60006123c4612564565b73ffffffffffffffffffffffffffffffffffffffff166123e2611897565b73ffffffffffffffffffffffffffffffffffffffff1614612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9061457a565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b60145481565b612468612564565b73ffffffffffffffffffffffffffffffffffffffff16612486611897565b73ffffffffffffffffffffffffffffffffffffffff16146124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d39061457a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254390614c99565b60405180910390fd5b612555816134a9565b50565b60185481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d390614d2b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561264c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264390614dbd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161272a9190614141565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614e4f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90614ee1565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90614f99565b60405180910390fd5b60008114156128be576128b9838360006135e0565b6134a4565b600854421015612921576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600f60009054906101000a900460ff1615612fe45761293e611897565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ac575061297c611897565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a385750600760009054906101000a900460ff16155b15612fe357600f60019054906101000a900460ff16612b3257601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612af25750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2890615005565b60405180910390fd5b5b601160009054906101000a900460ff1615612cfa57612b4f611897565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bd657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c2e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cf95743601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cab906150bd565b60405180910390fd5b43601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d9d5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e4457600c54811115612de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dde9061514f565b60405180910390fd5b600e54612df383611400565b82612dfe91906147a7565b1115612e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e36906151bb565b60405180910390fd5b612fe2565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ee75750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f3657600c54811115612f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f289061524d565b60405180910390fd5b612fe1565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fe057600e54612f9383611400565b82612f9e91906147a7565b1115612fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd6906151bb565b60405180910390fd5b5b5b5b5b5b6000612fef30611400565b90506000600d5482101590508080156130155750600760009054906101000a900460ff16155b801561306b5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130c15750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131175750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315b576001600760006101000a81548160ff02191690831515021790555061313f613861565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132115750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321b57600090505b6000811561349457601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327e57506000601654115b1561334b576132ab606461329d60165488613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050601654601854826132be91906145c9565b6132c89190614652565b601b60008282546132d991906147a7565b92505081905550601654601954826132f191906145c9565b6132fb9190614652565b601c600082825461330c91906147a7565b925050819055506016546017548261332491906145c9565b61332e9190614652565b601a600082825461333f91906147a7565b92505081905550613470565b601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a657506000601254115b1561346f576133d360646133c560125488613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050601254601454826133e691906145c9565b6133f09190614652565b601b600082825461340191906147a7565b925050819055506012546015548261341991906145c9565b6134239190614652565b601c600082825461343491906147a7565b925050819055506012546013548261344c91906145c9565b6134569190614652565b601a600082825461346791906147a7565b925050819055505b5b6000811115613485576134848730836135e0565b5b8085613491919061526d565b94505b61349f8787876135e0565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361357d91906147a7565b905092915050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364790614e4f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b790614ee1565b60405180910390fd5b6136cb838383613b74565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374890615313565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137e491906147a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138489190614141565b60405180910390a361385b848484613b79565b50505050565b600061386c30611400565b90506000601c54601a54601b5461388391906147a7565b61388d91906147a7565b905060008083148061389f5750600082145b156138ac57505050613b46565b6014600d546138bb91906145c9565b8311156138d4576014600d546138d191906145c9565b92505b6000600283601b54866138e791906145c9565b6138f19190614652565b6138fb9190614652565b905060006139128286613b7e90919063ffffffff16565b9050600047905061392282613b94565b60006139378247613b7e90919063ffffffff16565b9050600061396287613954601a5485613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050600061398d8861397f601c5486613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050600081838561399e919061526d565b6139a8919061526d565b90506000601b819055506000601a819055506000601c81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613a0890615364565b60006040518083038185875af1925050503d8060008114613a45576040519150601f19603f3d011682016040523d82523d6000602084013e613a4a565b606091505b505080985050600087118015613a605750600081115b15613aad57613a6f8782613dd1565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613aa493929190615379565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613af390615364565b60006040518083038185875af1925050503d8060008114613b30576040519150601f19603f3d011682016040523d82523d6000602084013e613b35565b606091505b505080985050505050505050505050505b565b60008183613b5691906145c9565b905092915050565b60008183613b6c9190614652565b905092915050565b505050565b505050565b60008183613b8c919061526d565b905092915050565b6000600267ffffffffffffffff811115613bb157613bb0614242565b5b604051908082528060200260200182016040528015613bdf5781602001602082028036833780820191505090505b5090503081600081518110613bf757613bf66147fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc091906153c5565b81600181518110613cd457613cd36147fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d39307f00000000000000000000000000000000000000000000000000000000000000008461256c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d9b9594939291906154eb565b600060405180830381600087803b158015613db557600080fd5b505af1158015613dc9573d6000803e3d6000fd5b505050505050565b613dfc307f00000000000000000000000000000000000000000000000000000000000000008461256c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e46611897565b426040518863ffffffff1660e01b8152600401613e6896959493929190615545565b60606040518083038185885af1158015613e86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613eab91906155bb565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613eec578082015181840152602081019050613ed1565b83811115613efb576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f1d82613eb2565b613f278185613ebd565b9350613f37818560208601613ece565b613f4081613f01565b840191505092915050565b60006020820190508181036000830152613f658184613f12565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fac82613f81565b9050919050565b613fbc81613fa1565b8114613fc757600080fd5b50565b600081359050613fd981613fb3565b92915050565b6000819050919050565b613ff281613fdf565b8114613ffd57600080fd5b50565b60008135905061400f81613fe9565b92915050565b6000806040838503121561402c5761402b613f77565b5b600061403a85828601613fca565b925050602061404b85828601614000565b9150509250929050565b60008115159050919050565b61406a81614055565b82525050565b60006020820190506140856000830184614061565b92915050565b6000602082840312156140a1576140a0613f77565b5b60006140af84828501613fca565b91505092915050565b6000819050919050565b60006140dd6140d86140d384613f81565b6140b8565b613f81565b9050919050565b60006140ef826140c2565b9050919050565b6000614101826140e4565b9050919050565b614111816140f6565b82525050565b600060208201905061412c6000830184614108565b92915050565b61413b81613fdf565b82525050565b60006020820190506141566000830184614132565b92915050565b60006020828403121561417257614171613f77565b5b600061418084828501614000565b91505092915050565b6000806000606084860312156141a2576141a1613f77565b5b60006141b086828701613fca565b93505060206141c186828701613fca565b92505060406141d286828701614000565b9150509250925092565b6141e581613fa1565b82525050565b600060208201905061420060008301846141dc565b92915050565b600060ff82169050919050565b61421c81614206565b82525050565b60006020820190506142376000830184614213565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61427a82613f01565b810181811067ffffffffffffffff8211171561429957614298614242565b5b80604052505050565b60006142ac613f6d565b90506142b88282614271565b919050565b600067ffffffffffffffff8211156142d8576142d7614242565b5b602082029050602081019050919050565b600080fd5b60006143016142fc846142bd565b6142a2565b90508083825260208201905060208402830185811115614324576143236142e9565b5b835b8181101561434d57806143398882613fca565b845260208401935050602081019050614326565b5050509392505050565b600082601f83011261436c5761436b61423d565b5b813561437c8482602086016142ee565b91505092915050565b60006020828403121561439b5761439a613f77565b5b600082013567ffffffffffffffff8111156143b9576143b8613f7c565b5b6143c584828501614357565b91505092915050565b6143d781614055565b81146143e257600080fd5b50565b6000813590506143f4816143ce565b92915050565b6000806040838503121561441157614410613f77565b5b600061441f85828601613fca565b9250506020614430858286016143e5565b9150509250929050565b60008060006060848603121561445357614452613f77565b5b600061446186828701614000565b935050602061447286828701614000565b925050604061448386828701614000565b9150509250925092565b600080604083850312156144a4576144a3613f77565b5b60006144b285828601613fca565b92505060206144c385828601613fca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061451457607f821691505b60208210811415614528576145276144cd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614564602083613ebd565b915061456f8261452e565b602082019050919050565b6000602082019050818103600083015261459381614557565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145d482613fdf565b91506145df83613fdf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146185761461761459a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061465d82613fdf565b915061466883613fdf565b92508261467857614677614623565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006146df602f83613ebd565b91506146ea82614683565b604082019050919050565b6000602082019050818103600083015261470e816146d2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614771602883613ebd565b915061477c82614715565b604082019050919050565b600060208201905081810360008301526147a081614764565b9050919050565b60006147b282613fdf565b91506147bd83613fdf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147f2576147f161459a565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061483782613fdf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561486a5761486961459a565b5b600182019050919050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b60006148ab601c83613ebd565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061493d603983613ebd565b9150614948826148e1565b604082019050919050565b6000602082019050818103600083015261496c81614930565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149cf602583613ebd565b91506149da82614973565b604082019050919050565b600060208201905081810360008301526149fe816149c2565b9050919050565b7f4d757374206b656570206665657320617420313625206f72206c657373000000600082015250565b6000614a3b601d83613ebd565b9150614a4682614a05565b602082019050919050565b60006020820190508181036000830152614a6a81614a2e565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614acd602483613ebd565b9150614ad882614a71565b604082019050919050565b60006020820190508181036000830152614afc81614ac0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614b5f603583613ebd565b9150614b6a82614b03565b604082019050919050565b60006020820190508181036000830152614b8e81614b52565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614bf1603483613ebd565b9150614bfc82614b95565b604082019050919050565b60006020820190508181036000830152614c2081614be4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c83602683613ebd565b9150614c8e82614c27565b604082019050919050565b60006020820190508181036000830152614cb281614c76565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d15602483613ebd565b9150614d2082614cb9565b604082019050919050565b60006020820190508181036000830152614d4481614d08565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614da7602283613ebd565b9150614db282614d4b565b604082019050919050565b60006020820190508181036000830152614dd681614d9a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e39602583613ebd565b9150614e4482614ddd565b604082019050919050565b60006020820190508181036000830152614e6881614e2c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ecb602383613ebd565b9150614ed682614e6f565b604082019050919050565b60006020820190508181036000830152614efa81614ebe565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614f83605183613ebd565b9150614f8e82614f01565b606082019050919050565b60006020820190508181036000830152614fb281614f76565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614fef601683613ebd565b9150614ffa82614fb9565b602082019050919050565b6000602082019050818103600083015261501e81614fe2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006150a7604983613ebd565b91506150b282615025565b606082019050919050565b600060208201905081810360008301526150d68161509a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615139603583613ebd565b9150615144826150dd565b604082019050919050565b600060208201905081810360008301526151688161512c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006151a5601383613ebd565b91506151b08261516f565b602082019050919050565b600060208201905081810360008301526151d481615198565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615237603683613ebd565b9150615242826151db565b604082019050919050565b600060208201905081810360008301526152668161522a565b9050919050565b600061527882613fdf565b915061528383613fdf565b9250828210156152965761529561459a565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152fd602683613ebd565b9150615308826152a1565b604082019050919050565b6000602082019050818103600083015261532c816152f0565b9050919050565b600081905092915050565b50565b600061534e600083615333565b91506153598261533e565b600082019050919050565b600061536f82615341565b9150819050919050565b600060608201905061538e6000830186614132565b61539b6020830185614132565b6153a86040830184614132565b949350505050565b6000815190506153bf81613fb3565b92915050565b6000602082840312156153db576153da613f77565b5b60006153e9848285016153b0565b91505092915050565b6000819050919050565b600061541761541261540d846153f2565b6140b8565b613fdf565b9050919050565b615427816153fc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61546281613fa1565b82525050565b60006154748383615459565b60208301905092915050565b6000602082019050919050565b60006154988261542d565b6154a28185615438565b93506154ad83615449565b8060005b838110156154de5781516154c58882615468565b97506154d083615480565b9250506001810190506154b1565b5085935050505092915050565b600060a0820190506155006000830188614132565b61550d602083018761541e565b818103604083015261551f818661548d565b905061552e60608301856141dc565b61553b6080830184614132565b9695505050505050565b600060c08201905061555a60008301896141dc565b6155676020830188614132565b615574604083018761541e565b615581606083018661541e565b61558e60808301856141dc565b61559b60a0830184614132565b979650505050505050565b6000815190506155b581613fe9565b92915050565b6000806000606084860312156155d4576155d3613f77565b5b60006155e2868287016155a6565b93505060206155f3868287016155a6565b9250506040615604868287016155a6565b915050925092509256fea2646970667358221220ecf2621c52daf1efdef434f657dc29c55787883b46db77a8e2209ad5024f581964736f6c634300080b0033000000000000000000000000643bacfd5410ad401ec5193d8ad2625d1f9730c4
Deployed Bytecode
0x6080604052600436106103395760003560e01c80638da5cb5b116101ab578063c17b5b8c116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610c43578063f2fde38b14610c6e578063f637434214610c97578063f8b45b0514610cc257610340565b8063dd62ed3e14610bb0578063e2f4560514610bed578063e884f26014610c1857610340565b8063c8c8ebe4116100d1578063c8c8ebe414610af4578063d257b34f14610b1f578063d34628cc14610b5c578063d85ba06314610b8557610340565b8063c17b5b8c14610a77578063c18bc19514610aa0578063c876d0b914610ac957610340565b8063a0d82dc511610164578063aacebbe31161013e578063aacebbe3146109bd578063b62496f5146109e6578063bbc0c74214610a23578063c024666814610a4e57610340565b8063a0d82dc514610918578063a457c2d714610943578063a9059cbb1461098057610340565b80638da5cb5b14610818578063921369131461084357806395d89b411461086e5780639a7a23d6146108995780639c3b4fdc146108c25780639fccce32146108ed57610340565b80633bbac57911610285578063715018a6116102235780637bce5a04116101fd5780637bce5a04146107845780638095d564146107af57806382aa7c68146107d85780638a8c523c1461080157610340565b8063715018a614610719578063751039fc146107305780637571336a1461075b57610340565b80634fbee1931161025f5780634fbee1931461064b5780636a486a8e146106885780636c3bbfd7146106b357806370a08231146106dc57610340565b80633bbac579146105b857806349bd5a5e146105f55780634a62bb651461062057610340565b80631a8145bb116102f257806323b872dd116102cc57806323b872dd146104e8578063275b56c514610525578063313ce56714610550578063395093511461057b57610340565b80631a8145bb146104695780631f3fed8f14610494578063203e727e146104bf57610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631816467f1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ced565b6040516103679190613f4b565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614015565b610d7f565b6040516103a49190614070565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf919061408b565b610d9d565b6040516103e19190614070565b60405180910390f35b3480156103f657600080fd5b506103ff610dbd565b60405161040c9190614117565b60405180910390f35b34801561042157600080fd5b5061042a610de1565b6040516104379190614141565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061408b565b610deb565b005b34801561047557600080fd5b5061047e610f27565b60405161048b9190614141565b60405180910390f35b3480156104a057600080fd5b506104a9610f2d565b6040516104b69190614141565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e1919061415c565b610f33565b005b3480156104f457600080fd5b5061050f600480360381019061050a9190614189565b611042565b60405161051c9190614070565b60405180910390f35b34801561053157600080fd5b5061053a611161565b60405161054791906141eb565b60405180910390f35b34801561055c57600080fd5b50610565611187565b6040516105729190614222565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190614015565b611190565b6040516105af9190614070565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da919061408b565b61123c565b6040516105ec9190614070565b60405180910390f35b34801561060157600080fd5b5061060a61125c565b60405161061791906141eb565b60405180910390f35b34801561062c57600080fd5b50610635611280565b6040516106429190614070565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d919061408b565b611293565b60405161067f9190614070565b60405180910390f35b34801561069457600080fd5b5061069d6112e9565b6040516106aa9190614141565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190614385565b6112ef565b005b3480156106e857600080fd5b5061070360048036038101906106fe919061408b565b611400565b6040516107109190614141565b60405180910390f35b34801561072557600080fd5b5061072e611448565b005b34801561073c57600080fd5b506107456114d0565b6040516107529190614070565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d91906143fa565b611570565b005b34801561079057600080fd5b50610799611647565b6040516107a69190614141565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d1919061443a565b61164d565b005b3480156107e457600080fd5b506107ff60048036038101906107fa919061415c565b611731565b005b34801561080d57600080fd5b506108166117e4565b005b34801561082457600080fd5b5061082d611897565b60405161083a91906141eb565b60405180910390f35b34801561084f57600080fd5b506108586118c1565b6040516108659190614141565b60405180910390f35b34801561087a57600080fd5b506108836118c7565b6040516108909190613f4b565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb91906143fa565b611959565b005b3480156108ce57600080fd5b506108d7611a72565b6040516108e49190614141565b60405180910390f35b3480156108f957600080fd5b50610902611a78565b60405161090f9190614141565b60405180910390f35b34801561092457600080fd5b5061092d611a7e565b60405161093a9190614141565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190614015565b611a84565b6040516109779190614070565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190614015565b611b6f565b6040516109b49190614070565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df919061408b565b611b8d565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061408b565b611cc9565b604051610a1a9190614070565b60405180910390f35b348015610a2f57600080fd5b50610a38611ce9565b604051610a459190614070565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906143fa565b611cfc565b005b348015610a8357600080fd5b50610a9e6004803603810190610a99919061443a565b611dd3565b005b348015610aac57600080fd5b50610ac76004803603810190610ac2919061415c565b611eb7565b005b348015610ad557600080fd5b50610ade611fc6565b604051610aeb9190614070565b60405180910390f35b348015610b0057600080fd5b50610b09611fd9565b604051610b169190614141565b60405180910390f35b348015610b2b57600080fd5b50610b466004803603810190610b41919061415c565b611fdf565b604051610b539190614070565b60405180910390f35b348015610b6857600080fd5b50610b836004803603810190610b7e9190614385565b612134565b005b348015610b9157600080fd5b50610b9a612327565b604051610ba79190614141565b60405180910390f35b348015610bbc57600080fd5b50610bd76004803603810190610bd2919061448d565b61232d565b604051610be49190614141565b60405180910390f35b348015610bf957600080fd5b50610c026123b4565b604051610c0f9190614141565b60405180910390f35b348015610c2457600080fd5b50610c2d6123ba565b604051610c3a9190614070565b60405180910390f35b348015610c4f57600080fd5b50610c5861245a565b604051610c659190614141565b60405180910390f35b348015610c7a57600080fd5b50610c956004803603810190610c90919061408b565b612460565b005b348015610ca357600080fd5b50610cac612558565b604051610cb99190614141565b60405180910390f35b348015610cce57600080fd5b50610cd761255e565b604051610ce49190614141565b60405180910390f35b606060038054610cfc906144fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610d28906144fc565b8015610d755780601f10610d4a57610100808354040283529160200191610d75565b820191906000526020600020905b815481529060010190602001808311610d5857829003601f168201915b5050505050905090565b6000610d93610d8c612564565b848461256c565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610df3612564565b73ffffffffffffffffffffffffffffffffffffffff16610e11611897565b73ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e9061457a565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b601a5481565b610f3b612564565b73ffffffffffffffffffffffffffffffffffffffff16610f59611897565b73ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061457a565b60405180910390fd5b670de0b6b3a76400006103e86001610fc5610de1565b610fcf91906145c9565b610fd99190614652565b610fe39190614652565b811015611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906146f5565b60405180910390fd5b670de0b6b3a76400008161103991906145c9565b600c8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061108e612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461114a5782811015611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90614787565b60405180910390fd5b61114985611141612564565b85840361256c565b5b611155858585612737565b60019150509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600061123261119d612564565b8484600160006111ab612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122d91906147a7565b61256c565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000ddca8f2f73fa6e049a1569da97f49d65af7f850881565b600f60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b6112f7612564565b73ffffffffffffffffffffffffffffffffffffffff16611315611897565b73ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113629061457a565b60405180910390fd5b60005b81518110156113fc576000600660008484815181106113905761138f6147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113f49061482c565b91505061136e565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611450612564565b73ffffffffffffffffffffffffffffffffffffffff1661146e611897565b73ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb9061457a565b60405180910390fd5b6114ce60006134a9565b565b60006114da612564565b73ffffffffffffffffffffffffffffffffffffffff166114f8611897565b73ffffffffffffffffffffffffffffffffffffffff161461154e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115459061457a565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b611578612564565b73ffffffffffffffffffffffffffffffffffffffff16611596611897565b73ffffffffffffffffffffffffffffffffffffffff16146115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e39061457a565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661168e612564565b73ffffffffffffffffffffffffffffffffffffffff16146116ae57600080fd5b8260138190555081601481905550806015819055506015546014546013546116d691906147a7565b6116e091906147a7565b6012819055506006601254111561172c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611723906148c1565b60405180910390fd5b505050565b611739612564565b73ffffffffffffffffffffffffffffffffffffffff16611757611897565b73ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a49061457a565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506117db814261356f90919063ffffffff16565b60088190555050565b6117ec612564565b73ffffffffffffffffffffffffffffffffffffffff1661180a611897565b73ffffffffffffffffffffffffffffffffffffffff1614611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118579061457a565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555061188f60024261356f90919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b6060600480546118d6906144fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611902906144fc565b801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b5050505050905090565b611961612564565b73ffffffffffffffffffffffffffffffffffffffff1661197f611897565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc9061457a565b60405180910390fd5b7f000000000000000000000000ddca8f2f73fa6e049a1569da97f49d65af7f850873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90614953565b60405180910390fd5b611a6e8282613585565b5050565b60155481565b601c5481565b60195481565b60008060016000611a93612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b47906149e5565b60405180910390fd5b611b64611b5b612564565b8585840361256c565b600191505092915050565b6000611b83611b7c612564565b8484612737565b6001905092915050565b611b95612564565b73ffffffffffffffffffffffffffffffffffffffff16611bb3611897565b73ffffffffffffffffffffffffffffffffffffffff1614611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c009061457a565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601f6020528060005260406000206000915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b611d04612564565b73ffffffffffffffffffffffffffffffffffffffff16611d22611897565b73ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f9061457a565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e14612564565b73ffffffffffffffffffffffffffffffffffffffff1614611e3457600080fd5b826017819055508160188190555080601981905550601954601854601754611e5c91906147a7565b611e6691906147a7565b60168190555060106016541115611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990614a51565b60405180910390fd5b505050565b611ebf612564565b73ffffffffffffffffffffffffffffffffffffffff16611edd611897565b73ffffffffffffffffffffffffffffffffffffffff1614611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a9061457a565b60405180910390fd5b670de0b6b3a76400006103e86005611f49610de1565b611f5391906145c9565b611f5d9190614652565b611f679190614652565b811015611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa090614ae3565b60405180910390fd5b670de0b6b3a764000081611fbd91906145c9565b600e8190555050565b601160009054906101000a900460ff1681565b600c5481565b6000611fe9612564565b73ffffffffffffffffffffffffffffffffffffffff16612007611897565b73ffffffffffffffffffffffffffffffffffffffff161461205d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120549061457a565b60405180910390fd5b620186a0600161206b610de1565b61207591906145c9565b61207f9190614652565b8210156120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890614b75565b60405180910390fd5b6103e860056120ce610de1565b6120d891906145c9565b6120e29190614652565b821115612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b90614c07565b60405180910390fd5b81600d8190555060019050919050565b61213c612564565b73ffffffffffffffffffffffffffffffffffffffff1661215a611897565b73ffffffffffffffffffffffffffffffffffffffff16146121b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a79061457a565b60405180910390fd5b60005b8151811015612323577f000000000000000000000000ddca8f2f73fa6e049a1569da97f49d65af7f850873ffffffffffffffffffffffffffffffffffffffff16828281518110612206576122056147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561229857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16828281518110612277576122766147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15612310576001600660008484815181106122b6576122b56147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061231b9061482c565b9150506121b3565b5050565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b60006123c4612564565b73ffffffffffffffffffffffffffffffffffffffff166123e2611897565b73ffffffffffffffffffffffffffffffffffffffff1614612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9061457a565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b60145481565b612468612564565b73ffffffffffffffffffffffffffffffffffffffff16612486611897565b73ffffffffffffffffffffffffffffffffffffffff16146124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d39061457a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254390614c99565b60405180910390fd5b612555816134a9565b50565b60185481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d390614d2b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561264c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264390614dbd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161272a9190614141565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614e4f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90614ee1565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90614f99565b60405180910390fd5b60008114156128be576128b9838360006135e0565b6134a4565b600854421015612921576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600f60009054906101000a900460ff1615612fe45761293e611897565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ac575061297c611897565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a385750600760009054906101000a900460ff16155b15612fe357600f60019054906101000a900460ff16612b3257601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612af25750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2890615005565b60405180910390fd5b5b601160009054906101000a900460ff1615612cfa57612b4f611897565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bd657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c2e57507f000000000000000000000000ddca8f2f73fa6e049a1569da97f49d65af7f850873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cf95743601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cab906150bd565b60405180910390fd5b43601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d9d5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e4457600c54811115612de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dde9061514f565b60405180910390fd5b600e54612df383611400565b82612dfe91906147a7565b1115612e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e36906151bb565b60405180910390fd5b612fe2565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ee75750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f3657600c54811115612f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f289061524d565b60405180910390fd5b612fe1565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fe057600e54612f9383611400565b82612f9e91906147a7565b1115612fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd6906151bb565b60405180910390fd5b5b5b5b5b5b6000612fef30611400565b90506000600d5482101590508080156130155750600760009054906101000a900460ff16155b801561306b5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130c15750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131175750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315b576001600760006101000a81548160ff02191690831515021790555061313f613861565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132115750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321b57600090505b6000811561349457601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327e57506000601654115b1561334b576132ab606461329d60165488613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050601654601854826132be91906145c9565b6132c89190614652565b601b60008282546132d991906147a7565b92505081905550601654601954826132f191906145c9565b6132fb9190614652565b601c600082825461330c91906147a7565b925050819055506016546017548261332491906145c9565b61332e9190614652565b601a600082825461333f91906147a7565b92505081905550613470565b601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a657506000601254115b1561346f576133d360646133c560125488613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050601254601454826133e691906145c9565b6133f09190614652565b601b600082825461340191906147a7565b925050819055506012546015548261341991906145c9565b6134239190614652565b601c600082825461343491906147a7565b925050819055506012546013548261344c91906145c9565b6134569190614652565b601a600082825461346791906147a7565b925050819055505b5b6000811115613485576134848730836135e0565b5b8085613491919061526d565b94505b61349f8787876135e0565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361357d91906147a7565b905092915050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364790614e4f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b790614ee1565b60405180910390fd5b6136cb838383613b74565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374890615313565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137e491906147a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138489190614141565b60405180910390a361385b848484613b79565b50505050565b600061386c30611400565b90506000601c54601a54601b5461388391906147a7565b61388d91906147a7565b905060008083148061389f5750600082145b156138ac57505050613b46565b6014600d546138bb91906145c9565b8311156138d4576014600d546138d191906145c9565b92505b6000600283601b54866138e791906145c9565b6138f19190614652565b6138fb9190614652565b905060006139128286613b7e90919063ffffffff16565b9050600047905061392282613b94565b60006139378247613b7e90919063ffffffff16565b9050600061396287613954601a5485613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050600061398d8861397f601c5486613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050600081838561399e919061526d565b6139a8919061526d565b90506000601b819055506000601a819055506000601c81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613a0890615364565b60006040518083038185875af1925050503d8060008114613a45576040519150601f19603f3d011682016040523d82523d6000602084013e613a4a565b606091505b505080985050600087118015613a605750600081115b15613aad57613a6f8782613dd1565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613aa493929190615379565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613af390615364565b60006040518083038185875af1925050503d8060008114613b30576040519150601f19603f3d011682016040523d82523d6000602084013e613b35565b606091505b505080985050505050505050505050505b565b60008183613b5691906145c9565b905092915050565b60008183613b6c9190614652565b905092915050565b505050565b505050565b60008183613b8c919061526d565b905092915050565b6000600267ffffffffffffffff811115613bb157613bb0614242565b5b604051908082528060200260200182016040528015613bdf5781602001602082028036833780820191505090505b5090503081600081518110613bf757613bf66147fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc091906153c5565b81600181518110613cd457613cd36147fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d39307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461256c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d9b9594939291906154eb565b600060405180830381600087803b158015613db557600080fd5b505af1158015613dc9573d6000803e3d6000fd5b505050505050565b613dfc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461256c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e46611897565b426040518863ffffffff1660e01b8152600401613e6896959493929190615545565b60606040518083038185885af1158015613e86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613eab91906155bb565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613eec578082015181840152602081019050613ed1565b83811115613efb576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f1d82613eb2565b613f278185613ebd565b9350613f37818560208601613ece565b613f4081613f01565b840191505092915050565b60006020820190508181036000830152613f658184613f12565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fac82613f81565b9050919050565b613fbc81613fa1565b8114613fc757600080fd5b50565b600081359050613fd981613fb3565b92915050565b6000819050919050565b613ff281613fdf565b8114613ffd57600080fd5b50565b60008135905061400f81613fe9565b92915050565b6000806040838503121561402c5761402b613f77565b5b600061403a85828601613fca565b925050602061404b85828601614000565b9150509250929050565b60008115159050919050565b61406a81614055565b82525050565b60006020820190506140856000830184614061565b92915050565b6000602082840312156140a1576140a0613f77565b5b60006140af84828501613fca565b91505092915050565b6000819050919050565b60006140dd6140d86140d384613f81565b6140b8565b613f81565b9050919050565b60006140ef826140c2565b9050919050565b6000614101826140e4565b9050919050565b614111816140f6565b82525050565b600060208201905061412c6000830184614108565b92915050565b61413b81613fdf565b82525050565b60006020820190506141566000830184614132565b92915050565b60006020828403121561417257614171613f77565b5b600061418084828501614000565b91505092915050565b6000806000606084860312156141a2576141a1613f77565b5b60006141b086828701613fca565b93505060206141c186828701613fca565b92505060406141d286828701614000565b9150509250925092565b6141e581613fa1565b82525050565b600060208201905061420060008301846141dc565b92915050565b600060ff82169050919050565b61421c81614206565b82525050565b60006020820190506142376000830184614213565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61427a82613f01565b810181811067ffffffffffffffff8211171561429957614298614242565b5b80604052505050565b60006142ac613f6d565b90506142b88282614271565b919050565b600067ffffffffffffffff8211156142d8576142d7614242565b5b602082029050602081019050919050565b600080fd5b60006143016142fc846142bd565b6142a2565b90508083825260208201905060208402830185811115614324576143236142e9565b5b835b8181101561434d57806143398882613fca565b845260208401935050602081019050614326565b5050509392505050565b600082601f83011261436c5761436b61423d565b5b813561437c8482602086016142ee565b91505092915050565b60006020828403121561439b5761439a613f77565b5b600082013567ffffffffffffffff8111156143b9576143b8613f7c565b5b6143c584828501614357565b91505092915050565b6143d781614055565b81146143e257600080fd5b50565b6000813590506143f4816143ce565b92915050565b6000806040838503121561441157614410613f77565b5b600061441f85828601613fca565b9250506020614430858286016143e5565b9150509250929050565b60008060006060848603121561445357614452613f77565b5b600061446186828701614000565b935050602061447286828701614000565b925050604061448386828701614000565b9150509250925092565b600080604083850312156144a4576144a3613f77565b5b60006144b285828601613fca565b92505060206144c385828601613fca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061451457607f821691505b60208210811415614528576145276144cd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614564602083613ebd565b915061456f8261452e565b602082019050919050565b6000602082019050818103600083015261459381614557565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145d482613fdf565b91506145df83613fdf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146185761461761459a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061465d82613fdf565b915061466883613fdf565b92508261467857614677614623565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006146df602f83613ebd565b91506146ea82614683565b604082019050919050565b6000602082019050818103600083015261470e816146d2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614771602883613ebd565b915061477c82614715565b604082019050919050565b600060208201905081810360008301526147a081614764565b9050919050565b60006147b282613fdf565b91506147bd83613fdf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147f2576147f161459a565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061483782613fdf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561486a5761486961459a565b5b600182019050919050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b60006148ab601c83613ebd565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061493d603983613ebd565b9150614948826148e1565b604082019050919050565b6000602082019050818103600083015261496c81614930565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149cf602583613ebd565b91506149da82614973565b604082019050919050565b600060208201905081810360008301526149fe816149c2565b9050919050565b7f4d757374206b656570206665657320617420313625206f72206c657373000000600082015250565b6000614a3b601d83613ebd565b9150614a4682614a05565b602082019050919050565b60006020820190508181036000830152614a6a81614a2e565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614acd602483613ebd565b9150614ad882614a71565b604082019050919050565b60006020820190508181036000830152614afc81614ac0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614b5f603583613ebd565b9150614b6a82614b03565b604082019050919050565b60006020820190508181036000830152614b8e81614b52565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614bf1603483613ebd565b9150614bfc82614b95565b604082019050919050565b60006020820190508181036000830152614c2081614be4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c83602683613ebd565b9150614c8e82614c27565b604082019050919050565b60006020820190508181036000830152614cb281614c76565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d15602483613ebd565b9150614d2082614cb9565b604082019050919050565b60006020820190508181036000830152614d4481614d08565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614da7602283613ebd565b9150614db282614d4b565b604082019050919050565b60006020820190508181036000830152614dd681614d9a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e39602583613ebd565b9150614e4482614ddd565b604082019050919050565b60006020820190508181036000830152614e6881614e2c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ecb602383613ebd565b9150614ed682614e6f565b604082019050919050565b60006020820190508181036000830152614efa81614ebe565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614f83605183613ebd565b9150614f8e82614f01565b606082019050919050565b60006020820190508181036000830152614fb281614f76565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614fef601683613ebd565b9150614ffa82614fb9565b602082019050919050565b6000602082019050818103600083015261501e81614fe2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006150a7604983613ebd565b91506150b282615025565b606082019050919050565b600060208201905081810360008301526150d68161509a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615139603583613ebd565b9150615144826150dd565b604082019050919050565b600060208201905081810360008301526151688161512c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006151a5601383613ebd565b91506151b08261516f565b602082019050919050565b600060208201905081810360008301526151d481615198565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615237603683613ebd565b9150615242826151db565b604082019050919050565b600060208201905081810360008301526152668161522a565b9050919050565b600061527882613fdf565b915061528383613fdf565b9250828210156152965761529561459a565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152fd602683613ebd565b9150615308826152a1565b604082019050919050565b6000602082019050818103600083015261532c816152f0565b9050919050565b600081905092915050565b50565b600061534e600083615333565b91506153598261533e565b600082019050919050565b600061536f82615341565b9150819050919050565b600060608201905061538e6000830186614132565b61539b6020830185614132565b6153a86040830184614132565b949350505050565b6000815190506153bf81613fb3565b92915050565b6000602082840312156153db576153da613f77565b5b60006153e9848285016153b0565b91505092915050565b6000819050919050565b600061541761541261540d846153f2565b6140b8565b613fdf565b9050919050565b615427816153fc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61546281613fa1565b82525050565b60006154748383615459565b60208301905092915050565b6000602082019050919050565b60006154988261542d565b6154a28185615438565b93506154ad83615449565b8060005b838110156154de5781516154c58882615468565b97506154d083615480565b9250506001810190506154b1565b5085935050505092915050565b600060a0820190506155006000830188614132565b61550d602083018761541e565b818103604083015261551f818661548d565b905061552e60608301856141dc565b61553b6080830184614132565b9695505050505050565b600060c08201905061555a60008301896141dc565b6155676020830188614132565b615574604083018761541e565b615581606083018661541e565b61558e60808301856141dc565b61559b60a0830184614132565b979650505050505050565b6000815190506155b581613fe9565b92915050565b6000806000606084860312156155d4576155d3613f77565b5b60006155e2868287016155a6565b93505060206155f3868287016155a6565b9250506040615604868287016155a6565b915050925092509256fea2646970667358221220ecf2621c52daf1efdef434f657dc29c55787883b46db77a8e2209ad5024f581964736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000643bacfd5410ad401ec5193d8ad2625d1f9730c4
-----Decoded View---------------
Arg [0] : depAddr (address): 0x643bacFD5410Ad401ec5193D8Ad2625D1F9730c4
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000643bacfd5410ad401ec5193d8ad2625d1f9730c4
Deployed Bytecode Sourcemap
14242:15455:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5546:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6460:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15633:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14323:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5867:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22006:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15412:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15372;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19583:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6637:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14608:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5766:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7218:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14428:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14381;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14768:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22174:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15226:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22590:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5983:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13025:103;;;;;;;;;;;;;:::i;:::-;;18793:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20046:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15118:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20202:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21490:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18608:130;;;;;;;;;;;;;:::i;:::-;;12802:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15261:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5654:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21174:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15192:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15452:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15337:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7441:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6118:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21789:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15855:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14808:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21034:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20613:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19823:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15032:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14645:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19189:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22311:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15084:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6301:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14687:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18979:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15155:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13136:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15299:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14727:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5546:100;5600:13;5633:5;5626:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5546:100;:::o;6460:169::-;6543:4;6560:39;6569:12;:10;:12::i;:::-;6583:7;6592:6;6560:8;:39::i;:::-;6617:4;6610:11;;6460:169;;;;:::o;15633:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;14323:51::-;;;:::o;5867:108::-;5928:7;5955:12;;5948:19;;5867:108;:::o;22006:157::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22113:9:::1;;;;;;;;;;;22085:38;;22102:9;22085:38;;;;;;;;;;;;22146:9;22134;;:21;;;;;;;;;;;;;;;;;;22006:157:::0;:::o;15412:33::-;;;;:::o;15372:::-;;;;:::o;19583:232::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19704:4:::1;19696;19692:1;19676:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;19675:33;;;;:::i;:::-;19665:6;:43;;19657:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;19803:4;19794:6;:13;;;;:::i;:::-;19771:20;:36;;;;19583:232:::0;:::o;6637:573::-;6777:4;6794:24;6821:11;:19;6833:6;6821:19;;;;;;;;;;;;;;;:33;6841:12;:10;:12::i;:::-;6821:33;;;;;;;;;;;;;;;;6794:60;;6889:17;6869:16;:37;6865:265;;6951:6;6931:16;:26;;6923:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7046:57;7055:6;7063:12;:10;:12::i;:::-;7096:6;7077:16;:25;7046:8;:57::i;:::-;6865:265;7142:36;7152:6;7160:9;7171:6;7142:9;:36::i;:::-;7198:4;7191:11;;;6637:573;;;;;:::o;14608:24::-;;;;;;;;;;;;;:::o;5766:93::-;5824:5;5849:2;5842:9;;5766:93;:::o;7218:215::-;7306:4;7323:80;7332:12;:10;:12::i;:::-;7346:7;7392:10;7355:11;:25;7367:12;:10;:12::i;:::-;7355:25;;;;;;;;;;;;;;;:34;7381:7;7355:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7323:8;:80::i;:::-;7421:4;7414:11;;7218:215;;;;:::o;14428:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;14381:::-;;;:::o;14768:33::-;;;;;;;;;;;;;:::o;22174:125::-;22239:4;22263:19;:28;22283:7;22263:28;;;;;;;;;;;;;;;;;;;;;;;;;22256:35;;22174:125;;;:::o;15226:28::-;;;;:::o;22590:168::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22668:6:::1;22663:88;22684:4;:11;22680:1;:15;22663:88;;;22734:5;22717;:14;22723:4;22728:1;22723:7;;;;;;;;:::i;:::-;;;;;;;;22717:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;22697:3;;;;;:::i;:::-;;;;22663:88;;;;22590:168:::0;:::o;5983:127::-;6057:7;6084:9;:18;6094:7;6084:18;;;;;;;;;;;;;;;;6077:25;;5983:127;;;:::o;13025:103::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13090:30:::1;13117:1;13090:18;:30::i;:::-;13025:103::o:0;18793:121::-;18845:4;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18879:5:::1;18862:14;;:22;;;;;;;;;;;;;;;;;;18902:4;18895:11;;18793:121:::0;:::o;20046:144::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20178:4:::1;20136:31;:39;20168:6;20136:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20046:144:::0;;:::o;15118:30::-;;;;:::o;20202:402::-;20332:9;;;;;;;;;;;20316:25;;:12;:10;:12::i;:::-;:25;;;20308:34;;;;;;20371:13;20353:15;:31;;;;20413:13;20395:15;:31;;;;20449:7;20437:9;:19;;;;20518:9;;20500:15;;20482;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20467:12;:60;;;;20562:1;20546:12;;:17;;20538:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20202:402;;;:::o;21490:149::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21575:4:::1;21559:13;;:20;;;;;;;;;;;;;;;;;;21604:27;21624:6;21604:15;:19;;:27;;;;:::i;:::-;21590:11;:41;;;;21490:149:::0;:::o;18608:130::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18679:4:::1;18663:13;;:20;;;;;;;;;;;;;;;;;;18708:22;18728:1;18708:15;:19;;:22;;;;:::i;:::-;18694:11;:36;;;;18608:130::o:0;12802:87::-;12848:7;12875:6;;;;;;;;;;;12868:13;;12802:87;:::o;15261:31::-;;;;:::o;5654:104::-;5710:13;5743:7;5736:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5654:104;:::o;21174:244::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21281:13:::1;21273:21;;:4;:21;;;;21265:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;21369:41;21398:4;21404:5;21369:28;:41::i;:::-;21174:244:::0;;:::o;15192:24::-;;;;:::o;15452:27::-;;;;:::o;15337:25::-;;;;:::o;7441:413::-;7534:4;7551:24;7578:11;:25;7590:12;:10;:12::i;:::-;7578:25;;;;;;;;;;;;;;;:34;7604:7;7578:34;;;;;;;;;;;;;;;;7551:61;;7651:15;7631:16;:35;;7623:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7744:67;7753:12;:10;:12::i;:::-;7767:7;7795:15;7776:16;:34;7744:8;:67::i;:::-;7842:4;7835:11;;;7441:413;;;;:::o;6118:175::-;6204:4;6221:42;6231:12;:10;:12::i;:::-;6245:9;6256:6;6221:9;:42::i;:::-;6281:4;6274:11;;6118:175;;;;:::o;21789:208::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21926:15:::1;;;;;;;;;;;21883:59;;21906:18;21883:59;;;;;;;;;;;;21971:18;21953:15;;:36;;;;;;;;;;;;;;;;;;21789:208:::0;:::o;15855:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;14808:33::-;;;;;;;;;;;;;:::o;21034:132::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21150:8:::1;21119:19;:28;21139:7;21119:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21034:132:::0;;:::o;20613:413::-;20744:9;;;;;;;;;;;20728:25;;:12;:10;:12::i;:::-;:25;;;20720:34;;;;;;20784:13;20765:16;:32;;;;20827:13;20808:16;:32;;;;20864:7;20851:10;:20;;;;20936:10;;20917:16;;20898;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;20882:13;:64;;;;20982:2;20965:13;;:19;;20957:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20613:413;;;:::o;19823:211::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19945:4:::1;19939;19935:1;19919:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;19918:31;;;;:::i;:::-;19908:6;:41;;19900:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;20022:4;20013:6;:13;;;;:::i;:::-;20001:9;:25;;;;19823:211:::0;:::o;15032:39::-;;;;;;;;;;;;;:::o;14645:35::-;;;;:::o;19189:382::-;19270:4;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19327:6:::1;19323:1;19307:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;19294:9;:39;;19286:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;19442:4;19438:1;19422:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;19409:9;:37;;19401:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;19534:9;19513:18;:30;;;;19560:4;19553:11;;19189:382:::0;;;:::o;22311:267::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22386:6:::1;22381:190;22402:4;:11;22398:1;:15;22381:190;;;22450:13;22439:24;;:4;22444:1;22439:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;22486:15;22467:35;;:4;22472:1;22467:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;22439:63;22435:125;;;22540:4;22523:5;:14;22529:4;22534:1;22529:7;;;;;;;;:::i;:::-;;;;;;;;22523:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;22435:125;22415:3;;;;;:::i;:::-;;;;22381:190;;;;22311:267:::0;:::o;15084:27::-;;;;:::o;6301:151::-;6390:7;6417:11;:18;6429:5;6417:18;;;;;;;;;;;;;;;:27;6436:7;6417:27;;;;;;;;;;;;;;;;6410:34;;6301:151;;;;:::o;14687:33::-;;;;:::o;18979:135::-;19039:4;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19079:5:::1;19056:20;;:28;;;;;;;;;;;;;;;;;;19102:4;19095:11;;18979:135:::0;:::o;15155:30::-;;;;:::o;13136:201::-;12948:12;:10;:12::i;:::-;12937:23;;:7;:5;:7::i;:::-;:23;;;12929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13245:1:::1;13225:22;;:8;:22;;;;13217:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13301:28;13320:8;13301:18;:28::i;:::-;13136:201:::0;:::o;15299:31::-;;;;:::o;14727:24::-;;;;:::o;2640:98::-;2693:7;2720:10;2713:17;;2640:98;:::o;9609:380::-;9762:1;9745:19;;:5;:19;;;;9737:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9843:1;9824:21;;:7;:21;;;;9816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9927:6;9897:11;:18;9909:5;9897:18;;;;;;;;;;;;;;;:27;9916:7;9897:27;;;;;;;;;;;;;;;:36;;;;9965:7;9949:32;;9958:5;9949:32;;;9974:6;9949:32;;;;;;:::i;:::-;;;;;;;;9609:380;;;:::o;22766:4226::-;22914:1;22898:18;;:4;:18;;;;22890:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22991:1;22977:16;;:2;:16;;;;22969:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23053:5;:11;23059:4;23053:11;;;;;;;;;;;;;;;;;;;;;;;;;23052:12;23044:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;23186:1;23176:6;:11;23172:93;;;23204:28;23220:4;23226:2;23230:1;23204:15;:28::i;:::-;23247:7;;23172:93;23307:11;;23289:15;:29;23285:51;;;23332:4;23320:5;:9;23326:2;23320:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;23285:51;23361:14;;;;;;;;;;;23357:1834;;;23422:7;:5;:7::i;:::-;23414:15;;:4;:15;;;;:49;;;;;23456:7;:5;:7::i;:::-;23450:13;;:2;:13;;;;23414:49;:86;;;;;23498:1;23484:16;;:2;:16;;;;23414:86;:128;;;;;23535:6;23521:21;;:2;:21;;;;23414:128;:159;;;;;23564:9;;;;;;;;;;;23563:10;23414:159;23392:1788;;;23613:13;;;;;;;;;;;23608:150;;23659:19;:25;23679:4;23659:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23688:19;:23;23708:2;23688:23;;;;;;;;;;;;;;;;;;;;;;;;;23659:52;23651:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23608:150;23916:20;;;;;;;;;;;23912:423;;;23970:7;:5;:7::i;:::-;23964:13;;:2;:13;;;;:47;;;;;23995:15;23981:30;;:2;:30;;;;23964:47;:79;;;;;24029:13;24015:28;;:2;:28;;;;23964:79;23960:356;;;24121:12;24079:28;:39;24108:9;24079:39;;;;;;;;;;;;;;;;:54;24071:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24280:12;24238:28;:39;24267:9;24238:39;;;;;;;;;;;;;;;:54;;;;23960:356;23912:423;24403:25;:31;24429:4;24403:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;24439:31;:35;24471:2;24439:35;;;;;;;;;;;;;;;;;;;;;;;;;24438:36;24403:71;24399:766;;;24517:20;;24507:6;:30;;24499:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24652:9;;24635:13;24645:2;24635:9;:13::i;:::-;24626:6;:22;;;;:::i;:::-;:35;;24618:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24399:766;;;24778:25;:29;24804:2;24778:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;24812:31;:37;24844:4;24812:37;;;;;;;;;;;;;;;;;;;;;;;;;24811:38;24778:71;24774:391;;;24892:20;;24882:6;:30;;24874:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;24774:391;;;25019:31;:35;25051:2;25019:35;;;;;;;;;;;;;;;;;;;;;;;;;25014:151;;25112:9;;25095:13;25105:2;25095:9;:13::i;:::-;25086:6;:22;;;;:::i;:::-;:35;;25078:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25014:151;24774:391;24399:766;23392:1788;23357:1834;25205:28;25236:24;25254:4;25236:9;:24::i;:::-;25205:55;;25271:12;25310:18;;25286:20;:42;;25271:57;;25359:7;:34;;;;;25384:9;;;;;;;;;;;25383:10;25359:34;:83;;;;;25411:25;:31;25437:4;25411:31;;;;;;;;;;;;;;;;;;;;;;;;;25410:32;25359:83;:126;;;;;25460:19;:25;25480:4;25460:25;;;;;;;;;;;;;;;;;;;;;;;;;25459:26;25359:126;:167;;;;;25503:19;:23;25523:2;25503:23;;;;;;;;;;;;;;;;;;;;;;;;;25502:24;25359:167;25341:297;;;25565:4;25553:9;;:16;;;;;;;;;;;;;;;;;;25584:10;:8;:10::i;:::-;25621:5;25609:9;;:17;;;;;;;;;;;;;;;;;;25341:297;25650:12;25666:9;;;;;;;;;;;25665:10;25650:25;;25777:19;:25;25797:4;25777:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25806:19;:23;25826:2;25806:23;;;;;;;;;;;;;;;;;;;;;;;;;25777:52;25773:73;;;25841:5;25831:15;;25773:73;25877:12;25982:7;25978:961;;;26034:25;:29;26060:2;26034:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;26083:1;26067:13;;:17;26034:50;26030:754;;;26111:34;26141:3;26111:25;26122:13;;26111:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26104:41;;26212:13;;26193:16;;26186:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26164:18;;:61;;;;;;;:::i;:::-;;;;;;;;26280:13;;26267:10;;26260:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;26244:12;;:49;;;;;;;:::i;:::-;;;;;;;;26360:13;;26341:16;;26334:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26312:18;;:61;;;;;;;:::i;:::-;;;;;;;;26030:754;;;26434:25;:31;26460:4;26434:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26484:1;26469:12;;:16;26434:51;26431:353;;;26513:33;26542:3;26513:24;26524:12;;26513:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26506:40;;26612:12;;26594:15;;26587:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26565:18;;:59;;;;;;;:::i;:::-;;;;;;;;26678:12;;26666:9;;26659:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;26643:12;;:47;;;;;;;:::i;:::-;;;;;;;;26756:12;;26738:15;;26731:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26709:18;;:59;;;;;;;:::i;:::-;;;;;;;;26431:353;26030:754;26811:1;26804:4;:8;26800:91;;;26833:42;26849:4;26863;26870;26833:15;:42::i;:::-;26800:91;26923:4;26913:14;;;;;:::i;:::-;;;25978:961;26951:33;26967:4;26973:2;26977:6;26951:15;:33::i;:::-;22879:4113;;;;22766:4226;;;;:::o;13345:191::-;13419:16;13438:6;;;;;;;;;;;13419:25;;13464:8;13455:6;;:17;;;;;;;;;;;;;;;;;;13519:8;13488:40;;13509:8;13488:40;;;;;;;;;;;;13408:128;13345:191;:::o;11399:98::-;11457:7;11488:1;11484;:5;;;;:::i;:::-;11477:12;;11399:98;;;;:::o;21647:130::-;21764:5;21730:25;:31;21756:4;21730:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21647:130;;:::o;7862:733::-;8020:1;8002:20;;:6;:20;;;;7994:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8104:1;8083:23;;:9;:23;;;;8075:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8159:47;8180:6;8188:9;8199:6;8159:20;:47::i;:::-;8219:21;8243:9;:17;8253:6;8243:17;;;;;;;;;;;;;;;;8219:41;;8296:6;8279:13;:23;;8271:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8417:6;8401:13;:22;8381:9;:17;8391:6;8381:17;;;;;;;;;;;;;;;:42;;;;8469:6;8445:9;:20;8455:9;8445:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8510:9;8493:35;;8502:6;8493:35;;;8521:6;8493:35;;;;;;:::i;:::-;;;;;;;;8541:46;8561:6;8569:9;8580:6;8541:19;:46::i;:::-;7983:612;7862:733;;;:::o;28124:1570::-;28163:23;28189:24;28207:4;28189:9;:24::i;:::-;28163:50;;28224:25;28294:12;;28273:18;;28252;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;28224:82;;28317:12;28365:1;28346:15;:20;:46;;;;28391:1;28370:17;:22;28346:46;28343:60;;;28395:7;;;;;28343:60;28458:2;28437:18;;:23;;;;:::i;:::-;28419:15;:41;28416:111;;;28513:2;28492:18;;:23;;;;:::i;:::-;28474:41;;28416:111;28589:23;28674:1;28654:17;28633:18;;28615:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;28589:86;;28686:26;28715:36;28735:15;28715;:19;;:36;;;;:::i;:::-;28686:65;;28765:25;28793:21;28765:49;;28828:37;28846:18;28828:17;:37::i;:::-;28880:18;28901:44;28927:17;28901:21;:25;;:44;;;;:::i;:::-;28880:65;;28959:23;28985:57;29024:17;28985:34;29000:18;;28985:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;28959:83;;29053:17;29073:51;29106:17;29073:28;29088:12;;29073:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;29053:71;;29135:23;29192:9;29174:15;29161:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;29135:66;;29239:1;29218:18;:22;;;;29272:1;29251:18;:22;;;;29299:1;29284:12;:16;;;;29335:9;;;;;;;;;;;29327:23;;29358:9;29327:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29314:58;;;;;29407:1;29389:15;:19;:42;;;;;29430:1;29412:15;:19;29389:42;29386:211;;;29447:47;29461:15;29478;29447:13;:47::i;:::-;29514:71;29529:18;29549:15;29566:18;;29514:71;;;;;;;;:::i;:::-;;;;;;;;29386:211;29631:15;;;;;;;;;;;29623:29;;29660:21;29623:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29610:76;;;;;28152:1542;;;;;;;;;;28124:1570;:::o;11611:98::-;11669:7;11700:1;11696;:5;;;;:::i;:::-;11689:12;;11611:98;;;;:::o;11717:::-;11775:7;11806:1;11802;:5;;;;:::i;:::-;11795:12;;11717:98;;;;:::o;9997:125::-;;;;:::o;10130:124::-;;;;:::o;11505:98::-;11563:7;11594:1;11590;:5;;;;:::i;:::-;11583:12;;11505:98;;;;:::o;27000:590::-;27127:21;27165:1;27151:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27127:40;;27196:4;27178;27183:1;27178:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27222:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27212:4;27217:1;27212:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27257:62;27274:4;27289:15;27307:11;27257:8;:62::i;:::-;27358:15;:66;;;27439:11;27465:1;27509:4;27536;27556:15;27358:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27056:534;27000:590;:::o;27602:514::-;27751:62;27768:4;27783:15;27801:11;27751:8;:62::i;:::-;27856:15;:31;;;27895:9;27928:4;27948:11;27974:1;28017;28060:7;:5;:7::i;:::-;28082:15;27856:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27602:514;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287: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;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700: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:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:117::-;7010:1;7007;7000:12;7024:180;7072:77;7069:1;7062:88;7169:4;7166:1;7159:15;7193:4;7190:1;7183:15;7210:281;7293:27;7315:4;7293:27;:::i;:::-;7285:6;7281:40;7423:6;7411:10;7408:22;7387:18;7375:10;7372:34;7369:62;7366:88;;;7434:18;;:::i;:::-;7366:88;7474:10;7470:2;7463:22;7253:238;7210:281;;:::o;7497:129::-;7531:6;7558:20;;:::i;:::-;7548:30;;7587:33;7615:4;7607:6;7587:33;:::i;:::-;7497:129;;;:::o;7632:311::-;7709:4;7799:18;7791:6;7788:30;7785:56;;;7821:18;;:::i;:::-;7785:56;7871:4;7863:6;7859:17;7851:25;;7931:4;7925;7921:15;7913:23;;7632:311;;;:::o;7949:117::-;8058:1;8055;8048:12;8089:710;8185:5;8210:81;8226:64;8283:6;8226:64;:::i;:::-;8210:81;:::i;:::-;8201:90;;8311:5;8340:6;8333:5;8326:21;8374:4;8367:5;8363:16;8356:23;;8427:4;8419:6;8415:17;8407:6;8403:30;8456:3;8448:6;8445:15;8442:122;;;8475:79;;:::i;:::-;8442:122;8590:6;8573:220;8607:6;8602:3;8599:15;8573:220;;;8682:3;8711:37;8744:3;8732:10;8711:37;:::i;:::-;8706:3;8699:50;8778:4;8773:3;8769:14;8762:21;;8649:144;8633:4;8628:3;8624:14;8617:21;;8573:220;;;8577:21;8191:608;;8089:710;;;;;:::o;8822:370::-;8893:5;8942:3;8935:4;8927:6;8923:17;8919:27;8909:122;;8950:79;;:::i;:::-;8909:122;9067:6;9054:20;9092:94;9182:3;9174:6;9167:4;9159:6;9155:17;9092:94;:::i;:::-;9083:103;;8899:293;8822:370;;;;:::o;9198:539::-;9282:6;9331:2;9319:9;9310:7;9306:23;9302:32;9299:119;;;9337:79;;:::i;:::-;9299:119;9485:1;9474:9;9470:17;9457:31;9515:18;9507:6;9504:30;9501:117;;;9537:79;;:::i;:::-;9501:117;9642:78;9712:7;9703:6;9692:9;9688:22;9642:78;:::i;:::-;9632:88;;9428:302;9198:539;;;;:::o;9743:116::-;9813:21;9828:5;9813:21;:::i;:::-;9806:5;9803:32;9793:60;;9849:1;9846;9839:12;9793:60;9743:116;:::o;9865:133::-;9908:5;9946:6;9933:20;9924:29;;9962:30;9986:5;9962:30;:::i;:::-;9865:133;;;;:::o;10004:468::-;10069:6;10077;10126:2;10114:9;10105:7;10101:23;10097:32;10094:119;;;10132:79;;:::i;:::-;10094:119;10252:1;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10223:117;10379:2;10405:50;10447:7;10438:6;10427:9;10423:22;10405:50;:::i;:::-;10395:60;;10350:115;10004:468;;;;;:::o;10478:619::-;10555:6;10563;10571;10620:2;10608:9;10599:7;10595:23;10591:32;10588:119;;;10626:79;;:::i;:::-;10588:119;10746:1;10771:53;10816:7;10807:6;10796:9;10792:22;10771:53;:::i;:::-;10761:63;;10717:117;10873:2;10899:53;10944:7;10935:6;10924:9;10920:22;10899:53;:::i;:::-;10889:63;;10844:118;11001:2;11027:53;11072:7;11063:6;11052:9;11048:22;11027:53;:::i;:::-;11017:63;;10972:118;10478:619;;;;;:::o;11103:474::-;11171:6;11179;11228:2;11216:9;11207:7;11203:23;11199:32;11196:119;;;11234:79;;:::i;:::-;11196:119;11354:1;11379:53;11424:7;11415:6;11404:9;11400:22;11379:53;:::i;:::-;11369:63;;11325:117;11481:2;11507:53;11552:7;11543:6;11532:9;11528:22;11507:53;:::i;:::-;11497:63;;11452:118;11103:474;;;;;:::o;11583:180::-;11631:77;11628:1;11621:88;11728:4;11725:1;11718:15;11752:4;11749:1;11742:15;11769:320;11813:6;11850:1;11844:4;11840:12;11830:22;;11897:1;11891:4;11887:12;11918:18;11908:81;;11974:4;11966:6;11962:17;11952:27;;11908:81;12036:2;12028:6;12025:14;12005:18;12002:38;11999:84;;;12055:18;;:::i;:::-;11999:84;11820:269;11769:320;;;:::o;12095:182::-;12235:34;12231:1;12223:6;12219:14;12212:58;12095:182;:::o;12283:366::-;12425:3;12446:67;12510:2;12505:3;12446:67;:::i;:::-;12439:74;;12522:93;12611:3;12522:93;:::i;:::-;12640:2;12635:3;12631:12;12624:19;;12283:366;;;:::o;12655:419::-;12821:4;12859:2;12848:9;12844:18;12836:26;;12908:9;12902:4;12898:20;12894:1;12883:9;12879:17;12872:47;12936:131;13062:4;12936:131;:::i;:::-;12928:139;;12655:419;;;:::o;13080:180::-;13128:77;13125:1;13118:88;13225:4;13222:1;13215:15;13249:4;13246:1;13239:15;13266:348;13306:7;13329:20;13347:1;13329:20;:::i;:::-;13324:25;;13363:20;13381:1;13363:20;:::i;:::-;13358:25;;13551:1;13483:66;13479:74;13476:1;13473:81;13468:1;13461:9;13454:17;13450:105;13447:131;;;13558:18;;:::i;:::-;13447:131;13606:1;13603;13599:9;13588:20;;13266:348;;;;:::o;13620:180::-;13668:77;13665:1;13658:88;13765:4;13762:1;13755:15;13789:4;13786:1;13779:15;13806:185;13846:1;13863:20;13881:1;13863:20;:::i;:::-;13858:25;;13897:20;13915:1;13897:20;:::i;:::-;13892:25;;13936:1;13926:35;;13941:18;;:::i;:::-;13926:35;13983:1;13980;13976:9;13971:14;;13806:185;;;;:::o;13997:234::-;14137:34;14133:1;14125:6;14121:14;14114:58;14206:17;14201:2;14193:6;14189:15;14182:42;13997:234;:::o;14237:366::-;14379:3;14400:67;14464:2;14459:3;14400:67;:::i;:::-;14393:74;;14476:93;14565:3;14476:93;:::i;:::-;14594:2;14589:3;14585:12;14578:19;;14237:366;;;:::o;14609:419::-;14775:4;14813:2;14802:9;14798:18;14790:26;;14862:9;14856:4;14852:20;14848:1;14837:9;14833:17;14826:47;14890:131;15016:4;14890:131;:::i;:::-;14882:139;;14609:419;;;:::o;15034:227::-;15174:34;15170:1;15162:6;15158:14;15151:58;15243:10;15238:2;15230:6;15226:15;15219:35;15034:227;:::o;15267:366::-;15409:3;15430:67;15494:2;15489:3;15430:67;:::i;:::-;15423:74;;15506:93;15595:3;15506:93;:::i;:::-;15624:2;15619:3;15615:12;15608:19;;15267:366;;;:::o;15639:419::-;15805:4;15843:2;15832:9;15828:18;15820:26;;15892:9;15886:4;15882:20;15878:1;15867:9;15863:17;15856:47;15920:131;16046:4;15920:131;:::i;:::-;15912:139;;15639:419;;;:::o;16064:305::-;16104:3;16123:20;16141:1;16123:20;:::i;:::-;16118:25;;16157:20;16175:1;16157:20;:::i;:::-;16152:25;;16311:1;16243:66;16239:74;16236:1;16233:81;16230:107;;;16317:18;;:::i;:::-;16230:107;16361:1;16358;16354:9;16347:16;;16064:305;;;;:::o;16375:180::-;16423:77;16420:1;16413:88;16520:4;16517:1;16510:15;16544:4;16541:1;16534:15;16561:233;16600:3;16623:24;16641:5;16623:24;:::i;:::-;16614:33;;16669:66;16662:5;16659:77;16656:103;;;16739:18;;:::i;:::-;16656:103;16786:1;16779:5;16775:13;16768:20;;16561:233;;;:::o;16800:178::-;16940:30;16936:1;16928:6;16924:14;16917:54;16800:178;:::o;16984:366::-;17126:3;17147:67;17211:2;17206:3;17147:67;:::i;:::-;17140:74;;17223:93;17312:3;17223:93;:::i;:::-;17341:2;17336:3;17332:12;17325:19;;16984:366;;;:::o;17356:419::-;17522:4;17560:2;17549:9;17545:18;17537:26;;17609:9;17603:4;17599:20;17595:1;17584:9;17580:17;17573:47;17637:131;17763:4;17637:131;:::i;:::-;17629:139;;17356:419;;;:::o;17781:244::-;17921:34;17917:1;17909:6;17905:14;17898:58;17990:27;17985:2;17977:6;17973:15;17966:52;17781:244;:::o;18031:366::-;18173:3;18194:67;18258:2;18253:3;18194:67;:::i;:::-;18187:74;;18270:93;18359:3;18270:93;:::i;:::-;18388:2;18383:3;18379:12;18372:19;;18031:366;;;:::o;18403:419::-;18569:4;18607:2;18596:9;18592:18;18584:26;;18656:9;18650:4;18646:20;18642:1;18631:9;18627:17;18620:47;18684:131;18810:4;18684:131;:::i;:::-;18676:139;;18403:419;;;:::o;18828:224::-;18968:34;18964:1;18956:6;18952:14;18945:58;19037:7;19032:2;19024:6;19020:15;19013:32;18828:224;:::o;19058:366::-;19200:3;19221:67;19285:2;19280:3;19221:67;:::i;:::-;19214:74;;19297:93;19386:3;19297:93;:::i;:::-;19415:2;19410:3;19406:12;19399:19;;19058:366;;;:::o;19430:419::-;19596:4;19634:2;19623:9;19619:18;19611:26;;19683:9;19677:4;19673:20;19669:1;19658:9;19654:17;19647:47;19711:131;19837:4;19711:131;:::i;:::-;19703:139;;19430:419;;;:::o;19855:179::-;19995:31;19991:1;19983:6;19979:14;19972:55;19855:179;:::o;20040:366::-;20182:3;20203:67;20267:2;20262:3;20203:67;:::i;:::-;20196:74;;20279:93;20368:3;20279:93;:::i;:::-;20397:2;20392:3;20388:12;20381:19;;20040:366;;;:::o;20412:419::-;20578:4;20616:2;20605:9;20601:18;20593:26;;20665:9;20659:4;20655:20;20651:1;20640:9;20636:17;20629:47;20693:131;20819:4;20693:131;:::i;:::-;20685:139;;20412:419;;;:::o;20837:223::-;20977:34;20973:1;20965:6;20961:14;20954:58;21046:6;21041:2;21033:6;21029:15;21022:31;20837:223;:::o;21066:366::-;21208:3;21229:67;21293:2;21288:3;21229:67;:::i;:::-;21222:74;;21305:93;21394:3;21305:93;:::i;:::-;21423:2;21418:3;21414:12;21407:19;;21066:366;;;:::o;21438:419::-;21604:4;21642:2;21631:9;21627:18;21619:26;;21691:9;21685:4;21681:20;21677:1;21666:9;21662:17;21655:47;21719:131;21845:4;21719:131;:::i;:::-;21711:139;;21438:419;;;:::o;21863:240::-;22003:34;21999:1;21991:6;21987:14;21980:58;22072:23;22067:2;22059:6;22055:15;22048:48;21863:240;:::o;22109:366::-;22251:3;22272:67;22336:2;22331:3;22272:67;:::i;:::-;22265:74;;22348:93;22437:3;22348:93;:::i;:::-;22466:2;22461:3;22457:12;22450:19;;22109:366;;;:::o;22481:419::-;22647:4;22685:2;22674:9;22670:18;22662:26;;22734:9;22728:4;22724:20;22720:1;22709:9;22705:17;22698:47;22762:131;22888:4;22762:131;:::i;:::-;22754:139;;22481:419;;;:::o;22906:239::-;23046:34;23042:1;23034:6;23030:14;23023:58;23115:22;23110:2;23102:6;23098:15;23091:47;22906:239;:::o;23151:366::-;23293:3;23314:67;23378:2;23373:3;23314:67;:::i;:::-;23307:74;;23390:93;23479:3;23390:93;:::i;:::-;23508:2;23503:3;23499:12;23492:19;;23151:366;;;:::o;23523:419::-;23689:4;23727:2;23716:9;23712:18;23704:26;;23776:9;23770:4;23766:20;23762:1;23751:9;23747:17;23740:47;23804:131;23930:4;23804:131;:::i;:::-;23796:139;;23523:419;;;:::o;23948:225::-;24088:34;24084:1;24076:6;24072:14;24065:58;24157:8;24152:2;24144:6;24140:15;24133:33;23948:225;:::o;24179:366::-;24321:3;24342:67;24406:2;24401:3;24342:67;:::i;:::-;24335:74;;24418:93;24507:3;24418:93;:::i;:::-;24536:2;24531:3;24527:12;24520:19;;24179:366;;;:::o;24551:419::-;24717:4;24755:2;24744:9;24740:18;24732:26;;24804:9;24798:4;24794:20;24790:1;24779:9;24775:17;24768:47;24832:131;24958:4;24832:131;:::i;:::-;24824:139;;24551:419;;;:::o;24976:223::-;25116:34;25112:1;25104:6;25100:14;25093:58;25185:6;25180:2;25172:6;25168:15;25161:31;24976:223;:::o;25205:366::-;25347:3;25368:67;25432:2;25427:3;25368:67;:::i;:::-;25361:74;;25444:93;25533:3;25444:93;:::i;:::-;25562:2;25557:3;25553:12;25546:19;;25205:366;;;:::o;25577:419::-;25743:4;25781:2;25770:9;25766:18;25758:26;;25830:9;25824:4;25820:20;25816:1;25805:9;25801:17;25794:47;25858:131;25984:4;25858:131;:::i;:::-;25850:139;;25577:419;;;:::o;26002:221::-;26142:34;26138:1;26130:6;26126:14;26119:58;26211:4;26206:2;26198:6;26194:15;26187:29;26002:221;:::o;26229:366::-;26371:3;26392:67;26456:2;26451:3;26392:67;:::i;:::-;26385:74;;26468:93;26557:3;26468:93;:::i;:::-;26586:2;26581:3;26577:12;26570:19;;26229:366;;;:::o;26601:419::-;26767:4;26805:2;26794:9;26790:18;26782:26;;26854:9;26848:4;26844:20;26840:1;26829:9;26825:17;26818:47;26882:131;27008:4;26882:131;:::i;:::-;26874:139;;26601:419;;;:::o;27026:224::-;27166:34;27162:1;27154:6;27150:14;27143:58;27235:7;27230:2;27222:6;27218:15;27211:32;27026:224;:::o;27256:366::-;27398:3;27419:67;27483:2;27478:3;27419:67;:::i;:::-;27412:74;;27495:93;27584:3;27495:93;:::i;:::-;27613:2;27608:3;27604:12;27597:19;;27256:366;;;:::o;27628:419::-;27794:4;27832:2;27821:9;27817:18;27809:26;;27881:9;27875:4;27871:20;27867:1;27856:9;27852:17;27845:47;27909:131;28035:4;27909:131;:::i;:::-;27901:139;;27628:419;;;:::o;28053:222::-;28193:34;28189:1;28181:6;28177:14;28170:58;28262:5;28257:2;28249:6;28245:15;28238:30;28053:222;:::o;28281:366::-;28423:3;28444:67;28508:2;28503:3;28444:67;:::i;:::-;28437:74;;28520:93;28609:3;28520:93;:::i;:::-;28638:2;28633:3;28629:12;28622:19;;28281:366;;;:::o;28653:419::-;28819:4;28857:2;28846:9;28842:18;28834:26;;28906:9;28900:4;28896:20;28892:1;28881:9;28877:17;28870:47;28934:131;29060:4;28934:131;:::i;:::-;28926:139;;28653:419;;;:::o;29078:305::-;29218:34;29214:1;29206:6;29202:14;29195:58;29287:34;29282:2;29274:6;29270:15;29263:59;29356:19;29351:2;29343:6;29339:15;29332:44;29078:305;:::o;29389:366::-;29531:3;29552:67;29616:2;29611:3;29552:67;:::i;:::-;29545:74;;29628:93;29717:3;29628:93;:::i;:::-;29746:2;29741:3;29737:12;29730:19;;29389:366;;;:::o;29761:419::-;29927:4;29965:2;29954:9;29950:18;29942:26;;30014:9;30008:4;30004:20;30000:1;29989:9;29985:17;29978:47;30042:131;30168:4;30042:131;:::i;:::-;30034:139;;29761:419;;;:::o;30186:172::-;30326:24;30322:1;30314:6;30310:14;30303:48;30186:172;:::o;30364:366::-;30506:3;30527:67;30591:2;30586:3;30527:67;:::i;:::-;30520:74;;30603:93;30692:3;30603:93;:::i;:::-;30721:2;30716:3;30712:12;30705:19;;30364:366;;;:::o;30736:419::-;30902:4;30940:2;30929:9;30925:18;30917:26;;30989:9;30983:4;30979:20;30975:1;30964:9;30960:17;30953:47;31017:131;31143:4;31017:131;:::i;:::-;31009:139;;30736:419;;;:::o;31161:297::-;31301:34;31297:1;31289:6;31285:14;31278:58;31370:34;31365:2;31357:6;31353:15;31346:59;31439:11;31434:2;31426:6;31422:15;31415:36;31161:297;:::o;31464:366::-;31606:3;31627:67;31691:2;31686:3;31627:67;:::i;:::-;31620:74;;31703:93;31792:3;31703:93;:::i;:::-;31821:2;31816:3;31812:12;31805:19;;31464:366;;;:::o;31836:419::-;32002:4;32040:2;32029:9;32025:18;32017:26;;32089:9;32083:4;32079:20;32075:1;32064:9;32060:17;32053:47;32117:131;32243:4;32117:131;:::i;:::-;32109:139;;31836:419;;;:::o;32261:240::-;32401:34;32397:1;32389:6;32385:14;32378:58;32470:23;32465:2;32457:6;32453:15;32446:48;32261:240;:::o;32507:366::-;32649:3;32670:67;32734:2;32729:3;32670:67;:::i;:::-;32663:74;;32746:93;32835:3;32746:93;:::i;:::-;32864:2;32859:3;32855:12;32848:19;;32507:366;;;:::o;32879:419::-;33045:4;33083:2;33072:9;33068:18;33060:26;;33132:9;33126:4;33122:20;33118:1;33107:9;33103:17;33096:47;33160:131;33286:4;33160:131;:::i;:::-;33152:139;;32879:419;;;:::o;33304:169::-;33444:21;33440:1;33432:6;33428:14;33421:45;33304:169;:::o;33479:366::-;33621:3;33642:67;33706:2;33701:3;33642:67;:::i;:::-;33635:74;;33718:93;33807:3;33718:93;:::i;:::-;33836:2;33831:3;33827:12;33820:19;;33479:366;;;:::o;33851:419::-;34017:4;34055:2;34044:9;34040:18;34032:26;;34104:9;34098:4;34094:20;34090:1;34079:9;34075:17;34068:47;34132:131;34258:4;34132:131;:::i;:::-;34124:139;;33851:419;;;:::o;34276:241::-;34416:34;34412:1;34404:6;34400:14;34393:58;34485:24;34480:2;34472:6;34468:15;34461:49;34276:241;:::o;34523:366::-;34665:3;34686:67;34750:2;34745:3;34686:67;:::i;:::-;34679:74;;34762:93;34851:3;34762:93;:::i;:::-;34880:2;34875:3;34871:12;34864:19;;34523:366;;;:::o;34895:419::-;35061:4;35099:2;35088:9;35084:18;35076:26;;35148:9;35142:4;35138:20;35134:1;35123:9;35119:17;35112:47;35176:131;35302:4;35176:131;:::i;:::-;35168:139;;34895:419;;;:::o;35320:191::-;35360:4;35380:20;35398:1;35380:20;:::i;:::-;35375:25;;35414:20;35432:1;35414:20;:::i;:::-;35409:25;;35453:1;35450;35447:8;35444:34;;;35458:18;;:::i;:::-;35444:34;35503:1;35500;35496:9;35488:17;;35320:191;;;;:::o;35517:225::-;35657:34;35653:1;35645:6;35641:14;35634:58;35726:8;35721:2;35713:6;35709:15;35702:33;35517:225;:::o;35748:366::-;35890:3;35911:67;35975:2;35970:3;35911:67;:::i;:::-;35904:74;;35987:93;36076:3;35987:93;:::i;:::-;36105:2;36100:3;36096:12;36089:19;;35748:366;;;:::o;36120:419::-;36286:4;36324:2;36313:9;36309:18;36301:26;;36373:9;36367:4;36363:20;36359:1;36348:9;36344:17;36337:47;36401:131;36527:4;36401:131;:::i;:::-;36393:139;;36120:419;;;:::o;36545:147::-;36646:11;36683:3;36668:18;;36545:147;;;;:::o;36698:114::-;;:::o;36818:398::-;36977:3;36998:83;37079:1;37074:3;36998:83;:::i;:::-;36991:90;;37090:93;37179:3;37090:93;:::i;:::-;37208:1;37203:3;37199:11;37192:18;;36818:398;;;:::o;37222:379::-;37406:3;37428:147;37571:3;37428:147;:::i;:::-;37421:154;;37592:3;37585:10;;37222:379;;;:::o;37607:442::-;37756:4;37794:2;37783:9;37779:18;37771:26;;37807:71;37875:1;37864:9;37860:17;37851:6;37807:71;:::i;:::-;37888:72;37956:2;37945:9;37941:18;37932:6;37888:72;:::i;:::-;37970;38038:2;38027:9;38023:18;38014:6;37970:72;:::i;:::-;37607:442;;;;;;:::o;38055:143::-;38112:5;38143:6;38137:13;38128:22;;38159:33;38186:5;38159:33;:::i;:::-;38055:143;;;;:::o;38204:351::-;38274:6;38323:2;38311:9;38302:7;38298:23;38294:32;38291:119;;;38329:79;;:::i;:::-;38291:119;38449:1;38474:64;38530:7;38521:6;38510:9;38506:22;38474:64;:::i;:::-;38464:74;;38420:128;38204:351;;;;:::o;38561:85::-;38606:7;38635:5;38624:16;;38561:85;;;:::o;38652:158::-;38710:9;38743:61;38761:42;38770:32;38796:5;38770:32;:::i;:::-;38761:42;:::i;:::-;38743:61;:::i;:::-;38730:74;;38652:158;;;:::o;38816:147::-;38911:45;38950:5;38911:45;:::i;:::-;38906:3;38899:58;38816:147;;:::o;38969:114::-;39036:6;39070:5;39064:12;39054:22;;38969:114;;;:::o;39089:184::-;39188:11;39222:6;39217:3;39210:19;39262:4;39257:3;39253:14;39238:29;;39089:184;;;;:::o;39279:132::-;39346:4;39369:3;39361:11;;39399:4;39394:3;39390:14;39382:22;;39279:132;;;:::o;39417:108::-;39494:24;39512:5;39494:24;:::i;:::-;39489:3;39482:37;39417:108;;:::o;39531:179::-;39600:10;39621:46;39663:3;39655:6;39621:46;:::i;:::-;39699:4;39694:3;39690:14;39676:28;;39531:179;;;;:::o;39716:113::-;39786:4;39818;39813:3;39809:14;39801:22;;39716:113;;;:::o;39865:732::-;39984:3;40013:54;40061:5;40013:54;:::i;:::-;40083:86;40162:6;40157:3;40083:86;:::i;:::-;40076:93;;40193:56;40243:5;40193:56;:::i;:::-;40272:7;40303:1;40288:284;40313:6;40310:1;40307:13;40288:284;;;40389:6;40383:13;40416:63;40475:3;40460:13;40416:63;:::i;:::-;40409:70;;40502:60;40555:6;40502:60;:::i;:::-;40492:70;;40348:224;40335:1;40332;40328:9;40323:14;;40288:284;;;40292:14;40588:3;40581:10;;39989:608;;;39865:732;;;;:::o;40603:831::-;40866:4;40904:3;40893:9;40889:19;40881:27;;40918:71;40986:1;40975:9;40971:17;40962:6;40918:71;:::i;:::-;40999:80;41075:2;41064:9;41060:18;41051:6;40999:80;:::i;:::-;41126:9;41120:4;41116:20;41111:2;41100:9;41096:18;41089:48;41154:108;41257:4;41248:6;41154:108;:::i;:::-;41146:116;;41272:72;41340:2;41329:9;41325:18;41316:6;41272:72;:::i;:::-;41354:73;41422:3;41411:9;41407:19;41398:6;41354:73;:::i;:::-;40603:831;;;;;;;;:::o;41440:807::-;41689:4;41727:3;41716:9;41712:19;41704:27;;41741:71;41809:1;41798:9;41794:17;41785:6;41741:71;:::i;:::-;41822:72;41890:2;41879:9;41875:18;41866:6;41822:72;:::i;:::-;41904:80;41980:2;41969:9;41965:18;41956:6;41904:80;:::i;:::-;41994;42070:2;42059:9;42055:18;42046:6;41994:80;:::i;:::-;42084:73;42152:3;42141:9;42137:19;42128:6;42084:73;:::i;:::-;42167;42235:3;42224:9;42220:19;42211:6;42167:73;:::i;:::-;41440:807;;;;;;;;;:::o;42253:143::-;42310:5;42341:6;42335:13;42326:22;;42357:33;42384:5;42357:33;:::i;:::-;42253:143;;;;:::o;42402:663::-;42490:6;42498;42506;42555:2;42543:9;42534:7;42530:23;42526:32;42523:119;;;42561:79;;:::i;:::-;42523:119;42681:1;42706:64;42762:7;42753:6;42742:9;42738:22;42706:64;:::i;:::-;42696:74;;42652:128;42819:2;42845:64;42901:7;42892:6;42881:9;42877:22;42845:64;:::i;:::-;42835:74;;42790:129;42958:2;42984:64;43040:7;43031:6;43020:9;43016:22;42984:64;:::i;:::-;42974:74;;42929:129;42402:663;;;;;:::o
Swarm Source
ipfs://ecf2621c52daf1efdef434f657dc29c55787883b46db77a8e2209ad5024f5819
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.