ERC-20
Overview
Max Total Supply
100,000,000 ANGELS
Holders
212
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
96,110.679915558509736144 ANGELSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
AngelsProtocol
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-30 */ // Website: https://angelsprotocol.com // X(Twitter): https://x.com/AngelsProtocol // Telegram: https://t.me/AngelsProtocol // AngelBot: https://t.me/angelsprotocol_bot // SPDX-License-Identifier: MIT pragma solidity ^0.8.23; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 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) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } 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; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract AngelsProtocol is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketerWallet; address public DevsWallet; uint256 public maxTx; uint256 public swapTokensAtAmount; uint256 public maxWallets; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellDevFee; uint256 public tokensForMarkets; uint256 public tokensForDev; mapping(address => bool) private _isBlackList; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTx; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketerWalletUpdated( address indexed newWallet, address indexed olDevsWalletallet ); event DevsWalletUpdated( address indexed newWallet, address indexed olDevsWalletallet ); constructor() ERC20("Angels Protocol", unicode"ANGELS") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFrommaxTx(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFrommaxTx(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 5; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 5; uint256 _sellDevFee = 0; buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; uint256 totalSupply = 100_000_000 * 1e18; maxTx = 1_000_000 * 1e18; maxWallets = 1_000_000 * 1e18; swapTokensAtAmount = (totalSupply * 3) / 10000; marketerWallet = address(0x2A5CD0F896E7D5D2076389eA404ab2d4A1ed2603); DevsWallet = address(0x2A5CD0F896E7D5D2076389eA404ab2d4A1ed2603); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFrommaxTx(owner(), true); excludeFrommaxTx(address(this), true); excludeFrommaxTx(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function 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 maxTx lower than 0.1%" ); maxTx = newNum * (10**18); } function updatemaxWalletsAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallets lower than 0.5%" ); maxWallets = newNum * (10**18); } function excludeFrommaxTx(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTx[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateFees( uint256 _buyMarketingFee, uint256 _buyDevFee, uint256 _sellMarketingFee, uint256 _sellDevFee) external onlyOwner { buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; require(buyTotalFees <= 75, "Must keep fees at 75% or less"); require(sellTotalFees <= 75, "Must keep fees at 75% or less"); } function updateBuyFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyDevFee; require(buyTotalFees <= 75, "Must keep fees at 75% or less"); } function updateSellFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellDevFee; require(sellTotalFees <= 75, "Must keep fees at 75% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updatemarketerWallet(address newmarketerWallet) external onlyOwner { emit marketerWalletUpdated(newmarketerWallet, marketerWallet); marketerWallet = newmarketerWallet; } function updateDevsWallet(address newWallet) external onlyOwner { emit DevsWalletUpdated(newWallet, DevsWallet); DevsWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); 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(!_isBlackList[from], "[from] black list"); require(!_isBlackList[to], "[to] black list"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (!tradingActive) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedmaxTx[to]) { require(amount <= maxTx, "Buy transfer amount exceeds the maxTx."); require(amount + balanceOf(to) <= maxWallets, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTx[from]) { require(amount <= maxTx, "Sell transfer amount exceeds the maxTx."); } else if (!_isExcludedmaxTx[to]) { require(amount + balanceOf(to) <= maxWallets, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if 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); tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarkets += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarkets += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function manualSwap(uint256 amount) external { require(_msgSender() == marketerWallet); require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount"); swapTokensForEth(amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarkets + tokensForDev; bool success; if (contractBalance == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); tokensForMarkets = 0; tokensForDev = 0; (success, ) = address(DevsWallet).call{value: ethForDev}(""); (success, ) = address(marketerWallet).call{ value: address(this).balance }(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevsWalletallet","type":"address"}],"name":"DevsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevsWalletallet","type":"address"}],"name":"marketerWalletUpdated","type":"event"},{"inputs":[],"name":"DevsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"excludeFrommaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarkets","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":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketerWallet","type":"address"}],"name":"updatemarketerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxWalletsAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526001600c5f6101000a81548160ff0219169083151502179055505f600c60016101000a81548160ff0219169083151502179055505f600c60026101000a81548160ff0219169083151502179055505f600e5f6101000a81548160ff021916908315150217905550348015610076575f80fd5b506040518060400160405280600f81526020017f416e67656c732050726f746f636f6c00000000000000000000000000000000008152506040518060400160405280600681526020017f414e47454c53000000000000000000000000000000000000000000000000000081525081600390816100f29190610ca5565b5080600490816101029190610ca5565b50505061012161011661056060201b60201c565b61056760201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061014a81600161062a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101eb9190610dd2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610250573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102749190610dd2565b6040518363ffffffff1660e01b8152600401610291929190610e0c565b6020604051808303815f875af11580156102ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d19190610dd2565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061034260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161062a60201b60201c565b61037460065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161070a60201b60201c565b5f600590505f80600590505f836010819055508260118190555060115460105461039e9190610e60565b600f8190555081601381905550806014819055506014546013546103c29190610e60565b6012819055505f6a52b7d2dcc80cd2e4000000905069d3c21bcecceda100000060098190555069d3c21bcecceda1000000600b819055506127106003826104099190610e93565b6104139190610f01565b600a81905550732a5cd0f896e7d5d2076389ea404ab2d4a1ed260360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732a5cd0f896e7d5d2076389ea404ab2d4a1ed260360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104df6104d26107a860201b60201c565b60016107d060201b60201c565b6104f03060016107d060201b60201c565b61050361dead60016107d060201b60201c565b6105216105146107a860201b60201c565b600161062a60201b60201c565b61053230600161062a60201b60201c565b61054561dead600161062a60201b60201c565b61055533826108fe60201b60201c565b50505050505061106c565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61063861056060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661065c6107a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990610f8b565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107de61056060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166108026107a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90610f8b565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516108f29190610fc3565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390611026565b60405180910390fd5b61097d5f8383610a6160201b60201c565b8060025f82825461098e9190610e60565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109e09190610e60565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a449190611053565b60405180910390a3610a5d5f8383610a6660201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ae657607f821691505b602082108103610af957610af8610aa2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b20565b610b658683610b20565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610ba9610ba4610b9f84610b7d565b610b86565b610b7d565b9050919050565b5f819050919050565b610bc283610b8f565b610bd6610bce82610bb0565b848454610b2c565b825550505050565b5f90565b610bea610bde565b610bf5818484610bb9565b505050565b5b81811015610c1857610c0d5f82610be2565b600181019050610bfb565b5050565b601f821115610c5d57610c2e81610aff565b610c3784610b11565b81016020851015610c46578190505b610c5a610c5285610b11565b830182610bfa565b50505b505050565b5f82821c905092915050565b5f610c7d5f1984600802610c62565b1980831691505092915050565b5f610c958383610c6e565b9150826002028217905092915050565b610cae82610a6b565b67ffffffffffffffff811115610cc757610cc6610a75565b5b610cd18254610acf565b610cdc828285610c1c565b5f60209050601f831160018114610d0d575f8415610cfb578287015190505b610d058582610c8a565b865550610d6c565b601f198416610d1b86610aff565b5f5b82811015610d4257848901518255600182019150602085019450602081019050610d1d565b86831015610d5f5784890151610d5b601f891682610c6e565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610da182610d78565b9050919050565b610db181610d97565b8114610dbb575f80fd5b50565b5f81519050610dcc81610da8565b92915050565b5f60208284031215610de757610de6610d74565b5b5f610df484828501610dbe565b91505092915050565b610e0681610d97565b82525050565b5f604082019050610e1f5f830185610dfd565b610e2c6020830184610dfd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e6a82610b7d565b9150610e7583610b7d565b9250828201905080821115610e8d57610e8c610e33565b5b92915050565b5f610e9d82610b7d565b9150610ea883610b7d565b9250828202610eb681610b7d565b91508282048414831517610ecd57610ecc610e33565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f0b82610b7d565b9150610f1683610b7d565b925082610f2657610f25610ed4565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610f75602083610f31565b9150610f8082610f41565b602082019050919050565b5f6020820190508181035f830152610fa281610f69565b9050919050565b5f8115159050919050565b610fbd81610fa9565b82525050565b5f602082019050610fd65f830184610fb4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611010601f83610f31565b915061101b82610fdc565b602082019050919050565b5f6020820190508181035f83015261103d81611004565b9050919050565b61104d81610b7d565b82525050565b5f6020820190506110665f830184611044565b92915050565b608051614efc6110a05f395f8181610df7015281816129fa0152818161349801528181613577015261359e0152614efc5ff3fe60806040526004361061031d575f3560e01c80638a8c523c116101aa578063b70143c9116100f6578063d85ba06311610094578063e6819ba71161006e578063e6819ba714610ba8578063e884f26014610be4578063f1b9ad6b14610c0e578063f2fde38b14610c3657610324565b8063d85ba06314610b18578063dd62ed3e14610b42578063e2f4560514610b7e57610324565b8063c0246668116100d0578063c024666814610a62578063c6616ba114610a8a578063c876d0b914610ab2578063d257b34f14610adc57610324565b8063b70143c9146109e8578063b819a1a914610a10578063bbc0c74214610a3857610324565b80639c3b4fdc11610163578063a457c2d71161013d578063a457c2d71461090a578063a72f458614610946578063a9059cbb14610970578063b62496f5146109ac57610324565b80639c3b4fdc1461088c5780639fccce32146108b6578063a0d82dc5146108e057610324565b80638a8c523c146107a85780638da5cb5b146107be57806392136913146107e8578063924de9b71461081257806395d89b411461083a5780639a7a23d61461086457610324565b806349bd5a5e116102695780636a486a8e11610222578063715018a6116101fc578063715018a6146107145780637437681e1461072a578063751039fc146107545780637bce5a041461077e57610324565b80636a486a8e146106845780636ddd1713146106ae57806370a08231146106d857610324565b806349bd5a5e1461057a5780634a62bb65146105a45780634fbee193146105ce57806361528e271461060a578063644130d81461063457806366ca9b831461065c57610324565b8063217580a2116102d657806330a136ad116102b057806330a136ad146104c05780633103b39e146104ea578063313ce56714610514578063395093511461053e57610324565b8063217580a21461043257806323b872dd1461045a57806327c8f8351461049657610324565b806302dbd8f81461032857806306fdde0314610350578063095ea7b31461037a5780631694505e146103b657806318160ddd146103e0578063203e727e1461040a57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061034e60048036038101906103499190613af2565b610c5e565b005b34801561035b575f80fd5b50610364610d48565b6040516103719190613ba0565b60405180910390f35b348015610385575f80fd5b506103a0600480360381019061039b9190613c1a565b610dd8565b6040516103ad9190613c72565b60405180910390f35b3480156103c1575f80fd5b506103ca610df5565b6040516103d79190613ce6565b60405180910390f35b3480156103eb575f80fd5b506103f4610e19565b6040516104019190613d0e565b60405180910390f35b348015610415575f80fd5b50610430600480360381019061042b9190613d27565b610e22565b005b34801561043d575f80fd5b5061045860048036038101906104539190613d27565b610f31565b005b348015610465575f80fd5b50610480600480360381019061047b9190613d52565b611040565b60405161048d9190613c72565b60405180910390f35b3480156104a1575f80fd5b506104aa611132565b6040516104b79190613db1565b60405180910390f35b3480156104cb575f80fd5b506104d4611138565b6040516104e19190613d0e565b60405180910390f35b3480156104f5575f80fd5b506104fe61113e565b60405161050b9190613db1565b60405180910390f35b34801561051f575f80fd5b50610528611163565b6040516105359190613de5565b60405180910390f35b348015610549575f80fd5b50610564600480360381019061055f9190613c1a565b61116b565b6040516105719190613c72565b60405180910390f35b348015610585575f80fd5b5061058e611212565b60405161059b9190613db1565b60405180910390f35b3480156105af575f80fd5b506105b8611237565b6040516105c59190613c72565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef9190613dfe565b611249565b6040516106019190613c72565b60405180910390f35b348015610615575f80fd5b5061061e61129b565b60405161062b9190613d0e565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613e53565b6112a1565b005b348015610667575f80fd5b50610682600480360381019061067d9190613af2565b611375565b005b34801561068f575f80fd5b5061069861145f565b6040516106a59190613d0e565b60405180910390f35b3480156106b9575f80fd5b506106c2611465565b6040516106cf9190613c72565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190613dfe565b611478565b60405161070b9190613d0e565b60405180910390f35b34801561071f575f80fd5b506107286114bd565b005b348015610735575f80fd5b5061073e611544565b60405161074b9190613d0e565b60405180910390f35b34801561075f575f80fd5b5061076861154a565b6040516107759190613c72565b60405180910390f35b348015610789575f80fd5b506107926115e7565b60405161079f9190613d0e565b60405180910390f35b3480156107b3575f80fd5b506107bc6115ed565b005b3480156107c9575f80fd5b506107d26116a1565b6040516107df9190613db1565b60405180910390f35b3480156107f3575f80fd5b506107fc6116c9565b6040516108099190613d0e565b60405180910390f35b34801561081d575f80fd5b5061083860048036038101906108339190613e91565b6116cf565b005b348015610845575f80fd5b5061084e611768565b60405161085b9190613ba0565b60405180910390f35b34801561086f575f80fd5b5061088a60048036038101906108859190613e53565b6117f8565b005b348015610897575f80fd5b506108a0611911565b6040516108ad9190613d0e565b60405180910390f35b3480156108c1575f80fd5b506108ca611917565b6040516108d79190613d0e565b60405180910390f35b3480156108eb575f80fd5b506108f461191d565b6040516109019190613d0e565b60405180910390f35b348015610915575f80fd5b50610930600480360381019061092b9190613c1a565b611923565b60405161093d9190613c72565b60405180910390f35b348015610951575f80fd5b5061095a611a09565b6040516109679190613db1565b60405180910390f35b34801561097b575f80fd5b5061099660048036038101906109919190613c1a565b611a2e565b6040516109a39190613c72565b60405180910390f35b3480156109b7575f80fd5b506109d260048036038101906109cd9190613dfe565b611a4b565b6040516109df9190613c72565b60405180910390f35b3480156109f3575f80fd5b50610a0e6004803603810190610a099190613d27565b611a68565b005b348015610a1b575f80fd5b50610a366004803603810190610a319190613dfe565b611b29565b005b348015610a43575f80fd5b50610a4c611c63565b604051610a599190613c72565b60405180910390f35b348015610a6d575f80fd5b50610a886004803603810190610a839190613e53565b611c76565b005b348015610a95575f80fd5b50610ab06004803603810190610aab9190613ebc565b611d98565b005b348015610abd575f80fd5b50610ac6611eee565b604051610ad39190613c72565b60405180910390f35b348015610ae7575f80fd5b50610b026004803603810190610afd9190613d27565b611f00565b604051610b0f9190613c72565b60405180910390f35b348015610b23575f80fd5b50610b2c612054565b604051610b399190613d0e565b60405180910390f35b348015610b4d575f80fd5b50610b686004803603810190610b639190613f20565b61205a565b604051610b759190613d0e565b60405180910390f35b348015610b89575f80fd5b50610b926120dc565b604051610b9f9190613d0e565b60405180910390f35b348015610bb3575f80fd5b50610bce6004803603810190610bc99190613dfe565b6120e2565b604051610bdb9190613c72565b60405180910390f35b348015610bef575f80fd5b50610bf86120ff565b604051610c059190613c72565b60405180910390f35b348015610c19575f80fd5b50610c346004803603810190610c2f9190613dfe565b61219c565b005b348015610c41575f80fd5b50610c5c6004803603810190610c579190613dfe565b6122d6565b005b610c666123cc565b73ffffffffffffffffffffffffffffffffffffffff16610c846116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613fa8565b60405180910390fd5b8160138190555080601481905550601454601354610cf89190613ff3565b601281905550604b6012541115610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90614070565b60405180910390fd5b5050565b606060038054610d57906140bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d83906140bb565b8015610dce5780601f10610da557610100808354040283529160200191610dce565b820191905f5260205f20905b815481529060010190602001808311610db157829003601f168201915b5050505050905090565b5f610deb610de46123cc565b84846123d3565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610e2a6123cc565b73ffffffffffffffffffffffffffffffffffffffff16610e486116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590613fa8565b60405180910390fd5b670de0b6b3a76400006103e86001610eb4610e19565b610ebe91906140eb565b610ec89190614159565b610ed29190614159565b811015610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b906141d3565b60405180910390fd5b670de0b6b3a764000081610f2891906140eb565b60098190555050565b610f396123cc565b73ffffffffffffffffffffffffffffffffffffffff16610f576116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613fa8565b60405180910390fd5b670de0b6b3a76400006103e86005610fc3610e19565b610fcd91906140eb565b610fd79190614159565b610fe19190614159565b811015611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90614261565b60405180910390fd5b670de0b6b3a76400008161103791906140eb565b600b8190555050565b5f61104c848484612596565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6110936123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611109906142ef565b60405180910390fd5b6111268561111e6123cc565b8584036123d3565b60019150509392505050565b61dead81565b600b5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f6112086111776123cc565b848460015f6111846123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112039190613ff3565b6123d3565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60155481565b6112a96123cc565b73ffffffffffffffffffffffffffffffffffffffff166112c76116a1565b73ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490613fa8565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61137d6123cc565b73ffffffffffffffffffffffffffffffffffffffff1661139b6116a1565b73ffffffffffffffffffffffffffffffffffffffff16146113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613fa8565b60405180910390fd5b816010819055508060118190555060115460105461140f9190613ff3565b600f81905550604b600f54111561145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290614070565b60405180910390fd5b5050565b60125481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114c56123cc565b73ffffffffffffffffffffffffffffffffffffffff166114e36116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153090613fa8565b60405180910390fd5b6115425f61329a565b565b60095481565b5f6115536123cc565b73ffffffffffffffffffffffffffffffffffffffff166115716116a1565b73ffffffffffffffffffffffffffffffffffffffff16146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be90613fa8565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b60105481565b6115f56123cc565b73ffffffffffffffffffffffffffffffffffffffff166116136116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166090613fa8565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6116d76123cc565b73ffffffffffffffffffffffffffffffffffffffff166116f56116a1565b73ffffffffffffffffffffffffffffffffffffffff161461174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613fa8565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611777906140bb565b80601f01602080910402602001604051908101604052809291908181526020018280546117a3906140bb565b80156117ee5780601f106117c5576101008083540402835291602001916117ee565b820191905f5260205f20905b8154815290600101906020018083116117d157829003601f168201915b5050505050905090565b6118006123cc565b73ffffffffffffffffffffffffffffffffffffffff1661181e6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90613fa8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061437d565b60405180910390fd5b61190d828261335d565b5050565b60115481565b60165481565b60145481565b5f8060015f6119306123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061440b565b60405180910390fd5b6119fe6119f56123cc565b858584036123d3565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a41611a3a6123cc565b8484612596565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611aa86123cc565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7575f80fd5b611ad030611478565b8111158015611ade57505f81115b611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1490614473565b60405180910390fd5b611b26816133fb565b50565b611b316123cc565b73ffffffffffffffffffffffffffffffffffffffff16611b4f6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613fa8565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60019054906101000a900460ff1681565b611c7e6123cc565b73ffffffffffffffffffffffffffffffffffffffff16611c9c6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce990613fa8565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d8c9190613c72565b60405180910390a25050565b611da06123cc565b73ffffffffffffffffffffffffffffffffffffffff16611dbe6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613fa8565b60405180910390fd5b8360108190555082601181905550601154601054611e329190613ff3565b600f819055508160138190555080601481905550601454601354611e569190613ff3565b601281905550604b600f541115611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9990614070565b60405180910390fd5b604b6012541115611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90614070565b60405180910390fd5b50505050565b600e5f9054906101000a900460ff1681565b5f611f096123cc565b73ffffffffffffffffffffffffffffffffffffffff16611f276116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490613fa8565b60405180910390fd5b620186a06001611f8b610e19565b611f9591906140eb565b611f9f9190614159565b821015611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd890614501565b60405180910390fd5b6103e86005611fee610e19565b611ff891906140eb565b6120029190614159565b821115612044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203b9061458f565b60405180910390fd5b81600a8190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f6121086123cc565b73ffffffffffffffffffffffffffffffffffffffff166121266116a1565b73ffffffffffffffffffffffffffffffffffffffff161461217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390613fa8565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b6121a46123cc565b73ffffffffffffffffffffffffffffffffffffffff166121c26116a1565b73ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90613fa8565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122de6123cc565b73ffffffffffffffffffffffffffffffffffffffff166122fc6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614612352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234990613fa8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b79061461d565b60405180910390fd5b6123c98161329a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612438906146ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690614739565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125899190613d0e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb906147c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990614855565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f3906148bd565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614925565b60405180910390fd5b5f810361279d5761279883835f61362e565b613295565b600c5f9054906101000a900460ff1615612e45576127b96116a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282757506127f76116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612899575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128b25750600660149054906101000a900460ff16155b15612e4457600c60019054906101000a900460ff166129a65760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612966575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c9061498d565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612b6a576129c26116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a4957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612aa2575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b695743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1d90614a41565b60405180910390fd5b43600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c07575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cae57600954811115612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890614acf565b60405180910390fd5b600b54612c5d83611478565b82612c689190613ff3565b1115612ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca090614b37565b60405180910390fd5b612e43565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d4b575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d9a57600954811115612d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8c90614bc5565b60405180910390fd5b612e42565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e4157600b54612df483611478565b82612dff9190613ff3565b1115612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3790614b37565b60405180910390fd5b5b5b5b5b5b5f612e4f30611478565b90505f600a548210159050808015612e735750600c60029054906101000a900460ff165b8015612e8c5750600660149054906101000a900460ff16155b8015612edf5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f32575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f85575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fc8576001600660146101000a81548160ff021916908315150217905550612fad6138a3565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613077575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613080575f90505b5f811561328557601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130de57505f601254115b156131765761310b60646130fd60125488613a7290919063ffffffff16565b613a8790919063ffffffff16565b90506012546014548261311e91906140eb565b6131289190614159565b60165f8282546131389190613ff3565b925050819055506012546013548261315091906140eb565b61315a9190614159565b60155f82825461316a9190613ff3565b92505081905550613262565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131cd57505f600f54115b15613261576131fa60646131ec600f5488613a7290919063ffffffff16565b613a8790919063ffffffff16565b9050600f546011548261320d91906140eb565b6132179190614159565b60165f8282546132279190613ff3565b92505081905550600f546010548261323f91906140eb565b6132499190614159565b60155f8282546132599190613ff3565b925050819055505b5b5f8111156132765761327587308361362e565b5b80856132829190614be3565b94505b61329087878761362e565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff81111561341757613416614c16565b5b6040519080825280602002602001820160405280156134455781602001602082028036833780820191505090505b50905030815f8151811061345c5761345b614c43565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135239190614c84565b8160018151811061353757613536614c43565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061359c307f0000000000000000000000000000000000000000000000000000000000000000846123d3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135fd959493929190614d9f565b5f604051808303815f87803b158015613614575f80fd5b505af1158015613626573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361369c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613693906147c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361370a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370190614855565b60405180910390fd5b613715838383613a9c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378f90614e67565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546138269190613ff3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388a9190613d0e565b60405180910390a361389d848484613aa1565b50505050565b5f6138ad30611478565b90505f6016546015546138c09190613ff3565b90505f8083036138d257505050613a70565b6014600a546138e191906140eb565b8311156138fa576014600a546138f791906140eb565b92505b5f479050613907846133fb565b5f61391b8247613aa690919063ffffffff16565b90505f6139458561393760165485613a7290919063ffffffff16565b613a8790919063ffffffff16565b90505f6015819055505f60168190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161399a90614eb2565b5f6040518083038185875af1925050503d805f81146139d4576040519150601f19603f3d011682016040523d82523d5f602084013e6139d9565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a2490614eb2565b5f6040518083038185875af1925050503d805f8114613a5e576040519150601f19603f3d011682016040523d82523d5f602084013e613a63565b606091505b5050809450505050505050505b565b5f8183613a7f91906140eb565b905092915050565b5f8183613a949190614159565b905092915050565b505050565b505050565b5f8183613ab39190614be3565b905092915050565b5f80fd5b5f819050919050565b613ad181613abf565b8114613adb575f80fd5b50565b5f81359050613aec81613ac8565b92915050565b5f8060408385031215613b0857613b07613abb565b5b5f613b1585828601613ade565b9250506020613b2685828601613ade565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613b7282613b30565b613b7c8185613b3a565b9350613b8c818560208601613b4a565b613b9581613b58565b840191505092915050565b5f6020820190508181035f830152613bb88184613b68565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613be982613bc0565b9050919050565b613bf981613bdf565b8114613c03575f80fd5b50565b5f81359050613c1481613bf0565b92915050565b5f8060408385031215613c3057613c2f613abb565b5b5f613c3d85828601613c06565b9250506020613c4e85828601613ade565b9150509250929050565b5f8115159050919050565b613c6c81613c58565b82525050565b5f602082019050613c855f830184613c63565b92915050565b5f819050919050565b5f613cae613ca9613ca484613bc0565b613c8b565b613bc0565b9050919050565b5f613cbf82613c94565b9050919050565b5f613cd082613cb5565b9050919050565b613ce081613cc6565b82525050565b5f602082019050613cf95f830184613cd7565b92915050565b613d0881613abf565b82525050565b5f602082019050613d215f830184613cff565b92915050565b5f60208284031215613d3c57613d3b613abb565b5b5f613d4984828501613ade565b91505092915050565b5f805f60608486031215613d6957613d68613abb565b5b5f613d7686828701613c06565b9350506020613d8786828701613c06565b9250506040613d9886828701613ade565b9150509250925092565b613dab81613bdf565b82525050565b5f602082019050613dc45f830184613da2565b92915050565b5f60ff82169050919050565b613ddf81613dca565b82525050565b5f602082019050613df85f830184613dd6565b92915050565b5f60208284031215613e1357613e12613abb565b5b5f613e2084828501613c06565b91505092915050565b613e3281613c58565b8114613e3c575f80fd5b50565b5f81359050613e4d81613e29565b92915050565b5f8060408385031215613e6957613e68613abb565b5b5f613e7685828601613c06565b9250506020613e8785828601613e3f565b9150509250929050565b5f60208284031215613ea657613ea5613abb565b5b5f613eb384828501613e3f565b91505092915050565b5f805f8060808587031215613ed457613ed3613abb565b5b5f613ee187828801613ade565b9450506020613ef287828801613ade565b9350506040613f0387828801613ade565b9250506060613f1487828801613ade565b91505092959194509250565b5f8060408385031215613f3657613f35613abb565b5b5f613f4385828601613c06565b9250506020613f5485828601613c06565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f92602083613b3a565b9150613f9d82613f5e565b602082019050919050565b5f6020820190508181035f830152613fbf81613f86565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ffd82613abf565b915061400883613abf565b92508282019050808211156140205761401f613fc6565b5b92915050565b7f4d757374206b656570206665657320617420373525206f72206c6573730000005f82015250565b5f61405a601d83613b3a565b915061406582614026565b602082019050919050565b5f6020820190508181035f8301526140878161404e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140d257607f821691505b6020821081036140e5576140e461408e565b5b50919050565b5f6140f582613abf565b915061410083613abf565b925082820261410e81613abf565b9150828204841483151761412557614124613fc6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61416382613abf565b915061416e83613abf565b92508261417e5761417d61412c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f6141bd602083613b3a565b91506141c882614189565b602082019050919050565b5f6020820190508181035f8301526141ea816141b1565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f61424b602583613b3a565b9150614256826141f1565b604082019050919050565b5f6020820190508181035f8301526142788161423f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6142d9602883613b3a565b91506142e48261427f565b604082019050919050565b5f6020820190508181035f830152614306816142cd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614367603983613b3a565b91506143728261430d565b604082019050919050565b5f6020820190508181035f8301526143948161435b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6143f5602583613b3a565b91506144008261439b565b604082019050919050565b5f6020820190508181035f830152614422816143e9565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f61445d600c83613b3a565b915061446882614429565b602082019050919050565b5f6020820190508181035f83015261448a81614451565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6144eb603583613b3a565b91506144f682614491565b604082019050919050565b5f6020820190508181035f830152614518816144df565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614579603483613b3a565b91506145848261451f565b604082019050919050565b5f6020820190508181035f8301526145a68161456d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614607602683613b3a565b9150614612826145ad565b604082019050919050565b5f6020820190508181035f830152614634816145fb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614695602483613b3a565b91506146a08261463b565b604082019050919050565b5f6020820190508181035f8301526146c281614689565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614723602283613b3a565b915061472e826146c9565b604082019050919050565b5f6020820190508181035f83015261475081614717565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6147b1602583613b3a565b91506147bc82614757565b604082019050919050565b5f6020820190508181035f8301526147de816147a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61483f602383613b3a565b915061484a826147e5565b604082019050919050565b5f6020820190508181035f83015261486c81614833565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f6148a7601183613b3a565b91506148b282614873565b602082019050919050565b5f6020820190508181035f8301526148d48161489b565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f61490f600f83613b3a565b915061491a826148db565b602082019050919050565b5f6020820190508181035f83015261493c81614903565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614977601683613b3a565b915061498282614943565b602082019050919050565b5f6020820190508181035f8301526149a48161496b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614a2b604983613b3a565b9150614a36826149ab565b606082019050919050565b5f6020820190508181035f830152614a5881614a1f565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614ab9602683613b3a565b9150614ac482614a5f565b604082019050919050565b5f6020820190508181035f830152614ae681614aad565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614b21601383613b3a565b9150614b2c82614aed565b602082019050919050565b5f6020820190508181035f830152614b4e81614b15565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614baf602783613b3a565b9150614bba82614b55565b604082019050919050565b5f6020820190508181035f830152614bdc81614ba3565b9050919050565b5f614bed82613abf565b9150614bf883613abf565b9250828203905081811115614c1057614c0f613fc6565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614c7e81613bf0565b92915050565b5f60208284031215614c9957614c98613abb565b5b5f614ca684828501614c70565b91505092915050565b5f819050919050565b5f614cd2614ccd614cc884614caf565b613c8b565b613abf565b9050919050565b614ce281614cb8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614d1a81613bdf565b82525050565b5f614d2b8383614d11565b60208301905092915050565b5f602082019050919050565b5f614d4d82614ce8565b614d578185614cf2565b9350614d6283614d02565b805f5b83811015614d92578151614d798882614d20565b9750614d8483614d37565b925050600181019050614d65565b5085935050505092915050565b5f60a082019050614db25f830188613cff565b614dbf6020830187614cd9565b8181036040830152614dd18186614d43565b9050614de06060830185613da2565b614ded6080830184613cff565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e51602683613b3a565b9150614e5c82614df7565b604082019050919050565b5f6020820190508181035f830152614e7e81614e45565b9050919050565b5f81905092915050565b50565b5f614e9d5f83614e85565b9150614ea882614e8f565b5f82019050919050565b5f614ebc82614e92565b915081905091905056fea2646970667358221220301f6a4aff882a2017a6e54c9d53856441840b68178881458cf2a1f78b5ab09364736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061031d575f3560e01c80638a8c523c116101aa578063b70143c9116100f6578063d85ba06311610094578063e6819ba71161006e578063e6819ba714610ba8578063e884f26014610be4578063f1b9ad6b14610c0e578063f2fde38b14610c3657610324565b8063d85ba06314610b18578063dd62ed3e14610b42578063e2f4560514610b7e57610324565b8063c0246668116100d0578063c024666814610a62578063c6616ba114610a8a578063c876d0b914610ab2578063d257b34f14610adc57610324565b8063b70143c9146109e8578063b819a1a914610a10578063bbc0c74214610a3857610324565b80639c3b4fdc11610163578063a457c2d71161013d578063a457c2d71461090a578063a72f458614610946578063a9059cbb14610970578063b62496f5146109ac57610324565b80639c3b4fdc1461088c5780639fccce32146108b6578063a0d82dc5146108e057610324565b80638a8c523c146107a85780638da5cb5b146107be57806392136913146107e8578063924de9b71461081257806395d89b411461083a5780639a7a23d61461086457610324565b806349bd5a5e116102695780636a486a8e11610222578063715018a6116101fc578063715018a6146107145780637437681e1461072a578063751039fc146107545780637bce5a041461077e57610324565b80636a486a8e146106845780636ddd1713146106ae57806370a08231146106d857610324565b806349bd5a5e1461057a5780634a62bb65146105a45780634fbee193146105ce57806361528e271461060a578063644130d81461063457806366ca9b831461065c57610324565b8063217580a2116102d657806330a136ad116102b057806330a136ad146104c05780633103b39e146104ea578063313ce56714610514578063395093511461053e57610324565b8063217580a21461043257806323b872dd1461045a57806327c8f8351461049657610324565b806302dbd8f81461032857806306fdde0314610350578063095ea7b31461037a5780631694505e146103b657806318160ddd146103e0578063203e727e1461040a57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061034e60048036038101906103499190613af2565b610c5e565b005b34801561035b575f80fd5b50610364610d48565b6040516103719190613ba0565b60405180910390f35b348015610385575f80fd5b506103a0600480360381019061039b9190613c1a565b610dd8565b6040516103ad9190613c72565b60405180910390f35b3480156103c1575f80fd5b506103ca610df5565b6040516103d79190613ce6565b60405180910390f35b3480156103eb575f80fd5b506103f4610e19565b6040516104019190613d0e565b60405180910390f35b348015610415575f80fd5b50610430600480360381019061042b9190613d27565b610e22565b005b34801561043d575f80fd5b5061045860048036038101906104539190613d27565b610f31565b005b348015610465575f80fd5b50610480600480360381019061047b9190613d52565b611040565b60405161048d9190613c72565b60405180910390f35b3480156104a1575f80fd5b506104aa611132565b6040516104b79190613db1565b60405180910390f35b3480156104cb575f80fd5b506104d4611138565b6040516104e19190613d0e565b60405180910390f35b3480156104f5575f80fd5b506104fe61113e565b60405161050b9190613db1565b60405180910390f35b34801561051f575f80fd5b50610528611163565b6040516105359190613de5565b60405180910390f35b348015610549575f80fd5b50610564600480360381019061055f9190613c1a565b61116b565b6040516105719190613c72565b60405180910390f35b348015610585575f80fd5b5061058e611212565b60405161059b9190613db1565b60405180910390f35b3480156105af575f80fd5b506105b8611237565b6040516105c59190613c72565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef9190613dfe565b611249565b6040516106019190613c72565b60405180910390f35b348015610615575f80fd5b5061061e61129b565b60405161062b9190613d0e565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613e53565b6112a1565b005b348015610667575f80fd5b50610682600480360381019061067d9190613af2565b611375565b005b34801561068f575f80fd5b5061069861145f565b6040516106a59190613d0e565b60405180910390f35b3480156106b9575f80fd5b506106c2611465565b6040516106cf9190613c72565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190613dfe565b611478565b60405161070b9190613d0e565b60405180910390f35b34801561071f575f80fd5b506107286114bd565b005b348015610735575f80fd5b5061073e611544565b60405161074b9190613d0e565b60405180910390f35b34801561075f575f80fd5b5061076861154a565b6040516107759190613c72565b60405180910390f35b348015610789575f80fd5b506107926115e7565b60405161079f9190613d0e565b60405180910390f35b3480156107b3575f80fd5b506107bc6115ed565b005b3480156107c9575f80fd5b506107d26116a1565b6040516107df9190613db1565b60405180910390f35b3480156107f3575f80fd5b506107fc6116c9565b6040516108099190613d0e565b60405180910390f35b34801561081d575f80fd5b5061083860048036038101906108339190613e91565b6116cf565b005b348015610845575f80fd5b5061084e611768565b60405161085b9190613ba0565b60405180910390f35b34801561086f575f80fd5b5061088a60048036038101906108859190613e53565b6117f8565b005b348015610897575f80fd5b506108a0611911565b6040516108ad9190613d0e565b60405180910390f35b3480156108c1575f80fd5b506108ca611917565b6040516108d79190613d0e565b60405180910390f35b3480156108eb575f80fd5b506108f461191d565b6040516109019190613d0e565b60405180910390f35b348015610915575f80fd5b50610930600480360381019061092b9190613c1a565b611923565b60405161093d9190613c72565b60405180910390f35b348015610951575f80fd5b5061095a611a09565b6040516109679190613db1565b60405180910390f35b34801561097b575f80fd5b5061099660048036038101906109919190613c1a565b611a2e565b6040516109a39190613c72565b60405180910390f35b3480156109b7575f80fd5b506109d260048036038101906109cd9190613dfe565b611a4b565b6040516109df9190613c72565b60405180910390f35b3480156109f3575f80fd5b50610a0e6004803603810190610a099190613d27565b611a68565b005b348015610a1b575f80fd5b50610a366004803603810190610a319190613dfe565b611b29565b005b348015610a43575f80fd5b50610a4c611c63565b604051610a599190613c72565b60405180910390f35b348015610a6d575f80fd5b50610a886004803603810190610a839190613e53565b611c76565b005b348015610a95575f80fd5b50610ab06004803603810190610aab9190613ebc565b611d98565b005b348015610abd575f80fd5b50610ac6611eee565b604051610ad39190613c72565b60405180910390f35b348015610ae7575f80fd5b50610b026004803603810190610afd9190613d27565b611f00565b604051610b0f9190613c72565b60405180910390f35b348015610b23575f80fd5b50610b2c612054565b604051610b399190613d0e565b60405180910390f35b348015610b4d575f80fd5b50610b686004803603810190610b639190613f20565b61205a565b604051610b759190613d0e565b60405180910390f35b348015610b89575f80fd5b50610b926120dc565b604051610b9f9190613d0e565b60405180910390f35b348015610bb3575f80fd5b50610bce6004803603810190610bc99190613dfe565b6120e2565b604051610bdb9190613c72565b60405180910390f35b348015610bef575f80fd5b50610bf86120ff565b604051610c059190613c72565b60405180910390f35b348015610c19575f80fd5b50610c346004803603810190610c2f9190613dfe565b61219c565b005b348015610c41575f80fd5b50610c5c6004803603810190610c579190613dfe565b6122d6565b005b610c666123cc565b73ffffffffffffffffffffffffffffffffffffffff16610c846116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613fa8565b60405180910390fd5b8160138190555080601481905550601454601354610cf89190613ff3565b601281905550604b6012541115610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90614070565b60405180910390fd5b5050565b606060038054610d57906140bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d83906140bb565b8015610dce5780601f10610da557610100808354040283529160200191610dce565b820191905f5260205f20905b815481529060010190602001808311610db157829003601f168201915b5050505050905090565b5f610deb610de46123cc565b84846123d3565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610e2a6123cc565b73ffffffffffffffffffffffffffffffffffffffff16610e486116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590613fa8565b60405180910390fd5b670de0b6b3a76400006103e86001610eb4610e19565b610ebe91906140eb565b610ec89190614159565b610ed29190614159565b811015610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b906141d3565b60405180910390fd5b670de0b6b3a764000081610f2891906140eb565b60098190555050565b610f396123cc565b73ffffffffffffffffffffffffffffffffffffffff16610f576116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613fa8565b60405180910390fd5b670de0b6b3a76400006103e86005610fc3610e19565b610fcd91906140eb565b610fd79190614159565b610fe19190614159565b811015611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90614261565b60405180910390fd5b670de0b6b3a76400008161103791906140eb565b600b8190555050565b5f61104c848484612596565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6110936123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611109906142ef565b60405180910390fd5b6111268561111e6123cc565b8584036123d3565b60019150509392505050565b61dead81565b600b5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f6112086111776123cc565b848460015f6111846123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112039190613ff3565b6123d3565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60155481565b6112a96123cc565b73ffffffffffffffffffffffffffffffffffffffff166112c76116a1565b73ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490613fa8565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61137d6123cc565b73ffffffffffffffffffffffffffffffffffffffff1661139b6116a1565b73ffffffffffffffffffffffffffffffffffffffff16146113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613fa8565b60405180910390fd5b816010819055508060118190555060115460105461140f9190613ff3565b600f81905550604b600f54111561145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290614070565b60405180910390fd5b5050565b60125481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114c56123cc565b73ffffffffffffffffffffffffffffffffffffffff166114e36116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153090613fa8565b60405180910390fd5b6115425f61329a565b565b60095481565b5f6115536123cc565b73ffffffffffffffffffffffffffffffffffffffff166115716116a1565b73ffffffffffffffffffffffffffffffffffffffff16146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be90613fa8565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b60105481565b6115f56123cc565b73ffffffffffffffffffffffffffffffffffffffff166116136116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166090613fa8565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6116d76123cc565b73ffffffffffffffffffffffffffffffffffffffff166116f56116a1565b73ffffffffffffffffffffffffffffffffffffffff161461174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613fa8565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611777906140bb565b80601f01602080910402602001604051908101604052809291908181526020018280546117a3906140bb565b80156117ee5780601f106117c5576101008083540402835291602001916117ee565b820191905f5260205f20905b8154815290600101906020018083116117d157829003601f168201915b5050505050905090565b6118006123cc565b73ffffffffffffffffffffffffffffffffffffffff1661181e6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90613fa8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061437d565b60405180910390fd5b61190d828261335d565b5050565b60115481565b60165481565b60145481565b5f8060015f6119306123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061440b565b60405180910390fd5b6119fe6119f56123cc565b858584036123d3565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a41611a3a6123cc565b8484612596565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611aa86123cc565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7575f80fd5b611ad030611478565b8111158015611ade57505f81115b611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1490614473565b60405180910390fd5b611b26816133fb565b50565b611b316123cc565b73ffffffffffffffffffffffffffffffffffffffff16611b4f6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613fa8565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60019054906101000a900460ff1681565b611c7e6123cc565b73ffffffffffffffffffffffffffffffffffffffff16611c9c6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce990613fa8565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d8c9190613c72565b60405180910390a25050565b611da06123cc565b73ffffffffffffffffffffffffffffffffffffffff16611dbe6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613fa8565b60405180910390fd5b8360108190555082601181905550601154601054611e329190613ff3565b600f819055508160138190555080601481905550601454601354611e569190613ff3565b601281905550604b600f541115611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9990614070565b60405180910390fd5b604b6012541115611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90614070565b60405180910390fd5b50505050565b600e5f9054906101000a900460ff1681565b5f611f096123cc565b73ffffffffffffffffffffffffffffffffffffffff16611f276116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490613fa8565b60405180910390fd5b620186a06001611f8b610e19565b611f9591906140eb565b611f9f9190614159565b821015611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd890614501565b60405180910390fd5b6103e86005611fee610e19565b611ff891906140eb565b6120029190614159565b821115612044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203b9061458f565b60405180910390fd5b81600a8190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f6121086123cc565b73ffffffffffffffffffffffffffffffffffffffff166121266116a1565b73ffffffffffffffffffffffffffffffffffffffff161461217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390613fa8565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b6121a46123cc565b73ffffffffffffffffffffffffffffffffffffffff166121c26116a1565b73ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90613fa8565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122de6123cc565b73ffffffffffffffffffffffffffffffffffffffff166122fc6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614612352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234990613fa8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b79061461d565b60405180910390fd5b6123c98161329a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612438906146ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690614739565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125899190613d0e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb906147c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990614855565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f3906148bd565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614925565b60405180910390fd5b5f810361279d5761279883835f61362e565b613295565b600c5f9054906101000a900460ff1615612e45576127b96116a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282757506127f76116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612899575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128b25750600660149054906101000a900460ff16155b15612e4457600c60019054906101000a900460ff166129a65760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612966575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c9061498d565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612b6a576129c26116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a4957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612aa2575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b695743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1d90614a41565b60405180910390fd5b43600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c07575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cae57600954811115612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890614acf565b60405180910390fd5b600b54612c5d83611478565b82612c689190613ff3565b1115612ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca090614b37565b60405180910390fd5b612e43565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d4b575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d9a57600954811115612d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8c90614bc5565b60405180910390fd5b612e42565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e4157600b54612df483611478565b82612dff9190613ff3565b1115612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3790614b37565b60405180910390fd5b5b5b5b5b5b5f612e4f30611478565b90505f600a548210159050808015612e735750600c60029054906101000a900460ff165b8015612e8c5750600660149054906101000a900460ff16155b8015612edf5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f32575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f85575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fc8576001600660146101000a81548160ff021916908315150217905550612fad6138a3565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613077575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613080575f90505b5f811561328557601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130de57505f601254115b156131765761310b60646130fd60125488613a7290919063ffffffff16565b613a8790919063ffffffff16565b90506012546014548261311e91906140eb565b6131289190614159565b60165f8282546131389190613ff3565b925050819055506012546013548261315091906140eb565b61315a9190614159565b60155f82825461316a9190613ff3565b92505081905550613262565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131cd57505f600f54115b15613261576131fa60646131ec600f5488613a7290919063ffffffff16565b613a8790919063ffffffff16565b9050600f546011548261320d91906140eb565b6132179190614159565b60165f8282546132279190613ff3565b92505081905550600f546010548261323f91906140eb565b6132499190614159565b60155f8282546132599190613ff3565b925050819055505b5b5f8111156132765761327587308361362e565b5b80856132829190614be3565b94505b61329087878761362e565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff81111561341757613416614c16565b5b6040519080825280602002602001820160405280156134455781602001602082028036833780820191505090505b50905030815f8151811061345c5761345b614c43565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135239190614c84565b8160018151811061353757613536614c43565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061359c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846123d3565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135fd959493929190614d9f565b5f604051808303815f87803b158015613614575f80fd5b505af1158015613626573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361369c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613693906147c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361370a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370190614855565b60405180910390fd5b613715838383613a9c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378f90614e67565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546138269190613ff3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388a9190613d0e565b60405180910390a361389d848484613aa1565b50505050565b5f6138ad30611478565b90505f6016546015546138c09190613ff3565b90505f8083036138d257505050613a70565b6014600a546138e191906140eb565b8311156138fa576014600a546138f791906140eb565b92505b5f479050613907846133fb565b5f61391b8247613aa690919063ffffffff16565b90505f6139458561393760165485613a7290919063ffffffff16565b613a8790919063ffffffff16565b90505f6015819055505f60168190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161399a90614eb2565b5f6040518083038185875af1925050503d805f81146139d4576040519150601f19603f3d011682016040523d82523d5f602084013e6139d9565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a2490614eb2565b5f6040518083038185875af1925050503d805f8114613a5e576040519150601f19603f3d011682016040523d82523d5f602084013e613a63565b606091505b5050809450505050505050505b565b5f8183613a7f91906140eb565b905092915050565b5f8183613a949190614159565b905092915050565b505050565b505050565b5f8183613ab39190614be3565b905092915050565b5f80fd5b5f819050919050565b613ad181613abf565b8114613adb575f80fd5b50565b5f81359050613aec81613ac8565b92915050565b5f8060408385031215613b0857613b07613abb565b5b5f613b1585828601613ade565b9250506020613b2685828601613ade565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613b7282613b30565b613b7c8185613b3a565b9350613b8c818560208601613b4a565b613b9581613b58565b840191505092915050565b5f6020820190508181035f830152613bb88184613b68565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613be982613bc0565b9050919050565b613bf981613bdf565b8114613c03575f80fd5b50565b5f81359050613c1481613bf0565b92915050565b5f8060408385031215613c3057613c2f613abb565b5b5f613c3d85828601613c06565b9250506020613c4e85828601613ade565b9150509250929050565b5f8115159050919050565b613c6c81613c58565b82525050565b5f602082019050613c855f830184613c63565b92915050565b5f819050919050565b5f613cae613ca9613ca484613bc0565b613c8b565b613bc0565b9050919050565b5f613cbf82613c94565b9050919050565b5f613cd082613cb5565b9050919050565b613ce081613cc6565b82525050565b5f602082019050613cf95f830184613cd7565b92915050565b613d0881613abf565b82525050565b5f602082019050613d215f830184613cff565b92915050565b5f60208284031215613d3c57613d3b613abb565b5b5f613d4984828501613ade565b91505092915050565b5f805f60608486031215613d6957613d68613abb565b5b5f613d7686828701613c06565b9350506020613d8786828701613c06565b9250506040613d9886828701613ade565b9150509250925092565b613dab81613bdf565b82525050565b5f602082019050613dc45f830184613da2565b92915050565b5f60ff82169050919050565b613ddf81613dca565b82525050565b5f602082019050613df85f830184613dd6565b92915050565b5f60208284031215613e1357613e12613abb565b5b5f613e2084828501613c06565b91505092915050565b613e3281613c58565b8114613e3c575f80fd5b50565b5f81359050613e4d81613e29565b92915050565b5f8060408385031215613e6957613e68613abb565b5b5f613e7685828601613c06565b9250506020613e8785828601613e3f565b9150509250929050565b5f60208284031215613ea657613ea5613abb565b5b5f613eb384828501613e3f565b91505092915050565b5f805f8060808587031215613ed457613ed3613abb565b5b5f613ee187828801613ade565b9450506020613ef287828801613ade565b9350506040613f0387828801613ade565b9250506060613f1487828801613ade565b91505092959194509250565b5f8060408385031215613f3657613f35613abb565b5b5f613f4385828601613c06565b9250506020613f5485828601613c06565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f92602083613b3a565b9150613f9d82613f5e565b602082019050919050565b5f6020820190508181035f830152613fbf81613f86565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ffd82613abf565b915061400883613abf565b92508282019050808211156140205761401f613fc6565b5b92915050565b7f4d757374206b656570206665657320617420373525206f72206c6573730000005f82015250565b5f61405a601d83613b3a565b915061406582614026565b602082019050919050565b5f6020820190508181035f8301526140878161404e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140d257607f821691505b6020821081036140e5576140e461408e565b5b50919050565b5f6140f582613abf565b915061410083613abf565b925082820261410e81613abf565b9150828204841483151761412557614124613fc6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61416382613abf565b915061416e83613abf565b92508261417e5761417d61412c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f6141bd602083613b3a565b91506141c882614189565b602082019050919050565b5f6020820190508181035f8301526141ea816141b1565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f61424b602583613b3a565b9150614256826141f1565b604082019050919050565b5f6020820190508181035f8301526142788161423f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6142d9602883613b3a565b91506142e48261427f565b604082019050919050565b5f6020820190508181035f830152614306816142cd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614367603983613b3a565b91506143728261430d565b604082019050919050565b5f6020820190508181035f8301526143948161435b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6143f5602583613b3a565b91506144008261439b565b604082019050919050565b5f6020820190508181035f830152614422816143e9565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f61445d600c83613b3a565b915061446882614429565b602082019050919050565b5f6020820190508181035f83015261448a81614451565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6144eb603583613b3a565b91506144f682614491565b604082019050919050565b5f6020820190508181035f830152614518816144df565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614579603483613b3a565b91506145848261451f565b604082019050919050565b5f6020820190508181035f8301526145a68161456d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614607602683613b3a565b9150614612826145ad565b604082019050919050565b5f6020820190508181035f830152614634816145fb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614695602483613b3a565b91506146a08261463b565b604082019050919050565b5f6020820190508181035f8301526146c281614689565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614723602283613b3a565b915061472e826146c9565b604082019050919050565b5f6020820190508181035f83015261475081614717565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6147b1602583613b3a565b91506147bc82614757565b604082019050919050565b5f6020820190508181035f8301526147de816147a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61483f602383613b3a565b915061484a826147e5565b604082019050919050565b5f6020820190508181035f83015261486c81614833565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f6148a7601183613b3a565b91506148b282614873565b602082019050919050565b5f6020820190508181035f8301526148d48161489b565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f61490f600f83613b3a565b915061491a826148db565b602082019050919050565b5f6020820190508181035f83015261493c81614903565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614977601683613b3a565b915061498282614943565b602082019050919050565b5f6020820190508181035f8301526149a48161496b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614a2b604983613b3a565b9150614a36826149ab565b606082019050919050565b5f6020820190508181035f830152614a5881614a1f565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614ab9602683613b3a565b9150614ac482614a5f565b604082019050919050565b5f6020820190508181035f830152614ae681614aad565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614b21601383613b3a565b9150614b2c82614aed565b602082019050919050565b5f6020820190508181035f830152614b4e81614b15565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614baf602783613b3a565b9150614bba82614b55565b604082019050919050565b5f6020820190508181035f830152614bdc81614ba3565b9050919050565b5f614bed82613abf565b9150614bf883613abf565b9250828203905081811115614c1057614c0f613fc6565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614c7e81613bf0565b92915050565b5f60208284031215614c9957614c98613abb565b5b5f614ca684828501614c70565b91505092915050565b5f819050919050565b5f614cd2614ccd614cc884614caf565b613c8b565b613abf565b9050919050565b614ce281614cb8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614d1a81613bdf565b82525050565b5f614d2b8383614d11565b60208301905092915050565b5f602082019050919050565b5f614d4d82614ce8565b614d578185614cf2565b9350614d6283614d02565b805f5b83811015614d92578151614d798882614d20565b9750614d8483614d37565b925050600181019050614d65565b5085935050505092915050565b5f60a082019050614db25f830188613cff565b614dbf6020830187614cd9565b8181036040830152614dd18186614d43565b9050614de06060830185613da2565b614ded6080830184613cff565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e51602683613b3a565b9150614e5c82614df7565b604082019050919050565b5f6020820190508181035f830152614e7e81614e45565b9050919050565b5f81905092915050565b50565b5f614e9d5f83614e85565b9150614ea882614e8f565b5f82019050919050565b5f614ebc82614e92565b915081905091905056fea2646970667358221220301f6a4aff882a2017a6e54c9d53856441840b68178881458cf2a1f78b5ab09364736f6c634300081a0033
Deployed Bytecode Sourcemap
15136:13149:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21109:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2833:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3747:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15220:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3154:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19413:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19666:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3924:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15313:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15542:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15441;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3053:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4424:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15278:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15576:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22511:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16027:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19933:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20790:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15920:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15656:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3270:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;955:103;;;;;;;;;;;;;:::i;:::-;;15475:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18636:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15850:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18516:112;;;;;;;;;;;;;:::i;:::-;;732:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15955:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20084:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2941:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21625:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15887:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16065:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15993:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4647:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15405:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3405:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16269:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26638:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22342:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15616:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21435:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20192:590;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15767:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18908:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15816:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3588:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15502:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16212:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18765:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22133:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1066;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21109:318;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21247:13:::1;21228:16;:32;;;;21284:7;21271:10;:20;;;;21337:10;;21318:16;;:29;;;;:::i;:::-;21302:13;:45;;;;21383:2;21366:13;;:19;;21358:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21109:318:::0;;:::o;2833:100::-;2887:13;2920:5;2913:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2833:100;:::o;3747:169::-;3830:4;3847:39;3856:12;:10;:12::i;:::-;3870:7;3879:6;3847:8;:39::i;:::-;3904:4;3897:11;;3747:169;;;;:::o;15220:51::-;;;:::o;3154:108::-;3215:7;3242:12;;3235:19;;3154:108;:::o;19413:245::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19550:4:::1;19542;19537:1;19521:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19520:26;;;;:::i;:::-;19519:35;;;;:::i;:::-;19509:6;:45;;19487:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;19643:6;19633;:17;;;;:::i;:::-;19625:5;:25;;;;19413:245:::0;:::o;19666:259::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19807:4:::1;19799;19794:1;19778:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19777:26;;;;:::i;:::-;19776:35;;;;:::i;:::-;19766:6;:45;;19744:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;19910:6;19900;:17;;;;:::i;:::-;19887:10;:30;;;;19666:259:::0;:::o;3924:492::-;4064:4;4081:36;4091:6;4099:9;4110:6;4081:9;:36::i;:::-;4130:24;4157:11;:19;4169:6;4157:19;;;;;;;;;;;;;;;:33;4177:12;:10;:12::i;:::-;4157:33;;;;;;;;;;;;;;;;4130:60;;4229:6;4209:16;:26;;4201:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4316:57;4325:6;4333:12;:10;:12::i;:::-;4366:6;4347:16;:25;4316:8;:57::i;:::-;4404:4;4397:11;;;3924:492;;;;;:::o;15313:53::-;15359:6;15313:53;:::o;15542:25::-;;;;:::o;15441:::-;;;;;;;;;;;;;:::o;3053:93::-;3111:5;3136:2;3129:9;;3053:93;:::o;4424:215::-;4512:4;4529:80;4538:12;:10;:12::i;:::-;4552:7;4598:10;4561:11;:25;4573:12;:10;:12::i;:::-;4561:25;;;;;;;;;;;;;;;:34;4587:7;4561:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4529:8;:80::i;:::-;4627:4;4620:11;;4424:215;;;;:::o;15278:28::-;;;;;;;;;;;;;:::o;15576:33::-;;;;;;;;;;;;;:::o;22511:126::-;22577:4;22601:19;:28;22621:7;22601:28;;;;;;;;;;;;;;;;;;;;;;;;;22594:35;;22511:126;;;:::o;16027:31::-;;;;:::o;19933:143::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20064:4:::1;20037:16;:24;20054:6;20037:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;19933:143:::0;;:::o;20790:311::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20926:13:::1;20908:15;:31;;;;20962:7;20950:9;:19;;;;21013:9;;20995:15;;:27;;;;:::i;:::-;20980:12;:42;;;;21057:2;21041:12;;:18;;21033:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20790:311:::0;;:::o;15920:28::-;;;;:::o;15656:31::-;;;;;;;;;;;;;:::o;3270:127::-;3344:7;3371:9;:18;3381:7;3371:18;;;;;;;;;;;;;;;;3364:25;;3270:127;;;:::o;955:103::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1020:30:::1;1047:1;1020:18;:30::i;:::-;955:103::o:0;15475:20::-;;;;:::o;18636:121::-;18688:4;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18722:5:::1;18705:14;;:22;;;;;;;;;;;;;;;;;;18745:4;18738:11;;18636:121:::0;:::o;15850:30::-;;;;:::o;18516:112::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18587:4:::1;18571:13;;:20;;;;;;;;;;;;;;;;;;18616:4;18602:11;;:18;;;;;;;;;;;;;;;;;;18516:112::o:0;732:87::-;778:7;805:6;;;;;;;;;;;798:13;;732:87;:::o;15955:31::-;;;;:::o;20084:100::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20169:7:::1;20155:11;;:21;;;;;;;;;;;;;;;;;;20084:100:::0;:::o;2941:104::-;2997:13;3030:7;3023:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2941:104;:::o;21625:304::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21769:13:::1;;;;;;;;;;;21761:21;;:4;:21;;::::0;21739:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21880:41;21909:4;21915:5;21880:28;:41::i;:::-;21625:304:::0;;:::o;15887:24::-;;;;:::o;16065:27::-;;;;:::o;15993:25::-;;;;:::o;4647:413::-;4740:4;4757:24;4784:11;:25;4796:12;:10;:12::i;:::-;4784:25;;;;;;;;;;;;;;;:34;4810:7;4784:34;;;;;;;;;;;;;;;;4757:61;;4857:15;4837:16;:35;;4829:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4950:67;4959:12;:10;:12::i;:::-;4973:7;5001:15;4982:16;:34;4950:8;:67::i;:::-;5048:4;5041:11;;;4647:413;;;;:::o;15405:29::-;;;;;;;;;;;;;:::o;3405:175::-;3491:4;3508:42;3518:12;:10;:12::i;:::-;3532:9;3543:6;3508:9;:42::i;:::-;3568:4;3561:11;;3405:175;;;;:::o;16269:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;26638:222::-;26718:14;;;;;;;;;;;26702:30;;:12;:10;:12::i;:::-;:30;;;26694:39;;;;;;26762:24;26780:4;26762:9;:24::i;:::-;26752:6;:34;;:48;;;;;26799:1;26790:6;:10;26752:48;26744:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26828:24;26845:6;26828:16;:24::i;:::-;26638:222;:::o;22342:161::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22451:10:::1;;;;;;;;;;;22422:40;;22440:9;22422:40;;;;;;;;;;;;22486:9;22473:10;;:22;;;;;;;;;;;;;;;;;;22342:161:::0;:::o;15616:33::-;;;;;;;;;;;;;:::o;21435:182::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21551:8:::1;21520:19;:28;21540:7;21520:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21591:7;21575:34;;;21600:8;21575:34;;;;;;:::i;:::-;;;;;;;;21435:182:::0;;:::o;20192:590::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20391:16:::1;20373:15;:34;;;;20430:10;20418:9;:22;;;;20484:9;;20466:15;;:27;;;;:::i;:::-;20451:12;:42;;;;20523:17;20504:16;:36;;;;20564:11;20551:10;:24;;;;20621:10;;20602:16;;:29;;;;:::i;:::-;20586:13;:45;;;;20666:2;20650:12;;:18;;20642:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20738:2;20721:13;;:19;;20713:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20192:590:::0;;;;:::o;15767:40::-;;;;;;;;;;;;;:::o;18908:497::-;19016:4;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19095:6:::1;19090:1;19074:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19073:28;;;;:::i;:::-;19060:9;:41;;19038:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;19250:4;19245:1;19229:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19228:26;;;;:::i;:::-;19215:9;:39;;19193:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19366:9;19345:18;:30;;;;19393:4;19386:11;;18908:497:::0;;;:::o;15816:27::-;;;;:::o;3588:151::-;3677:7;3704:11;:18;3716:5;3704:18;;;;;;;;;;;;;;;:27;3723:7;3704:27;;;;;;;;;;;;;;;;3697:34;;3588:151;;;;:::o;15502:33::-;;;;:::o;16212:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;18765:135::-;18825:4;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18865:5:::1;18842:20;;:28;;;;;;;;;;;;;;;;;;18888:4;18881:11;;18765:135:::0;:::o;22133:201::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22266:14:::1;;;;;;;;;;;22225:56;;22247:17;22225:56;;;;;;;;;;;;22309:17;22292:14;;:34;;;;;;;;;;;;;;;;;;22133:201:::0;:::o;1066:::-;878:12;:10;:12::i;:::-;867:23;;:7;:5;:7::i;:::-;:23;;;859:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1175:1:::1;1155:22;;:8;:22;;::::0;1147:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:28;1250:8;1231:18;:28::i;:::-;1066:201:::0;:::o;278:98::-;331:7;358:10;351:17;;278:98;:::o;6815:380::-;6968:1;6951:19;;:5;:19;;;6943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7049:1;7030:21;;:7;:21;;;7022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7133:6;7103:11;:18;7115:5;7103:18;;;;;;;;;;;;;;;:27;7122:7;7103:27;;;;;;;;;;;;;;;:36;;;;7171:7;7155:32;;7164:5;7155:32;;;7180:6;7155:32;;;;;;:::i;:::-;;;;;;;;6815:380;;;:::o;22695:3820::-;22843:1;22827:18;;:4;:18;;;22819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22920:1;22906:16;;:2;:16;;;22898:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22982:12;:18;22995:4;22982:18;;;;;;;;;;;;;;;;;;;;;;;;;22981:19;22973:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23042:12;:16;23055:2;23042:16;;;;;;;;;;;;;;;;;;;;;;;;;23041:17;23033:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;23105:1;23095:6;:11;23091:93;;23123:28;23139:4;23145:2;23149:1;23123:15;:28::i;:::-;23166:7;;23091:93;23200:14;;;;;;;;;;;23196:1666;;;23243:7;:5;:7::i;:::-;23235:15;;:4;:15;;;;:49;;;;;23277:7;:5;:7::i;:::-;23271:13;;:2;:13;;;;23235:49;:86;;;;;23319:1;23305:16;;:2;:16;;;;23235:86;:128;;;;;23356:6;23342:21;;:2;:21;;;;23235:128;:158;;;;;23385:8;;;;;;;;;;;23384:9;23235:158;23231:1620;;;23419:13;;;;;;;;;;;23414:150;;23465:19;:25;23485:4;23465:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23494:19;:23;23514:2;23494:23;;;;;;;;;;;;;;;;;;;;;;;;;23465:52;23457:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23414:150;23720:20;;;;;;;;;;;23716:425;;;23775:7;:5;:7::i;:::-;23769:13;;:2;:13;;;;:47;;;;;23800:15;23786:30;;:2;:30;;;;23769:47;:79;;;;;23834:13;;;;;;;;;;;23820:28;;:2;:28;;;;23769:79;23765:357;;;23927:12;23885:28;:39;23914:9;23885:39;;;;;;;;;;;;;;;;:54;23877:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24086:12;24044:28;:39;24073:9;24044:39;;;;;;;;;;;;;;;:54;;;;23765:357;23716:425;24193:25;:31;24219:4;24193:31;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;24229:16;:20;24246:2;24229:20;;;;;;;;;;;;;;;;;;;;;;;;;24228:21;24193:56;24189:647;;;24292:5;;24282:6;:15;;24274:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24397:10;;24380:13;24390:2;24380:9;:13::i;:::-;24371:6;:22;;;;:::i;:::-;:36;;24363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24189:647;;;24507:25;:29;24533:2;24507:29;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;24541:16;:22;24558:4;24541:22;;;;;;;;;;;;;;;;;;;;;;;;;24540:23;24507:56;24503:333;;;24606:5;;24596:6;:15;;24588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24503:333;;;24703:16;:20;24720:2;24703:20;;;;;;;;;;;;;;;;;;;;;;;;;24698:138;;24782:10;;24765:13;24775:2;24765:9;:13::i;:::-;24756:6;:22;;;;:::i;:::-;:36;;24748:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24698:138;24503:333;24189:647;23231:1620;23196:1666;24874:28;24905:24;24923:4;24905:9;:24::i;:::-;24874:55;;24940:12;24979:18;;24955:20;:42;;24940:57;;25014:7;:35;;;;;25038:11;;;;;;;;;;;25014:35;:61;;;;;25067:8;;;;;;;;;;;25066:9;25014:61;:110;;;;;25093:25;:31;25119:4;25093:31;;;;;;;;;;;;;;;;;;;;;;;;;25092:32;25014:110;:153;;;;;25142:19;:25;25162:4;25142:25;;;;;;;;;;;;;;;;;;;;;;;;;25141:26;25014:153;:194;;;;;25185:19;:23;25205:2;25185:23;;;;;;;;;;;;;;;;;;;;;;;;;25184:24;25014:194;25010:302;;;25236:4;25225:8;;:15;;;;;;;;;;;;;;;;;;25257:10;:8;:10::i;:::-;25295:5;25284:8;;:16;;;;;;;;;;;;;;;;;;25010:302;25324:12;25340:8;;;;;;;;;;;25339:9;25324:24;;25450:19;:25;25470:4;25450:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25479:19;:23;25499:2;25479:23;;;;;;;;;;;;;;;;;;;;;;;;;25450:52;25446:100;;;25529:5;25519:15;;25446:100;25558:12;25663:7;25659:803;;;25715:25;:29;25741:2;25715:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25764:1;25748:13;;:17;25715:50;25711:602;;;25793:34;25823:3;25793:25;25804:13;;25793:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25786:41;;25884:13;;25870:10;;25863:4;:17;;;;:::i;:::-;25862:35;;;;:::i;:::-;25846:12;;:51;;;;;;;:::i;:::-;;;;;;;;25964:13;;25944:16;;25937:4;:23;;;;:::i;:::-;25936:41;;;;:::i;:::-;25916:16;;:61;;;;;;;:::i;:::-;;;;;;;;25711:602;;;26039:25;:31;26065:4;26039:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26089:1;26074:12;;:16;26039:51;26035:278;;;26118:33;26147:3;26118:24;26129:12;;26118:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26111:40;;26207:12;;26194:9;;26187:4;:16;;;;:::i;:::-;26186:33;;;;:::i;:::-;26170:12;;:49;;;;;;;:::i;:::-;;;;;;;;26285:12;;26266:15;;26259:4;:22;;;;:::i;:::-;26258:39;;;;:::i;:::-;26238:16;;:59;;;;;;;:::i;:::-;;;;;;;;26035:278;25711:602;26340:1;26333:4;:8;26329:91;;;26362:42;26378:4;26392;26399;26362:15;:42::i;:::-;26329:91;26446:4;26436:14;;;;;:::i;:::-;;;25659:803;26474:33;26490:4;26496:2;26500:6;26474:15;:33::i;:::-;22808:3707;;;;22695:3820;;;;:::o;1275:191::-;1349:16;1368:6;;;;;;;;;;;1349:25;;1394:8;1385:6;;:17;;;;;;;;;;;;;;;;;;1449:8;1418:40;;1439:8;1418:40;;;;;;;;;;;;1338:128;1275:191;:::o;21937:188::-;22054:5;22020:25;:31;22046:4;22020:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22111:5;22077:40;;22105:4;22077:40;;;;;;;;;;;;21937:188;;:::o;26869:529::-;26935:21;26973:1;26959:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26935:40;;27004:4;26986;26991:1;26986:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27030:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27020:4;27025:1;27020:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27065:62;27082:4;27097:15;27115:11;27065:8;:62::i;:::-;27166:15;:66;;;27247:11;27273:1;27317:4;27344;27364:15;27166:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26924:474;26869:529;:::o;5068:733::-;5226:1;5208:20;;:6;:20;;;5200:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5310:1;5289:23;;:9;:23;;;5281:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5365:47;5386:6;5394:9;5405:6;5365:20;:47::i;:::-;5425:21;5449:9;:17;5459:6;5449:17;;;;;;;;;;;;;;;;5425:41;;5502:6;5485:13;:23;;5477:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5623:6;5607:13;:22;5587:9;:17;5597:6;5587:17;;;;;;;;;;;;;;;:42;;;;5675:6;5651:9;:20;5661:9;5651:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5716:9;5699:35;;5708:6;5699:35;;;5727:6;5699:35;;;;;;:::i;:::-;;;;;;;;5747:46;5767:6;5775:9;5786:6;5747:19;:46::i;:::-;5189:612;5068:733;;;:::o;27406:876::-;27445:23;27471:24;27489:4;27471:9;:24::i;:::-;27445:50;;27506:25;27553:12;;27534:16;;:31;;;;:::i;:::-;27506:59;;27576:12;27624:1;27605:15;:20;27601:59;;27642:7;;;;;27601:59;27715:2;27694:18;;:23;;;;:::i;:::-;27676:15;:41;27672:115;;;27773:2;27752:18;;:23;;;;:::i;:::-;27734:41;;27672:115;27799:25;27827:21;27799:49;;27859:33;27876:15;27859:16;:33::i;:::-;27905:18;27926:44;27952:17;27926:21;:25;;:44;;;;:::i;:::-;27905:65;;27981:17;28001:51;28034:17;28001:28;28016:12;;28001:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;27981:71;;28084:1;28065:16;:20;;;;28111:1;28096:12;:16;;;;28147:10;;;;;;;;;;;28139:24;;28171:9;28139:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28125:60;;;;;28218:14;;;;;;;;;;;28210:28;;28247:21;28210:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28196:78;;;;;27434:848;;;;;;27406:876;:::o;8821:98::-;8879:7;8910:1;8906;:5;;;;:::i;:::-;8899:12;;8821:98;;;;:::o;8927:::-;8985:7;9016:1;9012;:5;;;;:::i;:::-;9005:12;;8927:98;;;;:::o;7203:125::-;;;;:::o;7336:124::-;;;;:::o;8715:98::-;8773:7;8804:1;8800;:5;;;;:::i;:::-;8793:12;;8715:98;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:139::-;1539:6;1534:3;1529;1523:23;1580:1;1571:6;1566:3;1562:16;1555:27;1450:139;;;:::o;1595:102::-;1636:6;1687:2;1683:7;1678:2;1671:5;1667:14;1663:28;1653:38;;1595:102;;;:::o;1703:377::-;1791:3;1819:39;1852:5;1819:39;:::i;:::-;1874:71;1938:6;1933:3;1874:71;:::i;:::-;1867:78;;1954:65;2012:6;2007:3;2000:4;1993:5;1989:16;1954:65;:::i;:::-;2044:29;2066:6;2044:29;:::i;:::-;2039:3;2035:39;2028:46;;1795:285;1703:377;;;;:::o;2086:313::-;2199:4;2237:2;2226:9;2222:18;2214:26;;2286:9;2280:4;2276:20;2272:1;2261:9;2257:17;2250:47;2314:78;2387:4;2378:6;2314:78;:::i;:::-;2306:86;;2086:313;;;;:::o;2405:126::-;2442:7;2482:42;2475:5;2471:54;2460:65;;2405:126;;;:::o;2537:96::-;2574:7;2603:24;2621:5;2603:24;:::i;:::-;2592:35;;2537:96;;;:::o;2639:122::-;2712:24;2730:5;2712:24;:::i;:::-;2705:5;2702:35;2692:63;;2751:1;2748;2741:12;2692:63;2639:122;:::o;2767:139::-;2813:5;2851:6;2838:20;2829:29;;2867:33;2894:5;2867:33;:::i;:::-;2767:139;;;;:::o;2912:474::-;2980:6;2988;3037:2;3025:9;3016:7;3012:23;3008:32;3005:119;;;3043:79;;:::i;:::-;3005:119;3163:1;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3134:117;3290:2;3316:53;3361:7;3352:6;3341:9;3337:22;3316:53;:::i;:::-;3306:63;;3261:118;2912:474;;;;;:::o;3392:90::-;3426:7;3469:5;3462:13;3455:21;3444:32;;3392:90;;;:::o;3488:109::-;3569:21;3584:5;3569:21;:::i;:::-;3564:3;3557:34;3488:109;;:::o;3603:210::-;3690:4;3728:2;3717:9;3713:18;3705:26;;3741:65;3803:1;3792:9;3788:17;3779:6;3741:65;:::i;:::-;3603:210;;;;:::o;3819:60::-;3847:3;3868:5;3861:12;;3819:60;;;:::o;3885:142::-;3935:9;3968:53;3986:34;3995:24;4013:5;3995:24;:::i;:::-;3986:34;:::i;:::-;3968:53;:::i;:::-;3955:66;;3885:142;;;:::o;4033:126::-;4083:9;4116:37;4147:5;4116:37;:::i;:::-;4103:50;;4033:126;;;:::o;4165:153::-;4242:9;4275:37;4306:5;4275:37;:::i;:::-;4262:50;;4165:153;;;:::o;4324:185::-;4438:64;4496:5;4438:64;:::i;:::-;4433:3;4426:77;4324:185;;:::o;4515:276::-;4635:4;4673:2;4662:9;4658:18;4650:26;;4686:98;4781:1;4770:9;4766:17;4757:6;4686:98;:::i;:::-;4515:276;;;;:::o;4797:118::-;4884:24;4902:5;4884:24;:::i;:::-;4879:3;4872:37;4797:118;;:::o;4921:222::-;5014:4;5052:2;5041:9;5037:18;5029:26;;5065:71;5133:1;5122:9;5118:17;5109:6;5065:71;:::i;:::-;4921:222;;;;:::o;5149:329::-;5208:6;5257:2;5245:9;5236:7;5232:23;5228:32;5225:119;;;5263:79;;:::i;:::-;5225:119;5383:1;5408:53;5453:7;5444:6;5433:9;5429:22;5408:53;:::i;:::-;5398:63;;5354:117;5149:329;;;;:::o;5484:619::-;5561:6;5569;5577;5626:2;5614:9;5605:7;5601:23;5597:32;5594:119;;;5632:79;;:::i;:::-;5594:119;5752:1;5777:53;5822:7;5813:6;5802:9;5798:22;5777:53;:::i;:::-;5767:63;;5723:117;5879:2;5905:53;5950:7;5941:6;5930:9;5926:22;5905:53;:::i;:::-;5895:63;;5850:118;6007:2;6033:53;6078:7;6069:6;6058:9;6054:22;6033:53;:::i;:::-;6023:63;;5978:118;5484:619;;;;;:::o;6109:118::-;6196:24;6214:5;6196:24;:::i;:::-;6191:3;6184:37;6109:118;;:::o;6233:222::-;6326:4;6364:2;6353:9;6349:18;6341:26;;6377:71;6445:1;6434:9;6430:17;6421:6;6377:71;:::i;:::-;6233:222;;;;:::o;6461:86::-;6496:7;6536:4;6529:5;6525:16;6514:27;;6461:86;;;:::o;6553:112::-;6636:22;6652:5;6636:22;:::i;:::-;6631:3;6624:35;6553:112;;:::o;6671:214::-;6760:4;6798:2;6787:9;6783:18;6775:26;;6811:67;6875:1;6864:9;6860:17;6851:6;6811:67;:::i;:::-;6671:214;;;;:::o;6891:329::-;6950:6;6999:2;6987:9;6978:7;6974:23;6970:32;6967:119;;;7005:79;;:::i;:::-;6967:119;7125:1;7150:53;7195:7;7186:6;7175:9;7171:22;7150:53;:::i;:::-;7140:63;;7096:117;6891:329;;;;:::o;7226:116::-;7296:21;7311:5;7296:21;:::i;:::-;7289:5;7286:32;7276:60;;7332:1;7329;7322:12;7276:60;7226:116;:::o;7348:133::-;7391:5;7429:6;7416:20;7407:29;;7445:30;7469:5;7445:30;:::i;:::-;7348:133;;;;:::o;7487:468::-;7552:6;7560;7609:2;7597:9;7588:7;7584:23;7580:32;7577:119;;;7615:79;;:::i;:::-;7577:119;7735:1;7760:53;7805:7;7796:6;7785:9;7781:22;7760:53;:::i;:::-;7750:63;;7706:117;7862:2;7888:50;7930:7;7921:6;7910:9;7906:22;7888:50;:::i;:::-;7878:60;;7833:115;7487:468;;;;;:::o;7961:323::-;8017:6;8066:2;8054:9;8045:7;8041:23;8037:32;8034:119;;;8072:79;;:::i;:::-;8034:119;8192:1;8217:50;8259:7;8250:6;8239:9;8235:22;8217:50;:::i;:::-;8207:60;;8163:114;7961:323;;;;:::o;8290:765::-;8376:6;8384;8392;8400;8449:3;8437:9;8428:7;8424:23;8420:33;8417:120;;;8456:79;;:::i;:::-;8417:120;8576:1;8601:53;8646:7;8637:6;8626:9;8622:22;8601:53;:::i;:::-;8591:63;;8547:117;8703:2;8729:53;8774:7;8765:6;8754:9;8750:22;8729:53;:::i;:::-;8719:63;;8674:118;8831:2;8857:53;8902:7;8893:6;8882:9;8878:22;8857:53;:::i;:::-;8847:63;;8802:118;8959:2;8985:53;9030:7;9021:6;9010:9;9006:22;8985:53;:::i;:::-;8975:63;;8930:118;8290:765;;;;;;;:::o;9061:474::-;9129:6;9137;9186:2;9174:9;9165:7;9161:23;9157:32;9154:119;;;9192:79;;:::i;:::-;9154:119;9312:1;9337:53;9382:7;9373:6;9362:9;9358:22;9337:53;:::i;:::-;9327:63;;9283:117;9439:2;9465:53;9510:7;9501:6;9490:9;9486:22;9465:53;:::i;:::-;9455:63;;9410:118;9061:474;;;;;:::o;9541:182::-;9681:34;9677:1;9669:6;9665:14;9658:58;9541:182;:::o;9729:366::-;9871:3;9892:67;9956:2;9951:3;9892:67;:::i;:::-;9885:74;;9968:93;10057:3;9968:93;:::i;:::-;10086:2;10081:3;10077:12;10070:19;;9729:366;;;:::o;10101:419::-;10267:4;10305:2;10294:9;10290:18;10282:26;;10354:9;10348:4;10344:20;10340:1;10329:9;10325:17;10318:47;10382:131;10508:4;10382:131;:::i;:::-;10374:139;;10101:419;;;:::o;10526:180::-;10574:77;10571:1;10564:88;10671:4;10668:1;10661:15;10695:4;10692:1;10685:15;10712:191;10752:3;10771:20;10789:1;10771:20;:::i;:::-;10766:25;;10805:20;10823:1;10805:20;:::i;:::-;10800:25;;10848:1;10845;10841:9;10834:16;;10869:3;10866:1;10863:10;10860:36;;;10876:18;;:::i;:::-;10860:36;10712:191;;;;:::o;10909:179::-;11049:31;11045:1;11037:6;11033:14;11026:55;10909:179;:::o;11094:366::-;11236:3;11257:67;11321:2;11316:3;11257:67;:::i;:::-;11250:74;;11333:93;11422:3;11333:93;:::i;:::-;11451:2;11446:3;11442:12;11435:19;;11094:366;;;:::o;11466:419::-;11632:4;11670:2;11659:9;11655:18;11647:26;;11719:9;11713:4;11709:20;11705:1;11694:9;11690:17;11683:47;11747:131;11873:4;11747:131;:::i;:::-;11739:139;;11466:419;;;:::o;11891:180::-;11939:77;11936:1;11929:88;12036:4;12033:1;12026:15;12060:4;12057:1;12050:15;12077:320;12121:6;12158:1;12152:4;12148:12;12138:22;;12205:1;12199:4;12195:12;12226:18;12216:81;;12282:4;12274:6;12270:17;12260:27;;12216:81;12344:2;12336:6;12333:14;12313:18;12310:38;12307:84;;12363:18;;:::i;:::-;12307:84;12128:269;12077:320;;;:::o;12403:410::-;12443:7;12466:20;12484:1;12466:20;:::i;:::-;12461:25;;12500:20;12518:1;12500:20;:::i;:::-;12495:25;;12555:1;12552;12548:9;12577:30;12595:11;12577:30;:::i;:::-;12566:41;;12756:1;12747:7;12743:15;12740:1;12737:22;12717:1;12710:9;12690:83;12667:139;;12786:18;;:::i;:::-;12667:139;12451:362;12403:410;;;;:::o;12819:180::-;12867:77;12864:1;12857:88;12964:4;12961:1;12954:15;12988:4;12985:1;12978:15;13005:185;13045:1;13062:20;13080:1;13062:20;:::i;:::-;13057:25;;13096:20;13114:1;13096:20;:::i;:::-;13091:25;;13135:1;13125:35;;13140:18;;:::i;:::-;13125:35;13182:1;13179;13175:9;13170:14;;13005:185;;;;:::o;13196:182::-;13336:34;13332:1;13324:6;13320:14;13313:58;13196:182;:::o;13384:366::-;13526:3;13547:67;13611:2;13606:3;13547:67;:::i;:::-;13540:74;;13623:93;13712:3;13623:93;:::i;:::-;13741:2;13736:3;13732:12;13725:19;;13384:366;;;:::o;13756:419::-;13922:4;13960:2;13949:9;13945:18;13937:26;;14009:9;14003:4;13999:20;13995:1;13984:9;13980:17;13973:47;14037:131;14163:4;14037:131;:::i;:::-;14029:139;;13756:419;;;:::o;14181:224::-;14321:34;14317:1;14309:6;14305:14;14298:58;14390:7;14385:2;14377:6;14373:15;14366:32;14181:224;:::o;14411:366::-;14553:3;14574:67;14638:2;14633:3;14574:67;:::i;:::-;14567:74;;14650:93;14739:3;14650:93;:::i;:::-;14768:2;14763:3;14759:12;14752:19;;14411:366;;;:::o;14783:419::-;14949:4;14987:2;14976:9;14972:18;14964:26;;15036:9;15030:4;15026:20;15022:1;15011:9;15007:17;15000:47;15064:131;15190:4;15064:131;:::i;:::-;15056:139;;14783:419;;;:::o;15208:227::-;15348:34;15344:1;15336:6;15332:14;15325:58;15417:10;15412:2;15404:6;15400:15;15393:35;15208:227;:::o;15441:366::-;15583:3;15604:67;15668:2;15663:3;15604:67;:::i;:::-;15597:74;;15680:93;15769:3;15680:93;:::i;:::-;15798:2;15793:3;15789:12;15782:19;;15441:366;;;:::o;15813:419::-;15979:4;16017:2;16006:9;16002:18;15994:26;;16066:9;16060:4;16056:20;16052:1;16041:9;16037:17;16030:47;16094:131;16220:4;16094:131;:::i;:::-;16086:139;;15813:419;;;:::o;16238:244::-;16378:34;16374:1;16366:6;16362:14;16355:58;16447:27;16442:2;16434:6;16430:15;16423:52;16238:244;:::o;16488:366::-;16630:3;16651:67;16715:2;16710:3;16651:67;:::i;:::-;16644:74;;16727:93;16816:3;16727:93;:::i;:::-;16845:2;16840:3;16836:12;16829:19;;16488:366;;;:::o;16860:419::-;17026:4;17064:2;17053:9;17049:18;17041:26;;17113:9;17107:4;17103:20;17099:1;17088:9;17084:17;17077:47;17141:131;17267:4;17141:131;:::i;:::-;17133:139;;16860:419;;;:::o;17285:224::-;17425:34;17421:1;17413:6;17409:14;17402:58;17494:7;17489:2;17481:6;17477:15;17470:32;17285:224;:::o;17515:366::-;17657:3;17678:67;17742:2;17737:3;17678:67;:::i;:::-;17671:74;;17754:93;17843:3;17754:93;:::i;:::-;17872:2;17867:3;17863:12;17856:19;;17515:366;;;:::o;17887:419::-;18053:4;18091:2;18080:9;18076:18;18068:26;;18140:9;18134:4;18130:20;18126:1;18115:9;18111:17;18104:47;18168:131;18294:4;18168:131;:::i;:::-;18160:139;;17887:419;;;:::o;18312:162::-;18452:14;18448:1;18440:6;18436:14;18429:38;18312:162;:::o;18480:366::-;18622:3;18643:67;18707:2;18702:3;18643:67;:::i;:::-;18636:74;;18719:93;18808:3;18719:93;:::i;:::-;18837:2;18832:3;18828:12;18821:19;;18480:366;;;:::o;18852:419::-;19018:4;19056:2;19045:9;19041:18;19033:26;;19105:9;19099:4;19095:20;19091:1;19080:9;19076:17;19069:47;19133:131;19259:4;19133:131;:::i;:::-;19125:139;;18852:419;;;:::o;19277:240::-;19417:34;19413:1;19405:6;19401:14;19394:58;19486:23;19481:2;19473:6;19469:15;19462:48;19277:240;:::o;19523:366::-;19665:3;19686:67;19750:2;19745:3;19686:67;:::i;:::-;19679:74;;19762:93;19851:3;19762:93;:::i;:::-;19880:2;19875:3;19871:12;19864:19;;19523:366;;;:::o;19895:419::-;20061:4;20099:2;20088:9;20084:18;20076:26;;20148:9;20142:4;20138:20;20134:1;20123:9;20119:17;20112:47;20176:131;20302:4;20176:131;:::i;:::-;20168:139;;19895:419;;;:::o;20320:239::-;20460:34;20456:1;20448:6;20444:14;20437:58;20529:22;20524:2;20516:6;20512:15;20505:47;20320:239;:::o;20565:366::-;20707:3;20728:67;20792:2;20787:3;20728:67;:::i;:::-;20721:74;;20804:93;20893:3;20804:93;:::i;:::-;20922:2;20917:3;20913:12;20906:19;;20565:366;;;:::o;20937:419::-;21103:4;21141:2;21130:9;21126:18;21118:26;;21190:9;21184:4;21180:20;21176:1;21165:9;21161:17;21154:47;21218:131;21344:4;21218:131;:::i;:::-;21210:139;;20937:419;;;:::o;21362:225::-;21502:34;21498:1;21490:6;21486:14;21479:58;21571:8;21566:2;21558:6;21554:15;21547:33;21362:225;:::o;21593:366::-;21735:3;21756:67;21820:2;21815:3;21756:67;:::i;:::-;21749:74;;21832:93;21921:3;21832:93;:::i;:::-;21950:2;21945:3;21941:12;21934:19;;21593:366;;;:::o;21965:419::-;22131:4;22169:2;22158:9;22154:18;22146:26;;22218:9;22212:4;22208:20;22204:1;22193:9;22189:17;22182:47;22246:131;22372:4;22246:131;:::i;:::-;22238:139;;21965:419;;;:::o;22390:223::-;22530:34;22526:1;22518:6;22514:14;22507:58;22599:6;22594:2;22586:6;22582:15;22575:31;22390:223;:::o;22619:366::-;22761:3;22782:67;22846:2;22841:3;22782:67;:::i;:::-;22775:74;;22858:93;22947:3;22858:93;:::i;:::-;22976:2;22971:3;22967:12;22960:19;;22619:366;;;:::o;22991:419::-;23157:4;23195:2;23184:9;23180:18;23172:26;;23244:9;23238:4;23234:20;23230:1;23219:9;23215:17;23208:47;23272:131;23398:4;23272:131;:::i;:::-;23264:139;;22991:419;;;:::o;23416:221::-;23556:34;23552:1;23544:6;23540:14;23533:58;23625:4;23620:2;23612:6;23608:15;23601:29;23416:221;:::o;23643:366::-;23785:3;23806:67;23870:2;23865:3;23806:67;:::i;:::-;23799:74;;23882:93;23971:3;23882:93;:::i;:::-;24000:2;23995:3;23991:12;23984:19;;23643:366;;;:::o;24015:419::-;24181:4;24219:2;24208:9;24204:18;24196:26;;24268:9;24262:4;24258:20;24254:1;24243:9;24239:17;24232:47;24296:131;24422:4;24296:131;:::i;:::-;24288:139;;24015:419;;;:::o;24440:224::-;24580:34;24576:1;24568:6;24564:14;24557:58;24649:7;24644:2;24636:6;24632:15;24625:32;24440:224;:::o;24670:366::-;24812:3;24833:67;24897:2;24892:3;24833:67;:::i;:::-;24826:74;;24909:93;24998:3;24909:93;:::i;:::-;25027:2;25022:3;25018:12;25011:19;;24670:366;;;:::o;25042:419::-;25208:4;25246:2;25235:9;25231:18;25223:26;;25295:9;25289:4;25285:20;25281:1;25270:9;25266:17;25259:47;25323:131;25449:4;25323:131;:::i;:::-;25315:139;;25042:419;;;:::o;25467:222::-;25607:34;25603:1;25595:6;25591:14;25584:58;25676:5;25671:2;25663:6;25659:15;25652:30;25467:222;:::o;25695:366::-;25837:3;25858:67;25922:2;25917:3;25858:67;:::i;:::-;25851:74;;25934:93;26023:3;25934:93;:::i;:::-;26052:2;26047:3;26043:12;26036:19;;25695:366;;;:::o;26067:419::-;26233:4;26271:2;26260:9;26256:18;26248:26;;26320:9;26314:4;26310:20;26306:1;26295:9;26291:17;26284:47;26348:131;26474:4;26348:131;:::i;:::-;26340:139;;26067:419;;;:::o;26492:167::-;26632:19;26628:1;26620:6;26616:14;26609:43;26492:167;:::o;26665:366::-;26807:3;26828:67;26892:2;26887:3;26828:67;:::i;:::-;26821:74;;26904:93;26993:3;26904:93;:::i;:::-;27022:2;27017:3;27013:12;27006:19;;26665:366;;;:::o;27037:419::-;27203:4;27241:2;27230:9;27226:18;27218:26;;27290:9;27284:4;27280:20;27276:1;27265:9;27261:17;27254:47;27318:131;27444:4;27318:131;:::i;:::-;27310:139;;27037:419;;;:::o;27462:165::-;27602:17;27598:1;27590:6;27586:14;27579:41;27462:165;:::o;27633:366::-;27775:3;27796:67;27860:2;27855:3;27796:67;:::i;:::-;27789:74;;27872:93;27961:3;27872:93;:::i;:::-;27990:2;27985:3;27981:12;27974:19;;27633:366;;;:::o;28005:419::-;28171:4;28209:2;28198:9;28194:18;28186:26;;28258:9;28252:4;28248:20;28244:1;28233:9;28229:17;28222:47;28286:131;28412:4;28286:131;:::i;:::-;28278:139;;28005:419;;;:::o;28430:172::-;28570:24;28566:1;28558:6;28554:14;28547:48;28430:172;:::o;28608:366::-;28750:3;28771:67;28835:2;28830:3;28771:67;:::i;:::-;28764:74;;28847:93;28936:3;28847:93;:::i;:::-;28965:2;28960:3;28956:12;28949:19;;28608:366;;;:::o;28980:419::-;29146:4;29184:2;29173:9;29169:18;29161:26;;29233:9;29227:4;29223:20;29219:1;29208:9;29204:17;29197:47;29261:131;29387:4;29261:131;:::i;:::-;29253:139;;28980:419;;;:::o;29405:297::-;29545:34;29541:1;29533:6;29529:14;29522:58;29614:34;29609:2;29601:6;29597:15;29590:59;29683:11;29678:2;29670:6;29666:15;29659:36;29405:297;:::o;29708:366::-;29850:3;29871:67;29935:2;29930:3;29871:67;:::i;:::-;29864:74;;29947:93;30036:3;29947:93;:::i;:::-;30065:2;30060:3;30056:12;30049:19;;29708:366;;;:::o;30080:419::-;30246:4;30284:2;30273:9;30269:18;30261:26;;30333:9;30327:4;30323:20;30319:1;30308:9;30304:17;30297:47;30361:131;30487:4;30361:131;:::i;:::-;30353:139;;30080:419;;;:::o;30505:225::-;30645:34;30641:1;30633:6;30629:14;30622:58;30714:8;30709:2;30701:6;30697:15;30690:33;30505:225;:::o;30736:366::-;30878:3;30899:67;30963:2;30958:3;30899:67;:::i;:::-;30892:74;;30975:93;31064:3;30975:93;:::i;:::-;31093:2;31088:3;31084:12;31077:19;;30736:366;;;:::o;31108:419::-;31274:4;31312:2;31301:9;31297:18;31289:26;;31361:9;31355:4;31351:20;31347:1;31336:9;31332:17;31325:47;31389:131;31515:4;31389:131;:::i;:::-;31381:139;;31108:419;;;:::o;31533:169::-;31673:21;31669:1;31661:6;31657:14;31650:45;31533:169;:::o;31708:366::-;31850:3;31871:67;31935:2;31930:3;31871:67;:::i;:::-;31864:74;;31947:93;32036:3;31947:93;:::i;:::-;32065:2;32060:3;32056:12;32049:19;;31708:366;;;:::o;32080:419::-;32246:4;32284:2;32273:9;32269:18;32261:26;;32333:9;32327:4;32323:20;32319:1;32308:9;32304:17;32297:47;32361:131;32487:4;32361:131;:::i;:::-;32353:139;;32080:419;;;:::o;32505:226::-;32645:34;32641:1;32633:6;32629:14;32622:58;32714:9;32709:2;32701:6;32697:15;32690:34;32505:226;:::o;32737:366::-;32879:3;32900:67;32964:2;32959:3;32900:67;:::i;:::-;32893:74;;32976:93;33065:3;32976:93;:::i;:::-;33094:2;33089:3;33085:12;33078:19;;32737:366;;;:::o;33109:419::-;33275:4;33313:2;33302:9;33298:18;33290:26;;33362:9;33356:4;33352:20;33348:1;33337:9;33333:17;33326:47;33390:131;33516:4;33390:131;:::i;:::-;33382:139;;33109:419;;;:::o;33534:194::-;33574:4;33594:20;33612:1;33594:20;:::i;:::-;33589:25;;33628:20;33646:1;33628:20;:::i;:::-;33623:25;;33672:1;33669;33665:9;33657:17;;33696:1;33690:4;33687:11;33684:37;;;33701:18;;:::i;:::-;33684:37;33534:194;;;;:::o;33734:180::-;33782:77;33779:1;33772:88;33879:4;33876:1;33869:15;33903:4;33900:1;33893:15;33920:180;33968:77;33965:1;33958:88;34065:4;34062:1;34055:15;34089:4;34086:1;34079:15;34106:143;34163:5;34194:6;34188:13;34179:22;;34210:33;34237:5;34210:33;:::i;:::-;34106:143;;;;:::o;34255:351::-;34325:6;34374:2;34362:9;34353:7;34349:23;34345:32;34342:119;;;34380:79;;:::i;:::-;34342:119;34500:1;34525:64;34581:7;34572:6;34561:9;34557:22;34525:64;:::i;:::-;34515:74;;34471:128;34255:351;;;;:::o;34612:85::-;34657:7;34686:5;34675:16;;34612:85;;;:::o;34703:158::-;34761:9;34794:61;34812:42;34821:32;34847:5;34821:32;:::i;:::-;34812:42;:::i;:::-;34794:61;:::i;:::-;34781:74;;34703:158;;;:::o;34867:147::-;34962:45;35001:5;34962:45;:::i;:::-;34957:3;34950:58;34867:147;;:::o;35020:114::-;35087:6;35121:5;35115:12;35105:22;;35020:114;;;:::o;35140:184::-;35239:11;35273:6;35268:3;35261:19;35313:4;35308:3;35304:14;35289:29;;35140:184;;;;:::o;35330:132::-;35397:4;35420:3;35412:11;;35450:4;35445:3;35441:14;35433:22;;35330:132;;;:::o;35468:108::-;35545:24;35563:5;35545:24;:::i;:::-;35540:3;35533:37;35468:108;;:::o;35582:179::-;35651:10;35672:46;35714:3;35706:6;35672:46;:::i;:::-;35750:4;35745:3;35741:14;35727:28;;35582:179;;;;:::o;35767:113::-;35837:4;35869;35864:3;35860:14;35852:22;;35767:113;;;:::o;35916:732::-;36035:3;36064:54;36112:5;36064:54;:::i;:::-;36134:86;36213:6;36208:3;36134:86;:::i;:::-;36127:93;;36244:56;36294:5;36244:56;:::i;:::-;36323:7;36354:1;36339:284;36364:6;36361:1;36358:13;36339:284;;;36440:6;36434:13;36467:63;36526:3;36511:13;36467:63;:::i;:::-;36460:70;;36553:60;36606:6;36553:60;:::i;:::-;36543:70;;36399:224;36386:1;36383;36379:9;36374:14;;36339:284;;;36343:14;36639:3;36632:10;;36040:608;;;35916:732;;;;:::o;36654:831::-;36917:4;36955:3;36944:9;36940:19;36932:27;;36969:71;37037:1;37026:9;37022:17;37013:6;36969:71;:::i;:::-;37050:80;37126:2;37115:9;37111:18;37102:6;37050:80;:::i;:::-;37177:9;37171:4;37167:20;37162:2;37151:9;37147:18;37140:48;37205:108;37308:4;37299:6;37205:108;:::i;:::-;37197:116;;37323:72;37391:2;37380:9;37376:18;37367:6;37323:72;:::i;:::-;37405:73;37473:3;37462:9;37458:19;37449:6;37405:73;:::i;:::-;36654:831;;;;;;;;:::o;37491:225::-;37631:34;37627:1;37619:6;37615:14;37608:58;37700:8;37695:2;37687:6;37683:15;37676:33;37491:225;:::o;37722:366::-;37864:3;37885:67;37949:2;37944:3;37885:67;:::i;:::-;37878:74;;37961:93;38050:3;37961:93;:::i;:::-;38079:2;38074:3;38070:12;38063:19;;37722:366;;;:::o;38094:419::-;38260:4;38298:2;38287:9;38283:18;38275:26;;38347:9;38341:4;38337:20;38333:1;38322:9;38318:17;38311:47;38375:131;38501:4;38375:131;:::i;:::-;38367:139;;38094:419;;;:::o;38519:147::-;38620:11;38657:3;38642:18;;38519:147;;;;:::o;38672:114::-;;:::o;38792:398::-;38951:3;38972:83;39053:1;39048:3;38972:83;:::i;:::-;38965:90;;39064:93;39153:3;39064:93;:::i;:::-;39182:1;39177:3;39173:11;39166:18;;38792:398;;;:::o;39196:379::-;39380:3;39402:147;39545:3;39402:147;:::i;:::-;39395:154;;39566:3;39559:10;;39196:379;;;:::o
Swarm Source
ipfs://301f6a4aff882a2017a6e54c9d53856441840b68178881458cf2a1f78b5ab093
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.