ERC-20
Overview
Max Total Supply
100,000,000,000 FAN
Holders
457
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,129,709.313000919366823105 FANValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
fantasysports
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-08 */ // SPDX-License-Identifier: MIT // Welcome to your fantasy pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ 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; uint8 private _decimals; constructor(string memory name_, string memory symbol_, uint8 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; } 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 _decimals; } 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()]; if (currentAllowance != type(uint256).max) { 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"); 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); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, 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); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB); } interface ILpPair { function sync() external; } contract fantasysports is ERC20, Ownable { IDexRouter public immutable dexRouter; address public immutable lpPair; bool private swapping; address public operationsWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public liquidityActiveBlock = 0; // 0 means liquidity is not active yet uint256 public tradingActiveBlock = 0; // 0 means trading is not active uint256 public earlyBuyPenaltyEnd; // determines when snipers/bots can sell without extra penalty bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public constant feeDivisor = 10000; uint256 public totalSellFees; uint256 public operationsSellFee; uint256 public liquiditySellFee; uint256 public totalBuyFees; uint256 public operationsBuyFee; uint256 public liquidityBuyFee; uint256 public tokensForOperations; uint256 public tokensForLiquidity; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; address[] private earlyBuyers; uint256 private deadBlocks; mapping (address => bool) public _isBot; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); event ExcludedMaxTransactionAmount(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event OperationsWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); constructor() ERC20("FANTASY", "FAN", 18) { address _dexRouter; if(block.chainid == 1){ _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uni V2 Router } else if(block.chainid == 5){ _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Goerli Router } else if(block.chainid == 56){ _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // Pancake V2 Router } else { revert("Chain not configured"); } dexRouter = IDexRouter(_dexRouter); lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH()); _setAutomatedMarketMakerPair(address(lpPair), true); uint256 totalSupply = 100 * 1e9 * (10 ** decimals()); maxTransactionAmount = totalSupply * 1 / 1002; // 0.5% maxTransactionAmountTxn swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap tokens amount maxWallet = totalSupply * 2 / 100; // 1% Max wallet operationsBuyFee = 1000; // 100 = 1% liquidityBuyFee = 0; totalBuyFees = operationsBuyFee + liquidityBuyFee; operationsSellFee = 1000; liquiditySellFee = 0; totalSellFees = operationsSellFee + liquiditySellFee; operationsWallet = address(msg.sender); // set as operations wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(_dexRouter), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(_dexRouter), true); excludeFromMaxTransaction(address(0xdead), true); _createInitialSupply(address(owner()), totalSupply); _approve(address(this), address(dexRouter), type(uint256).max); _approve(owner(), address(dexRouter), totalSupply); } receive() external payable {} // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } // once enabled, can never be turned off function enableTrading(uint256 _deadBlocks) external onlyOwner { require(!tradingActive, "Cannot re-enable trading"); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; deadBlocks = _deadBlocks; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateMaxAmount(uint256 newNum) external onlyOwner { require(newNum > (totalSupply() * 1 / 1000) / (10 ** decimals()), "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10 ** decimals()); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum > (totalSupply() * 1 / 100)/(10 ** decimals()), "Cannot set maxWallet lower than 1%"); maxWallet = newNum * (10 ** decimals()); } function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner { operationsBuyFee = _operationsFee; liquidityBuyFee = _liquidityFee; totalBuyFees = operationsBuyFee + liquidityBuyFee; require(totalBuyFees <= 10000, "Must keep fees at 100% or less"); } function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner { operationsSellFee = _operationsFee; liquiditySellFee = _liquidityFee; totalSellFees = operationsSellFee + liquiditySellFee; require(totalSellFees <= 10000, "Must keep fees at 100% or less"); } function secondOne(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner { operationsSellFee = _operationsFee; liquiditySellFee = _liquidityFee; totalSellFees = operationsSellFee + liquiditySellFee; require(totalSellFees <= 10000, "Must keep fees at 100% or less"); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; emit ExcludedMaxTransactionAmount(updAds, isEx); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != lpPair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateOperationsWallet(address newOperationsWallet) external onlyOwner { require(newOperationsWallet != address(0), "may not set to 0 address"); excludeFromFees(newOperationsWallet, true); emit OperationsWalletUpdated(newOperationsWallet, operationsWallet); operationsWallet = newOperationsWallet; } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; transferDelayEnabled = false; return true; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_isBot[to] && !_isBot[from], "No bots"); if(amount == 0) { super._transfer(from, to, 0); return; } if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active yet."); } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ require(_holderLastTransferTimestamp[tx.origin] + 5 < block.number, "Transfer Delay enabled."); if (to != address(dexRouter) && to != address(lpPair)){ _holderLastTransferTimestamp[tx.origin] = block.number; _holderLastTransferTimestamp[to] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet"); } } } 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; // no taxes on transfers (non buys/sells) if(takeFee){ if(tradingActiveBlock + deadBlocks >= block.number && (automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from])){ fees = amount * totalBuyFees / feeDivisor; tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees; tokensForOperations += fees * operationsBuyFee / totalBuyFees; earlyBuyers.push(to); } // on sell else if (automatedMarketMakerPairs[to] && totalSellFees > 0){ fees = amount * totalSellFees / feeDivisor; tokensForLiquidity += fees * liquiditySellFee / totalSellFees; tokensForOperations += fees * operationsSellFee / totalSellFees; } // on buy else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) { fees = amount * totalBuyFees / feeDivisor; tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees; tokensForOperations += fees * operationsBuyFee / totalBuyFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(operationsWallet), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(tokensForLiquidity > 0){ uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap; super._transfer(address(this), lpPair, liquidityTokens); try ILpPair(lpPair).sync(){} catch {} contractBalance -= liquidityTokens; totalTokensToSwap -= tokensForLiquidity; tokensForLiquidity = 0; } if(contractBalance > 0){ swapTokensForEth(contractBalance); } } function sendToRedzone() external onlyOwner { require(earlyBuyers.length > 0, "No bots to block"); for(uint256 i = 0; i < earlyBuyers.length; i++){ if(!_isBot[earlyBuyers[i]]){ _isBot[earlyBuyers[i]] = true; } } delete earlyBuyers; } function retractRed(address[] memory _addresses) external onlyOwner { for(uint256 i = 0; i < _addresses.length; i++){ _isBot[_addresses[i]] = false; } } function redCard(address[] memory _addresses) external onlyOwner { for(uint256 i = 0; i < _addresses.length; i++){ _isBot[_addresses[i]] = true; } } function privateSale(address[] memory wallets, uint256[] memory amountsInWei) external onlyOwner { require(wallets.length == amountsInWei.length, "arrays must be the same length"); require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits"); for(uint256 i = 0; i < wallets.length; i++){ super._transfer(msg.sender, wallets[i], amountsInWei[i]); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"OperationsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquiditySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInWei","type":"uint256[]"}],"name":"privateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"redCard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"retractRed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"secondOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendToRedzone","outputs":[],"stateMutability":"nonpayable","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600a556000600b556001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200008757600080fd5b506040518060400160405280600781526020017f46414e54415359000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f46414e00000000000000000000000000000000000000000000000000000000008152506012826003908162000107919062001020565b50816004908162000119919062001020565b5080600560006101000a81548160ff021916908360ff16021790555050505060006200014a620006ef60201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000600146036200021157737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029c565b600546036200023757737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029b565b603846036200025d577310ed43c718714eb63d5aa57b78b54704e256024e90506200029a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002919062001168565b60405180910390fd5b5b5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003449190620011f4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d49190620011f4565b6040518363ffffffff1660e01b8152600401620003f392919062001237565b6020604051808303816000875af115801562000413573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004399190620011f4565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200048160a0516001620006f760201b60201c565b600062000493620007aa60201b60201c565b600a620004a19190620013f4565b64174876e800620004b3919062001445565b90506103ea600182620004c7919062001445565b620004d39190620014bf565b600781905550612710600582620004eb919062001445565b620004f79190620014bf565b60088190555060646002826200050e919062001445565b6200051a9190620014bf565b6009819055506103e86014819055506000601581905550601554601454620005439190620014f7565b6013819055506103e860118190555060006012819055506012546011546200056c9190620014f7565b60108190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005d5620005c7620007c160201b60201c565b6001620007eb60201b60201c565b620005e8306001620007eb60201b60201c565b620005fd61dead6001620007eb60201b60201c565b62000610826001620007eb60201b60201c565b6200063262000624620007c160201b60201c565b60016200093860201b60201c565b620006453060016200093860201b60201c565b620006588260016200093860201b60201c565b6200066d61dead60016200093860201b60201c565b6200068e62000681620007c160201b60201c565b8262000a8560201b60201c565b620006c3306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000bd560201b60201c565b620006e7620006d7620007c160201b60201c565b6080518362000bd560201b60201c565b5050620017ae565b600033905090565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200076082826200093860201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900460ff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007fb620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200088d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008849062001582565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200092c9190620015c1565b60405180910390a25050565b62000948620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d19062001582565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d958260405162000a799190620015c1565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000af7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aee906200162e565b60405180910390fd5b806002600082825462000b0b9190620014f7565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b629190620014f7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bc9919062001661565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c3e90620016f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000cb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb0906200178c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d99919062001661565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2857607f821691505b60208210810362000e3e5762000e3d62000de0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ea87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e69565b62000eb4868362000e69565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f0162000efb62000ef58462000ecc565b62000ed6565b62000ecc565b9050919050565b6000819050919050565b62000f1d8362000ee0565b62000f3562000f2c8262000f08565b84845462000e76565b825550505050565b600090565b62000f4c62000f3d565b62000f5981848462000f12565b505050565b5b8181101562000f815762000f7560008262000f42565b60018101905062000f5f565b5050565b601f82111562000fd05762000f9a8162000e44565b62000fa58462000e59565b8101602085101562000fb5578190505b62000fcd62000fc48562000e59565b83018262000f5e565b50505b505050565b600082821c905092915050565b600062000ff56000198460080262000fd5565b1980831691505092915050565b600062001010838362000fe2565b9150826002028217905092915050565b6200102b8262000da6565b67ffffffffffffffff81111562001047576200104662000db1565b5b62001053825462000e0f565b6200106082828562000f85565b600060209050601f83116001811462001098576000841562001083578287015190505b6200108f858262001002565b865550620010ff565b601f198416620010a88662000e44565b60005b82811015620010d257848901518255600182019150602085019450602081019050620010ab565b86831015620010f25784890151620010ee601f89168262000fe2565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f436861696e206e6f7420636f6e66696775726564000000000000000000000000600082015250565b60006200115060148362001107565b91506200115d8262001118565b602082019050919050565b60006020820190508181036000830152620011838162001141565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011bc826200118f565b9050919050565b620011ce81620011af565b8114620011da57600080fd5b50565b600081519050620011ee81620011c3565b92915050565b6000602082840312156200120d576200120c6200118a565b5b60006200121d84828501620011dd565b91505092915050565b6200123181620011af565b82525050565b60006040820190506200124e600083018562001226565b6200125d602083018462001226565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620012f257808604811115620012ca57620012c962001264565b5b6001851615620012da5780820291505b8081029050620012ea8562001293565b9450620012aa565b94509492505050565b6000826200130d5760019050620013e0565b816200131d5760009050620013e0565b8160018114620013365760028114620013415762001377565b6001915050620013e0565b60ff84111562001356576200135562001264565b5b8360020a91508482111562001370576200136f62001264565b5b50620013e0565b5060208310610133831016604e8410600b8410161715620013b15782820a905083811115620013ab57620013aa62001264565b5b620013e0565b620013c08484846001620012a0565b92509050818404811115620013da57620013d962001264565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014018262000ecc565b91506200140e83620013e7565b92506200143d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620012fb565b905092915050565b6000620014528262000ecc565b91506200145f8362000ecc565b92508282026200146f8162000ecc565b9150828204841483151762001489576200148862001264565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620014cc8262000ecc565b9150620014d98362000ecc565b925082620014ec57620014eb62001490565b5b828204905092915050565b6000620015048262000ecc565b9150620015118362000ecc565b92508282019050808211156200152c576200152b62001264565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200156a60208362001107565b9150620015778262001532565b602082019050919050565b600060208201905081810360008301526200159d816200155b565b9050919050565b60008115159050919050565b620015bb81620015a4565b82525050565b6000602082019050620015d86000830184620015b0565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001616601f8362001107565b91506200162382620015de565b602082019050919050565b60006020820190508181036000830152620016498162001607565b9050919050565b6200165b8162000ecc565b82525050565b600060208201905062001678600083018462001650565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620016dc60248362001107565b9150620016e9826200167e565b604082019050919050565b600060208201905081810360008301526200170f81620016cd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200177460228362001107565b9150620017818262001716565b604082019050919050565b60006020820190508181036000830152620017a78162001765565b9050919050565b60805160a051615fe162001805600039600081816114de01528181611d7b015281816134ae015281816141fe0152614225015260008181610f67015281816134570152818161437c01526144590152615fe16000f3fe6080604052600436106103855760003560e01c80639a36f932116101d1578063c876d0b911610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610d23578063f8b45b0514610d4c578063fb002c9714610d77578063fd72e22a14610da25761038c565b8063e2f4560514610c77578063e884f26014610ca2578063ee40166e14610ccd578063efcc1b2f14610cf85761038c565b8063d0a39814116100dc578063d0a3981414610bbd578063d495664614610be8578063dbfac98614610c11578063dd62ed3e14610c3a5761038c565b8063c876d0b914610b3c578063c8c8ebe414610b67578063ccb6135814610b925761038c565b8063b1db3bd91161016f578063bbc0c74211610149578063bbc0c74214610a96578063c024666814610ac1578063c18bc19514610aea578063c492f04614610b135761038c565b8063b1db3bd914610a05578063b62496f514610a2e578063b9e9370014610a6b5761038c565b8063a50b4f3b116101ab578063a50b4f3b1461094b578063a59eaafb14610962578063a9059cbb1461098b578063abb81052146109c85761038c565b80639a36f932146108ba5780639a7a23d6146108e5578063a457c2d71461090e5761038c565b806339509351116102b6578063715018a61161025457806382aa7c681161022357806382aa7c68146108125780638da5cb5b1461083b578063924de9b71461086657806395d89b411461088f5761038c565b8063715018a61461077c5780637506cbd814610793578063751039fc146107be5780637571336a146107e95761038c565b80634fbee193116102905780634fbee193146106ae57806366ca9b83146106eb5780636ddd17131461071457806370a082311461073f5761038c565b8063395093511461061b578063452ed4f1146106585780634a62bb65146106835761038c565b806310d5de53116103235780631fc851bd116102fd5780631fc851bd1461055f57806323b872dd1461058a57806330d5d18d146105c7578063313ce567146105f05761038c565b806310d5de53146104cc57806318160ddd146105095780631a8145bb146105345761038c565b8063095ea7b31161035f578063095ea7b314610410578063099d0d301461044d5780630f4432e314610478578063106b5da1146104a35761038c565b806302dbd8f81461039157806306fdde03146103ba5780630758d924146103e55761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103b860048036038101906103b39190614599565b610dcd565b005b3480156103c657600080fd5b506103cf610ed3565b6040516103dc9190614669565b60405180910390f35b3480156103f157600080fd5b506103fa610f65565b604051610407919061470a565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190614763565b610f89565b60405161044491906147be565b60405180910390f35b34801561045957600080fd5b50610462610fa7565b60405161046f91906147e8565b60405180910390f35b34801561048457600080fd5b5061048d610fad565b60405161049a91906147e8565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190614803565b610fb3565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190614830565b6110f2565b60405161050091906147be565b60405180910390f35b34801561051557600080fd5b5061051e611112565b60405161052b91906147e8565b60405180910390f35b34801561054057600080fd5b5061054961111c565b60405161055691906147e8565b60405180910390f35b34801561056b57600080fd5b50610574611122565b60405161058191906147e8565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac919061485d565b611128565b6040516105be91906147be565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190614830565b611248565b005b3480156105fc57600080fd5b50610605611419565b60405161061291906148cc565b60405180910390f35b34801561062757600080fd5b50610642600480360381019061063d9190614763565b611430565b60405161064f91906147be565b60405180910390f35b34801561066457600080fd5b5061066d6114dc565b60405161067a91906148f6565b60405180910390f35b34801561068f57600080fd5b50610698611500565b6040516106a591906147be565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190614830565b611513565b6040516106e291906147be565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190614599565b611569565b005b34801561072057600080fd5b5061072961166f565b60405161073691906147be565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190614830565b611682565b60405161077391906147e8565b60405180910390f35b34801561078857600080fd5b506107916116ca565b005b34801561079f57600080fd5b506107a8611822565b6040516107b591906147e8565b60405180910390f35b3480156107ca57600080fd5b506107d3611828565b6040516107e091906147be565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b919061493d565b6118fe565b005b34801561081e57600080fd5b5061083960048036038101906108349190614803565b611a3e565b005b34801561084757600080fd5b50610850611b6c565b60405161085d91906148f6565b60405180910390f35b34801561087257600080fd5b5061088d6004803603810190610888919061497d565b611b96565b005b34801561089b57600080fd5b506108a4611c4a565b6040516108b19190614669565b60405180910390f35b3480156108c657600080fd5b506108cf611cdc565b6040516108dc91906147e8565b60405180910390f35b3480156108f157600080fd5b5061090c6004803603810190610907919061493d565b611ce2565b005b34801561091a57600080fd5b5061093560048036038101906109309190614763565b611e15565b60405161094291906147be565b60405180910390f35b34801561095757600080fd5b50610960611f00565b005b34801561096e57600080fd5b5061098960048036038101906109849190614599565b612139565b005b34801561099757600080fd5b506109b260048036038101906109ad9190614763565b61223f565b6040516109bf91906147be565b60405180910390f35b3480156109d457600080fd5b506109ef60048036038101906109ea9190614830565b61225d565b6040516109fc91906147be565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a279190614af2565b61227d565b005b348015610a3a57600080fd5b50610a556004803603810190610a509190614830565b6123a9565b604051610a6291906147be565b60405180910390f35b348015610a7757600080fd5b50610a806123c9565b604051610a8d91906147e8565b60405180910390f35b348015610aa257600080fd5b50610aab6123cf565b604051610ab891906147be565b60405180910390f35b348015610acd57600080fd5b50610ae86004803603810190610ae3919061493d565b6123e2565b005b348015610af657600080fd5b50610b116004803603810190610b0c9190614803565b612522565b005b348015610b1f57600080fd5b50610b3a6004803603810190610b359190614b96565b612660565b005b348015610b4857600080fd5b50610b516127d7565b604051610b5e91906147be565b60405180910390f35b348015610b7357600080fd5b50610b7c6127ea565b604051610b8991906147e8565b60405180910390f35b348015610b9e57600080fd5b50610ba76127f0565b604051610bb491906147e8565b60405180910390f35b348015610bc957600080fd5b50610bd26127f6565b604051610bdf91906147e8565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190614af2565b6127fc565b005b348015610c1d57600080fd5b50610c386004803603810190610c339190614cb9565b612928565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190614d31565b612aab565b604051610c6e91906147e8565b60405180910390f35b348015610c8357600080fd5b50610c8c612b32565b604051610c9991906147e8565b60405180910390f35b348015610cae57600080fd5b50610cb7612b38565b604051610cc491906147be565b60405180910390f35b348015610cd957600080fd5b50610ce2612bf3565b604051610cef91906147e8565b60405180910390f35b348015610d0457600080fd5b50610d0d612bf9565b604051610d1a91906147e8565b60405180910390f35b348015610d2f57600080fd5b50610d4a6004803603810190610d459190614830565b612bff565b005b348015610d5857600080fd5b50610d61612dc5565b604051610d6e91906147e8565b60405180910390f35b348015610d8357600080fd5b50610d8c612dcb565b604051610d9991906147e8565b60405180910390f35b348015610dae57600080fd5b50610db7612dd1565b604051610dc491906148f6565b60405180910390f35b610dd5612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90614dbd565b60405180910390fd5b8160118190555080601281905550601254601154610e829190614e0c565b6010819055506127106010541115610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690614e8c565b60405180910390fd5b5050565b606060038054610ee290614edb565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0e90614edb565b8015610f5b5780601f10610f3057610100808354040283529160200191610f5b565b820191906000526020600020905b815481529060010190602001808311610f3e57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f9d610f96612df7565b8484612dff565b6001905092915050565b60125481565b600a5481565b610fbb612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190614dbd565b60405180910390fd5b611052611419565b600a61105e919061503f565b6103e8600161106b611112565b611075919061508a565b61107f91906150fb565b61108991906150fb565b81116110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c19061519e565b60405180910390fd5b6110d2611419565b600a6110de919061503f565b816110e9919061508a565b60078190555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60175481565b600c5481565b6000611135848484612fc8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611180612df7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461123c5782811015611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90615230565b60405180910390fd5b61123b85611233612df7565b858403612dff565b5b60019150509392505050565b611250612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690614dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361134e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113459061529c565b60405180910390fd5b6113598160016123e2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f860405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006114d261143d612df7565b84846001600061144b612df7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114cd9190614e0c565b612dff565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611571612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790614dbd565b60405180910390fd5b816014819055508060158190555060155460145461161e9190614e0c565b601381905550612710601354111561166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166290614e8c565b60405180910390fd5b5050565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116d2612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175890614dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b6000611832612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b890614dbd565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055506001905090565b611906612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90614dbd565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9582604051611a3291906147be565b60405180910390a25050565b611a46612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90614dbd565b60405180910390fd5b600d60019054906101000a900460ff1615611b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1c90615308565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043600b8190555080601a8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b9e612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490614dbd565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b606060048054611c5990614edb565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8590614edb565b8015611cd25780601f10611ca757610100808354040283529160200191611cd2565b820191906000526020600020905b815481529060010190602001808311611cb557829003601f168201915b5050505050905090565b61271081565b611cea612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090614dbd565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe906153c0565b60405180910390fd5b611e118282613e80565b5050565b60008060016000611e24612df7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed890615452565b60405180910390fd5b611ef5611eec612df7565b85858403612dff565b600191505092915050565b611f08612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8e90614dbd565b60405180910390fd5b600060198054905011611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd6906154be565b60405180910390fd5b60005b60198054905081101561212857601b600060198381548110612007576120066154de565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612115576001601b600060198481548110612098576120976154de565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806121209061550d565b915050611fe2565b50601960006121379190614511565b565b612141612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c790614dbd565b60405180910390fd5b81601181905550806012819055506012546011546121ee9190614e0c565b601081905550612710601054111561223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290614e8c565b60405180910390fd5b5050565b600061225361224c612df7565b8484612fc8565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b612285612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b90614dbd565b60405180910390fd5b60005b81518110156123a5576001601b6000848481518110612339576123386154de565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061239d9061550d565b915050612317565b5050565b601d6020528060005260406000206000915054906101000a900460ff1681565b60135481565b600d60019054906101000a900460ff1681565b6123ea612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090614dbd565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161251691906147be565b60405180910390a25050565b61252a612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b090614dbd565b60405180910390fd5b6125c1611419565b600a6125cd919061503f565b606460016125d9611112565b6125e3919061508a565b6125ed91906150fb565b6125f791906150fb565b8111612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f906155c7565b60405180910390fd5b612640611419565b600a61264c919061503f565b81612657919061508a565b60098190555050565b612668612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90614dbd565b60405180910390fd5b60005b8383905081101561279657816018600086868581811061271d5761271c6154de565b5b90506020020160208101906127329190614830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061278e9061550d565b9150506126fa565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516127ca939291906156aa565b60405180910390a1505050565b600f60009054906101000a900460ff1681565b60075481565b60155481565b60105481565b612804612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90614dbd565b60405180910390fd5b60005b8151811015612924576000601b60008484815181106128b8576128b76154de565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061291c9061550d565b915050612896565b5050565b612930612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b690614dbd565b60405180910390fd5b8051825114612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa90615728565b60405180910390fd5b610258825110612a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3f906157ba565b60405180910390fd5b60005b8251811015612aa657612a9333848381518110612a6b57612a6a6154de565b5b6020026020010151848481518110612a8657612a856154de565b5b6020026020010151613f2b565b8080612a9e9061550d565b915050612a4b565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6000612b42612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc890614dbd565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b600b5481565b60145481565b612c07612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8d90614dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfc9061584c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60165481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e65906158de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed490615970565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612fbb91906147e8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302e90615a02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309d90615a94565b60405180910390fd5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561314a5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318090615b00565b60405180910390fd5b600081036131a25761319d83836000613f2b565b613e7b565b600d60019054906101000a900460ff1661329757601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132575750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328d90615b6c565b60405180910390fd5b5b600d60009054906101000a900460ff1615613876576132b4611b6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561332257506132f2611b6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561335b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613395575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133ae5750600560159054906101000a900460ff16155b1561387557600f60009054906101000a900460ff161561358c57436005600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134159190614e0c565b10613455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344c90615bd8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134fd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561358b5743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362f5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136d657600754811115613679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367090615c6a565b60405180910390fd5b60095461368583611682565b826136909190614e0c565b11156136d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c890615cd6565b60405180910390fd5b613874565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137795750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137c8576007548111156137c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ba90615d68565b60405180910390fd5b613873565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138725760095461382583611682565b826138309190614e0c565b1115613871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386890615cd6565b60405180910390fd5b5b5b5b5b5b600061388130611682565b9050600060085482101590508080156138a65750600d60029054906101000a900460ff165b80156138bf5750600560159054906101000a900460ff16155b80156139155750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561396b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139c15750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a05576001600560156101000a81548160ff0219169083151502179055506139e9614194565b6000600560156101000a81548160ff0219169083151502179055505b6000600560159054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613abb5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ac557600090505b60008115613e6b5743601a54600b54613ade9190614e0c565b10158015613b895750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b885750601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15613c795761271060135486613b9f919061508a565b613ba991906150fb565b905060135460155482613bbc919061508a565b613bc691906150fb565b60176000828254613bd79190614e0c565b9250508190555060135460145482613bef919061508a565b613bf991906150fb565b60166000828254613c0a9190614e0c565b925050819055506019869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613e47565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613cd457506000601054115b15613d615761271060105486613cea919061508a565b613cf491906150fb565b905060105460125482613d07919061508a565b613d1191906150fb565b60176000828254613d229190614e0c565b9250508190555060105460115482613d3a919061508a565b613d4491906150fb565b60166000828254613d559190614e0c565b92505081905550613e46565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613dbc57506000601354115b15613e455761271060135486613dd2919061508a565b613ddc91906150fb565b905060135460155482613def919061508a565b613df991906150fb565b60176000828254613e0a9190614e0c565b9250508190555060135460145482613e22919061508a565b613e2c91906150fb565b60166000828254613e3d9190614e0c565b925050819055505b5b5b6000811115613e5c57613e5b873083613f2b565b5b8085613e689190615d88565b94505b613e76878787613f2b565b505050505b505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613ee182826118fe565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f9190615a02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161400090615a94565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561408f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161408690615e2e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141229190614e0c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161418691906147e8565b60405180910390a350505050565b600061419f30611682565b905060006016546017546141b39190614e0c565b905060008214806141c45750600081145b156141d05750506142db565b600060175411156142c557600081601754846141ec919061508a565b6141f691906150fb565b9050614223307f000000000000000000000000000000000000000000000000000000000000000083613f2b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561428b57600080fd5b505af192505050801561429c575060015b5080836142a99190615d88565b9250601754826142b99190615d88565b91506000601781905550505b60008211156142d8576142d7826142dd565b5b50505b565b6000600267ffffffffffffffff8111156142fa576142f96149af565b5b6040519080825280602002602001820160405280156143285781602001602082028036833780820191505090505b50905030816000815181106143405761433f6154de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144099190615e63565b8160018151811061441d5761441c6154de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016144db959493929190615f51565b600060405180830381600087803b1580156144f557600080fd5b505af1158015614509573d6000803e3d6000fd5b505050505050565b508054600082559060005260206000209081019061452f9190614532565b50565b5b8082111561454b576000816000905550600101614533565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61457681614563565b811461458157600080fd5b50565b6000813590506145938161456d565b92915050565b600080604083850312156145b0576145af614559565b5b60006145be85828601614584565b92505060206145cf85828601614584565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146135780820151818401526020810190506145f8565b60008484015250505050565b6000601f19601f8301169050919050565b600061463b826145d9565b61464581856145e4565b93506146558185602086016145f5565b61465e8161461f565b840191505092915050565b600060208201905081810360008301526146838184614630565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006146d06146cb6146c68461468b565b6146ab565b61468b565b9050919050565b60006146e2826146b5565b9050919050565b60006146f4826146d7565b9050919050565b614704816146e9565b82525050565b600060208201905061471f60008301846146fb565b92915050565b60006147308261468b565b9050919050565b61474081614725565b811461474b57600080fd5b50565b60008135905061475d81614737565b92915050565b6000806040838503121561477a57614779614559565b5b60006147888582860161474e565b925050602061479985828601614584565b9150509250929050565b60008115159050919050565b6147b8816147a3565b82525050565b60006020820190506147d360008301846147af565b92915050565b6147e281614563565b82525050565b60006020820190506147fd60008301846147d9565b92915050565b60006020828403121561481957614818614559565b5b600061482784828501614584565b91505092915050565b60006020828403121561484657614845614559565b5b60006148548482850161474e565b91505092915050565b60008060006060848603121561487657614875614559565b5b60006148848682870161474e565b93505060206148958682870161474e565b92505060406148a686828701614584565b9150509250925092565b600060ff82169050919050565b6148c6816148b0565b82525050565b60006020820190506148e160008301846148bd565b92915050565b6148f081614725565b82525050565b600060208201905061490b60008301846148e7565b92915050565b61491a816147a3565b811461492557600080fd5b50565b60008135905061493781614911565b92915050565b6000806040838503121561495457614953614559565b5b60006149628582860161474e565b925050602061497385828601614928565b9150509250929050565b60006020828403121561499357614992614559565b5b60006149a184828501614928565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6149e78261461f565b810181811067ffffffffffffffff82111715614a0657614a056149af565b5b80604052505050565b6000614a1961454f565b9050614a2582826149de565b919050565b600067ffffffffffffffff821115614a4557614a446149af565b5b602082029050602081019050919050565b600080fd5b6000614a6e614a6984614a2a565b614a0f565b90508083825260208201905060208402830185811115614a9157614a90614a56565b5b835b81811015614aba5780614aa6888261474e565b845260208401935050602081019050614a93565b5050509392505050565b600082601f830112614ad957614ad86149aa565b5b8135614ae9848260208601614a5b565b91505092915050565b600060208284031215614b0857614b07614559565b5b600082013567ffffffffffffffff811115614b2657614b2561455e565b5b614b3284828501614ac4565b91505092915050565b600080fd5b60008083601f840112614b5657614b556149aa565b5b8235905067ffffffffffffffff811115614b7357614b72614b3b565b5b602083019150836020820283011115614b8f57614b8e614a56565b5b9250929050565b600080600060408486031215614baf57614bae614559565b5b600084013567ffffffffffffffff811115614bcd57614bcc61455e565b5b614bd986828701614b40565b93509350506020614bec86828701614928565b9150509250925092565b600067ffffffffffffffff821115614c1157614c106149af565b5b602082029050602081019050919050565b6000614c35614c3084614bf6565b614a0f565b90508083825260208201905060208402830185811115614c5857614c57614a56565b5b835b81811015614c815780614c6d8882614584565b845260208401935050602081019050614c5a565b5050509392505050565b600082601f830112614ca057614c9f6149aa565b5b8135614cb0848260208601614c22565b91505092915050565b60008060408385031215614cd057614ccf614559565b5b600083013567ffffffffffffffff811115614cee57614ced61455e565b5b614cfa85828601614ac4565b925050602083013567ffffffffffffffff811115614d1b57614d1a61455e565b5b614d2785828601614c8b565b9150509250929050565b60008060408385031215614d4857614d47614559565b5b6000614d568582860161474e565b9250506020614d678582860161474e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614da76020836145e4565b9150614db282614d71565b602082019050919050565b60006020820190508181036000830152614dd681614d9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e1782614563565b9150614e2283614563565b9250828201905080821115614e3a57614e39614ddd565b5b92915050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000614e76601e836145e4565b9150614e8182614e40565b602082019050919050565b60006020820190508181036000830152614ea581614e69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ef357607f821691505b602082108103614f0657614f05614eac565b5b50919050565b60008160011c9050919050565b6000808291508390505b6001851115614f6357808604811115614f3f57614f3e614ddd565b5b6001851615614f4e5780820291505b8081029050614f5c85614f0c565b9450614f23565b94509492505050565b600082614f7c5760019050615038565b81614f8a5760009050615038565b8160018114614fa05760028114614faa57614fd9565b6001915050615038565b60ff841115614fbc57614fbb614ddd565b5b8360020a915084821115614fd357614fd2614ddd565b5b50615038565b5060208310610133831016604e8410600b841016171561500e5782820a90508381111561500957615008614ddd565b5b615038565b61501b8484846001614f19565b9250905081840481111561503257615031614ddd565b5b81810290505b9392505050565b600061504a82614563565b9150615055836148b0565b92506150827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614f6c565b905092915050565b600061509582614563565b91506150a083614563565b92508282026150ae81614563565b915082820484148315176150c5576150c4614ddd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061510682614563565b915061511183614563565b925082615121576151206150cc565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000615188602f836145e4565b91506151938261512c565b604082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061521a6028836145e4565b9150615225826151be565b604082019050919050565b600060208201905081810360008301526152498161520d565b9050919050565b7f6d6179206e6f742073657420746f203020616464726573730000000000000000600082015250565b60006152866018836145e4565b915061529182615250565b602082019050919050565b600060208201905081810360008301526152b581615279565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b60006152f26018836145e4565b91506152fd826152bc565b602082019050919050565b60006020820190508181036000830152615321816152e5565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b60006153aa6045836145e4565b91506153b582615328565b606082019050919050565b600060208201905081810360008301526153d98161539d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061543c6025836145e4565b9150615447826153e0565b604082019050919050565b6000602082019050818103600083015261546b8161542f565b9050919050565b7f4e6f20626f747320746f20626c6f636b00000000000000000000000000000000600082015250565b60006154a86010836145e4565b91506154b382615472565b602082019050919050565b600060208201905081810360008301526154d78161549b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061551882614563565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361554a57615549614ddd565b5b600182019050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006155b16022836145e4565b91506155bc82615555565b604082019050919050565b600060208201905081810360008301526155e0816155a4565b9050919050565b600082825260208201905092915050565b6000819050919050565b61560b81614725565b82525050565b600061561d8383615602565b60208301905092915050565b6000615638602084018461474e565b905092915050565b6000602082019050919050565b600061565983856155e7565b9350615664826155f8565b8060005b8581101561569d5761567a8284615629565b6156848882615611565b975061568f83615640565b925050600181019050615668565b5085925050509392505050565b600060408201905081810360008301526156c581858761564d565b90506156d460208301846147af565b949350505050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000615712601e836145e4565b915061571d826156dc565b602082019050919050565b6000602082019050818103600083015261574181615705565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b60006157a46036836145e4565b91506157af82615748565b604082019050919050565b600060208201905081810360008301526157d381615797565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006158366026836145e4565b9150615841826157da565b604082019050919050565b6000602082019050818103600083015261586581615829565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006158c86024836145e4565b91506158d38261586c565b604082019050919050565b600060208201905081810360008301526158f7816158bb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061595a6022836145e4565b9150615965826158fe565b604082019050919050565b600060208201905081810360008301526159898161594d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006159ec6025836145e4565b91506159f782615990565b604082019050919050565b60006020820190508181036000830152615a1b816159df565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615a7e6023836145e4565b9150615a8982615a22565b604082019050919050565b60006020820190508181036000830152615aad81615a71565b9050919050565b7f4e6f20626f747300000000000000000000000000000000000000000000000000600082015250565b6000615aea6007836145e4565b9150615af582615ab4565b602082019050919050565b60006020820190508181036000830152615b1981615add565b9050919050565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b6000615b56601a836145e4565b9150615b6182615b20565b602082019050919050565b60006020820190508181036000830152615b8581615b49565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e000000000000000000600082015250565b6000615bc26017836145e4565b9150615bcd82615b8c565b602082019050919050565b60006020820190508181036000830152615bf181615bb5565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615c546035836145e4565b9150615c5f82615bf8565b604082019050919050565b60006020820190508181036000830152615c8381615c47565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000615cc0601b836145e4565b9150615ccb82615c8a565b602082019050919050565b60006020820190508181036000830152615cef81615cb3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615d526036836145e4565b9150615d5d82615cf6565b604082019050919050565b60006020820190508181036000830152615d8181615d45565b9050919050565b6000615d9382614563565b9150615d9e83614563565b9250828203905081811115615db657615db5614ddd565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615e186026836145e4565b9150615e2382615dbc565b604082019050919050565b60006020820190508181036000830152615e4781615e0b565b9050919050565b600081519050615e5d81614737565b92915050565b600060208284031215615e7957615e78614559565b5b6000615e8784828501615e4e565b91505092915050565b6000819050919050565b6000615eb5615eb0615eab84615e90565b6146ab565b614563565b9050919050565b615ec581615e9a565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000615efe82615ecb565b615f0881856155e7565b9350615f1383615ed6565b8060005b83811015615f44578151615f2b8882615611565b9750615f3683615ee6565b925050600181019050615f17565b5085935050505092915050565b600060a082019050615f6660008301886147d9565b615f736020830187615ebc565b8181036040830152615f858186615ef3565b9050615f9460608301856148e7565b615fa160808301846147d9565b969550505050505056fea2646970667358221220de9d0e30390bc5380c68f6cd338492604bf8c8f2e6a5fcc7f841b6612bc3449064736f6c63430008130033
Deployed Bytecode
0x6080604052600436106103855760003560e01c80639a36f932116101d1578063c876d0b911610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610d23578063f8b45b0514610d4c578063fb002c9714610d77578063fd72e22a14610da25761038c565b8063e2f4560514610c77578063e884f26014610ca2578063ee40166e14610ccd578063efcc1b2f14610cf85761038c565b8063d0a39814116100dc578063d0a3981414610bbd578063d495664614610be8578063dbfac98614610c11578063dd62ed3e14610c3a5761038c565b8063c876d0b914610b3c578063c8c8ebe414610b67578063ccb6135814610b925761038c565b8063b1db3bd91161016f578063bbc0c74211610149578063bbc0c74214610a96578063c024666814610ac1578063c18bc19514610aea578063c492f04614610b135761038c565b8063b1db3bd914610a05578063b62496f514610a2e578063b9e9370014610a6b5761038c565b8063a50b4f3b116101ab578063a50b4f3b1461094b578063a59eaafb14610962578063a9059cbb1461098b578063abb81052146109c85761038c565b80639a36f932146108ba5780639a7a23d6146108e5578063a457c2d71461090e5761038c565b806339509351116102b6578063715018a61161025457806382aa7c681161022357806382aa7c68146108125780638da5cb5b1461083b578063924de9b71461086657806395d89b411461088f5761038c565b8063715018a61461077c5780637506cbd814610793578063751039fc146107be5780637571336a146107e95761038c565b80634fbee193116102905780634fbee193146106ae57806366ca9b83146106eb5780636ddd17131461071457806370a082311461073f5761038c565b8063395093511461061b578063452ed4f1146106585780634a62bb65146106835761038c565b806310d5de53116103235780631fc851bd116102fd5780631fc851bd1461055f57806323b872dd1461058a57806330d5d18d146105c7578063313ce567146105f05761038c565b806310d5de53146104cc57806318160ddd146105095780631a8145bb146105345761038c565b8063095ea7b31161035f578063095ea7b314610410578063099d0d301461044d5780630f4432e314610478578063106b5da1146104a35761038c565b806302dbd8f81461039157806306fdde03146103ba5780630758d924146103e55761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103b860048036038101906103b39190614599565b610dcd565b005b3480156103c657600080fd5b506103cf610ed3565b6040516103dc9190614669565b60405180910390f35b3480156103f157600080fd5b506103fa610f65565b604051610407919061470a565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190614763565b610f89565b60405161044491906147be565b60405180910390f35b34801561045957600080fd5b50610462610fa7565b60405161046f91906147e8565b60405180910390f35b34801561048457600080fd5b5061048d610fad565b60405161049a91906147e8565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190614803565b610fb3565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190614830565b6110f2565b60405161050091906147be565b60405180910390f35b34801561051557600080fd5b5061051e611112565b60405161052b91906147e8565b60405180910390f35b34801561054057600080fd5b5061054961111c565b60405161055691906147e8565b60405180910390f35b34801561056b57600080fd5b50610574611122565b60405161058191906147e8565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac919061485d565b611128565b6040516105be91906147be565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190614830565b611248565b005b3480156105fc57600080fd5b50610605611419565b60405161061291906148cc565b60405180910390f35b34801561062757600080fd5b50610642600480360381019061063d9190614763565b611430565b60405161064f91906147be565b60405180910390f35b34801561066457600080fd5b5061066d6114dc565b60405161067a91906148f6565b60405180910390f35b34801561068f57600080fd5b50610698611500565b6040516106a591906147be565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190614830565b611513565b6040516106e291906147be565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190614599565b611569565b005b34801561072057600080fd5b5061072961166f565b60405161073691906147be565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190614830565b611682565b60405161077391906147e8565b60405180910390f35b34801561078857600080fd5b506107916116ca565b005b34801561079f57600080fd5b506107a8611822565b6040516107b591906147e8565b60405180910390f35b3480156107ca57600080fd5b506107d3611828565b6040516107e091906147be565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b919061493d565b6118fe565b005b34801561081e57600080fd5b5061083960048036038101906108349190614803565b611a3e565b005b34801561084757600080fd5b50610850611b6c565b60405161085d91906148f6565b60405180910390f35b34801561087257600080fd5b5061088d6004803603810190610888919061497d565b611b96565b005b34801561089b57600080fd5b506108a4611c4a565b6040516108b19190614669565b60405180910390f35b3480156108c657600080fd5b506108cf611cdc565b6040516108dc91906147e8565b60405180910390f35b3480156108f157600080fd5b5061090c6004803603810190610907919061493d565b611ce2565b005b34801561091a57600080fd5b5061093560048036038101906109309190614763565b611e15565b60405161094291906147be565b60405180910390f35b34801561095757600080fd5b50610960611f00565b005b34801561096e57600080fd5b5061098960048036038101906109849190614599565b612139565b005b34801561099757600080fd5b506109b260048036038101906109ad9190614763565b61223f565b6040516109bf91906147be565b60405180910390f35b3480156109d457600080fd5b506109ef60048036038101906109ea9190614830565b61225d565b6040516109fc91906147be565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a279190614af2565b61227d565b005b348015610a3a57600080fd5b50610a556004803603810190610a509190614830565b6123a9565b604051610a6291906147be565b60405180910390f35b348015610a7757600080fd5b50610a806123c9565b604051610a8d91906147e8565b60405180910390f35b348015610aa257600080fd5b50610aab6123cf565b604051610ab891906147be565b60405180910390f35b348015610acd57600080fd5b50610ae86004803603810190610ae3919061493d565b6123e2565b005b348015610af657600080fd5b50610b116004803603810190610b0c9190614803565b612522565b005b348015610b1f57600080fd5b50610b3a6004803603810190610b359190614b96565b612660565b005b348015610b4857600080fd5b50610b516127d7565b604051610b5e91906147be565b60405180910390f35b348015610b7357600080fd5b50610b7c6127ea565b604051610b8991906147e8565b60405180910390f35b348015610b9e57600080fd5b50610ba76127f0565b604051610bb491906147e8565b60405180910390f35b348015610bc957600080fd5b50610bd26127f6565b604051610bdf91906147e8565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190614af2565b6127fc565b005b348015610c1d57600080fd5b50610c386004803603810190610c339190614cb9565b612928565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190614d31565b612aab565b604051610c6e91906147e8565b60405180910390f35b348015610c8357600080fd5b50610c8c612b32565b604051610c9991906147e8565b60405180910390f35b348015610cae57600080fd5b50610cb7612b38565b604051610cc491906147be565b60405180910390f35b348015610cd957600080fd5b50610ce2612bf3565b604051610cef91906147e8565b60405180910390f35b348015610d0457600080fd5b50610d0d612bf9565b604051610d1a91906147e8565b60405180910390f35b348015610d2f57600080fd5b50610d4a6004803603810190610d459190614830565b612bff565b005b348015610d5857600080fd5b50610d61612dc5565b604051610d6e91906147e8565b60405180910390f35b348015610d8357600080fd5b50610d8c612dcb565b604051610d9991906147e8565b60405180910390f35b348015610dae57600080fd5b50610db7612dd1565b604051610dc491906148f6565b60405180910390f35b610dd5612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90614dbd565b60405180910390fd5b8160118190555080601281905550601254601154610e829190614e0c565b6010819055506127106010541115610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690614e8c565b60405180910390fd5b5050565b606060038054610ee290614edb565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0e90614edb565b8015610f5b5780601f10610f3057610100808354040283529160200191610f5b565b820191906000526020600020905b815481529060010190602001808311610f3e57829003601f168201915b5050505050905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000610f9d610f96612df7565b8484612dff565b6001905092915050565b60125481565b600a5481565b610fbb612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190614dbd565b60405180910390fd5b611052611419565b600a61105e919061503f565b6103e8600161106b611112565b611075919061508a565b61107f91906150fb565b61108991906150fb565b81116110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c19061519e565b60405180910390fd5b6110d2611419565b600a6110de919061503f565b816110e9919061508a565b60078190555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60175481565b600c5481565b6000611135848484612fc8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611180612df7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461123c5782811015611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90615230565b60405180910390fd5b61123b85611233612df7565b858403612dff565b5b60019150509392505050565b611250612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690614dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361134e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113459061529c565b60405180910390fd5b6113598160016123e2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f860405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006114d261143d612df7565b84846001600061144b612df7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114cd9190614e0c565b612dff565b6001905092915050565b7f0000000000000000000000007a66268424dccf1ff2bcd8d1faf68dd9b59c907681565b600d60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611571612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790614dbd565b60405180910390fd5b816014819055508060158190555060155460145461161e9190614e0c565b601381905550612710601354111561166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166290614e8c565b60405180910390fd5b5050565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116d2612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175890614dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b6000611832612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b890614dbd565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055506001905090565b611906612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90614dbd565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9582604051611a3291906147be565b60405180910390a25050565b611a46612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90614dbd565b60405180910390fd5b600d60019054906101000a900460ff1615611b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1c90615308565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043600b8190555080601a8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b9e612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490614dbd565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b606060048054611c5990614edb565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8590614edb565b8015611cd25780601f10611ca757610100808354040283529160200191611cd2565b820191906000526020600020905b815481529060010190602001808311611cb557829003601f168201915b5050505050905090565b61271081565b611cea612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090614dbd565b60405180910390fd5b7f0000000000000000000000007a66268424dccf1ff2bcd8d1faf68dd9b59c907673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe906153c0565b60405180910390fd5b611e118282613e80565b5050565b60008060016000611e24612df7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed890615452565b60405180910390fd5b611ef5611eec612df7565b85858403612dff565b600191505092915050565b611f08612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8e90614dbd565b60405180910390fd5b600060198054905011611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd6906154be565b60405180910390fd5b60005b60198054905081101561212857601b600060198381548110612007576120066154de565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612115576001601b600060198481548110612098576120976154de565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806121209061550d565b915050611fe2565b50601960006121379190614511565b565b612141612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c790614dbd565b60405180910390fd5b81601181905550806012819055506012546011546121ee9190614e0c565b601081905550612710601054111561223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290614e8c565b60405180910390fd5b5050565b600061225361224c612df7565b8484612fc8565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b612285612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b90614dbd565b60405180910390fd5b60005b81518110156123a5576001601b6000848481518110612339576123386154de565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061239d9061550d565b915050612317565b5050565b601d6020528060005260406000206000915054906101000a900460ff1681565b60135481565b600d60019054906101000a900460ff1681565b6123ea612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090614dbd565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161251691906147be565b60405180910390a25050565b61252a612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b090614dbd565b60405180910390fd5b6125c1611419565b600a6125cd919061503f565b606460016125d9611112565b6125e3919061508a565b6125ed91906150fb565b6125f791906150fb565b8111612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f906155c7565b60405180910390fd5b612640611419565b600a61264c919061503f565b81612657919061508a565b60098190555050565b612668612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90614dbd565b60405180910390fd5b60005b8383905081101561279657816018600086868581811061271d5761271c6154de565b5b90506020020160208101906127329190614830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061278e9061550d565b9150506126fa565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516127ca939291906156aa565b60405180910390a1505050565b600f60009054906101000a900460ff1681565b60075481565b60155481565b60105481565b612804612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90614dbd565b60405180910390fd5b60005b8151811015612924576000601b60008484815181106128b8576128b76154de565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061291c9061550d565b915050612896565b5050565b612930612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b690614dbd565b60405180910390fd5b8051825114612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa90615728565b60405180910390fd5b610258825110612a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3f906157ba565b60405180910390fd5b60005b8251811015612aa657612a9333848381518110612a6b57612a6a6154de565b5b6020026020010151848481518110612a8657612a856154de565b5b6020026020010151613f2b565b8080612a9e9061550d565b915050612a4b565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6000612b42612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc890614dbd565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b600b5481565b60145481565b612c07612df7565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8d90614dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfc9061584c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60165481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e65906158de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed490615970565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612fbb91906147e8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302e90615a02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309d90615a94565b60405180910390fd5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561314a5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318090615b00565b60405180910390fd5b600081036131a25761319d83836000613f2b565b613e7b565b600d60019054906101000a900460ff1661329757601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132575750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328d90615b6c565b60405180910390fd5b5b600d60009054906101000a900460ff1615613876576132b4611b6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561332257506132f2611b6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561335b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613395575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133ae5750600560159054906101000a900460ff16155b1561387557600f60009054906101000a900460ff161561358c57436005600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134159190614e0c565b10613455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344c90615bd8565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134fd57507f0000000000000000000000007a66268424dccf1ff2bcd8d1faf68dd9b59c907673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561358b5743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362f5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136d657600754811115613679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367090615c6a565b60405180910390fd5b60095461368583611682565b826136909190614e0c565b11156136d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c890615cd6565b60405180910390fd5b613874565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137795750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137c8576007548111156137c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ba90615d68565b60405180910390fd5b613873565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138725760095461382583611682565b826138309190614e0c565b1115613871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386890615cd6565b60405180910390fd5b5b5b5b5b5b600061388130611682565b9050600060085482101590508080156138a65750600d60029054906101000a900460ff165b80156138bf5750600560159054906101000a900460ff16155b80156139155750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561396b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139c15750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a05576001600560156101000a81548160ff0219169083151502179055506139e9614194565b6000600560156101000a81548160ff0219169083151502179055505b6000600560159054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613abb5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ac557600090505b60008115613e6b5743601a54600b54613ade9190614e0c565b10158015613b895750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b885750601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15613c795761271060135486613b9f919061508a565b613ba991906150fb565b905060135460155482613bbc919061508a565b613bc691906150fb565b60176000828254613bd79190614e0c565b9250508190555060135460145482613bef919061508a565b613bf991906150fb565b60166000828254613c0a9190614e0c565b925050819055506019869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613e47565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613cd457506000601054115b15613d615761271060105486613cea919061508a565b613cf491906150fb565b905060105460125482613d07919061508a565b613d1191906150fb565b60176000828254613d229190614e0c565b9250508190555060105460115482613d3a919061508a565b613d4491906150fb565b60166000828254613d559190614e0c565b92505081905550613e46565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613dbc57506000601354115b15613e455761271060135486613dd2919061508a565b613ddc91906150fb565b905060135460155482613def919061508a565b613df991906150fb565b60176000828254613e0a9190614e0c565b9250508190555060135460145482613e22919061508a565b613e2c91906150fb565b60166000828254613e3d9190614e0c565b925050819055505b5b5b6000811115613e5c57613e5b873083613f2b565b5b8085613e689190615d88565b94505b613e76878787613f2b565b505050505b505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613ee182826118fe565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f9190615a02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161400090615a94565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561408f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161408690615e2e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141229190614e0c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161418691906147e8565b60405180910390a350505050565b600061419f30611682565b905060006016546017546141b39190614e0c565b905060008214806141c45750600081145b156141d05750506142db565b600060175411156142c557600081601754846141ec919061508a565b6141f691906150fb565b9050614223307f0000000000000000000000007a66268424dccf1ff2bcd8d1faf68dd9b59c907683613f2b565b7f0000000000000000000000007a66268424dccf1ff2bcd8d1faf68dd9b59c907673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561428b57600080fd5b505af192505050801561429c575060015b5080836142a99190615d88565b9250601754826142b99190615d88565b91506000601781905550505b60008211156142d8576142d7826142dd565b5b50505b565b6000600267ffffffffffffffff8111156142fa576142f96149af565b5b6040519080825280602002602001820160405280156143285781602001602082028036833780820191505090505b50905030816000815181106143405761433f6154de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144099190615e63565b8160018151811061441d5761441c6154de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016144db959493929190615f51565b600060405180830381600087803b1580156144f557600080fd5b505af1158015614509573d6000803e3d6000fd5b505050505050565b508054600082559060005260206000209081019061452f9190614532565b50565b5b8082111561454b576000816000905550600101614533565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61457681614563565b811461458157600080fd5b50565b6000813590506145938161456d565b92915050565b600080604083850312156145b0576145af614559565b5b60006145be85828601614584565b92505060206145cf85828601614584565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146135780820151818401526020810190506145f8565b60008484015250505050565b6000601f19601f8301169050919050565b600061463b826145d9565b61464581856145e4565b93506146558185602086016145f5565b61465e8161461f565b840191505092915050565b600060208201905081810360008301526146838184614630565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006146d06146cb6146c68461468b565b6146ab565b61468b565b9050919050565b60006146e2826146b5565b9050919050565b60006146f4826146d7565b9050919050565b614704816146e9565b82525050565b600060208201905061471f60008301846146fb565b92915050565b60006147308261468b565b9050919050565b61474081614725565b811461474b57600080fd5b50565b60008135905061475d81614737565b92915050565b6000806040838503121561477a57614779614559565b5b60006147888582860161474e565b925050602061479985828601614584565b9150509250929050565b60008115159050919050565b6147b8816147a3565b82525050565b60006020820190506147d360008301846147af565b92915050565b6147e281614563565b82525050565b60006020820190506147fd60008301846147d9565b92915050565b60006020828403121561481957614818614559565b5b600061482784828501614584565b91505092915050565b60006020828403121561484657614845614559565b5b60006148548482850161474e565b91505092915050565b60008060006060848603121561487657614875614559565b5b60006148848682870161474e565b93505060206148958682870161474e565b92505060406148a686828701614584565b9150509250925092565b600060ff82169050919050565b6148c6816148b0565b82525050565b60006020820190506148e160008301846148bd565b92915050565b6148f081614725565b82525050565b600060208201905061490b60008301846148e7565b92915050565b61491a816147a3565b811461492557600080fd5b50565b60008135905061493781614911565b92915050565b6000806040838503121561495457614953614559565b5b60006149628582860161474e565b925050602061497385828601614928565b9150509250929050565b60006020828403121561499357614992614559565b5b60006149a184828501614928565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6149e78261461f565b810181811067ffffffffffffffff82111715614a0657614a056149af565b5b80604052505050565b6000614a1961454f565b9050614a2582826149de565b919050565b600067ffffffffffffffff821115614a4557614a446149af565b5b602082029050602081019050919050565b600080fd5b6000614a6e614a6984614a2a565b614a0f565b90508083825260208201905060208402830185811115614a9157614a90614a56565b5b835b81811015614aba5780614aa6888261474e565b845260208401935050602081019050614a93565b5050509392505050565b600082601f830112614ad957614ad86149aa565b5b8135614ae9848260208601614a5b565b91505092915050565b600060208284031215614b0857614b07614559565b5b600082013567ffffffffffffffff811115614b2657614b2561455e565b5b614b3284828501614ac4565b91505092915050565b600080fd5b60008083601f840112614b5657614b556149aa565b5b8235905067ffffffffffffffff811115614b7357614b72614b3b565b5b602083019150836020820283011115614b8f57614b8e614a56565b5b9250929050565b600080600060408486031215614baf57614bae614559565b5b600084013567ffffffffffffffff811115614bcd57614bcc61455e565b5b614bd986828701614b40565b93509350506020614bec86828701614928565b9150509250925092565b600067ffffffffffffffff821115614c1157614c106149af565b5b602082029050602081019050919050565b6000614c35614c3084614bf6565b614a0f565b90508083825260208201905060208402830185811115614c5857614c57614a56565b5b835b81811015614c815780614c6d8882614584565b845260208401935050602081019050614c5a565b5050509392505050565b600082601f830112614ca057614c9f6149aa565b5b8135614cb0848260208601614c22565b91505092915050565b60008060408385031215614cd057614ccf614559565b5b600083013567ffffffffffffffff811115614cee57614ced61455e565b5b614cfa85828601614ac4565b925050602083013567ffffffffffffffff811115614d1b57614d1a61455e565b5b614d2785828601614c8b565b9150509250929050565b60008060408385031215614d4857614d47614559565b5b6000614d568582860161474e565b9250506020614d678582860161474e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614da76020836145e4565b9150614db282614d71565b602082019050919050565b60006020820190508181036000830152614dd681614d9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e1782614563565b9150614e2283614563565b9250828201905080821115614e3a57614e39614ddd565b5b92915050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000614e76601e836145e4565b9150614e8182614e40565b602082019050919050565b60006020820190508181036000830152614ea581614e69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ef357607f821691505b602082108103614f0657614f05614eac565b5b50919050565b60008160011c9050919050565b6000808291508390505b6001851115614f6357808604811115614f3f57614f3e614ddd565b5b6001851615614f4e5780820291505b8081029050614f5c85614f0c565b9450614f23565b94509492505050565b600082614f7c5760019050615038565b81614f8a5760009050615038565b8160018114614fa05760028114614faa57614fd9565b6001915050615038565b60ff841115614fbc57614fbb614ddd565b5b8360020a915084821115614fd357614fd2614ddd565b5b50615038565b5060208310610133831016604e8410600b841016171561500e5782820a90508381111561500957615008614ddd565b5b615038565b61501b8484846001614f19565b9250905081840481111561503257615031614ddd565b5b81810290505b9392505050565b600061504a82614563565b9150615055836148b0565b92506150827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614f6c565b905092915050565b600061509582614563565b91506150a083614563565b92508282026150ae81614563565b915082820484148315176150c5576150c4614ddd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061510682614563565b915061511183614563565b925082615121576151206150cc565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000615188602f836145e4565b91506151938261512c565b604082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061521a6028836145e4565b9150615225826151be565b604082019050919050565b600060208201905081810360008301526152498161520d565b9050919050565b7f6d6179206e6f742073657420746f203020616464726573730000000000000000600082015250565b60006152866018836145e4565b915061529182615250565b602082019050919050565b600060208201905081810360008301526152b581615279565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b60006152f26018836145e4565b91506152fd826152bc565b602082019050919050565b60006020820190508181036000830152615321816152e5565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b60006153aa6045836145e4565b91506153b582615328565b606082019050919050565b600060208201905081810360008301526153d98161539d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061543c6025836145e4565b9150615447826153e0565b604082019050919050565b6000602082019050818103600083015261546b8161542f565b9050919050565b7f4e6f20626f747320746f20626c6f636b00000000000000000000000000000000600082015250565b60006154a86010836145e4565b91506154b382615472565b602082019050919050565b600060208201905081810360008301526154d78161549b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061551882614563565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361554a57615549614ddd565b5b600182019050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006155b16022836145e4565b91506155bc82615555565b604082019050919050565b600060208201905081810360008301526155e0816155a4565b9050919050565b600082825260208201905092915050565b6000819050919050565b61560b81614725565b82525050565b600061561d8383615602565b60208301905092915050565b6000615638602084018461474e565b905092915050565b6000602082019050919050565b600061565983856155e7565b9350615664826155f8565b8060005b8581101561569d5761567a8284615629565b6156848882615611565b975061568f83615640565b925050600181019050615668565b5085925050509392505050565b600060408201905081810360008301526156c581858761564d565b90506156d460208301846147af565b949350505050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000615712601e836145e4565b915061571d826156dc565b602082019050919050565b6000602082019050818103600083015261574181615705565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b60006157a46036836145e4565b91506157af82615748565b604082019050919050565b600060208201905081810360008301526157d381615797565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006158366026836145e4565b9150615841826157da565b604082019050919050565b6000602082019050818103600083015261586581615829565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006158c86024836145e4565b91506158d38261586c565b604082019050919050565b600060208201905081810360008301526158f7816158bb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061595a6022836145e4565b9150615965826158fe565b604082019050919050565b600060208201905081810360008301526159898161594d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006159ec6025836145e4565b91506159f782615990565b604082019050919050565b60006020820190508181036000830152615a1b816159df565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615a7e6023836145e4565b9150615a8982615a22565b604082019050919050565b60006020820190508181036000830152615aad81615a71565b9050919050565b7f4e6f20626f747300000000000000000000000000000000000000000000000000600082015250565b6000615aea6007836145e4565b9150615af582615ab4565b602082019050919050565b60006020820190508181036000830152615b1981615add565b9050919050565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b6000615b56601a836145e4565b9150615b6182615b20565b602082019050919050565b60006020820190508181036000830152615b8581615b49565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e000000000000000000600082015250565b6000615bc26017836145e4565b9150615bcd82615b8c565b602082019050919050565b60006020820190508181036000830152615bf181615bb5565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615c546035836145e4565b9150615c5f82615bf8565b604082019050919050565b60006020820190508181036000830152615c8381615c47565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000615cc0601b836145e4565b9150615ccb82615c8a565b602082019050919050565b60006020820190508181036000830152615cef81615cb3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615d526036836145e4565b9150615d5d82615cf6565b604082019050919050565b60006020820190508181036000830152615d8181615d45565b9050919050565b6000615d9382614563565b9150615d9e83614563565b9250828203905081811115615db657615db5614ddd565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615e186026836145e4565b9150615e2382615dbc565b604082019050919050565b60006020820190508181036000830152615e4781615e0b565b9050919050565b600081519050615e5d81614737565b92915050565b600060208284031215615e7957615e78614559565b5b6000615e8784828501615e4e565b91505092915050565b6000819050919050565b6000615eb5615eb0615eab84615e90565b6146ab565b614563565b9050919050565b615ec581615e9a565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000615efe82615ecb565b615f0881856155e7565b9350615f1383615ed6565b8060005b83811015615f44578151615f2b8882615611565b9750615f3683615ee6565b925050600181019050615f17565b5085935050505092915050565b600060a082019050615f6660008301886147d9565b615f736020830187615ebc565b8181036040830152615f858186615ef3565b9050615f9460608301856148e7565b615fa160808301846147d9565b969550505050505056fea2646970667358221220de9d0e30390bc5380c68f6cd338492604bf8c8f2e6a5fcc7f841b6612bc3449064736f6c63430008130033
Deployed Bytecode Sourcemap
10936:15581:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17078:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4178:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10986:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5099:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12014:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11263:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16233:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12516:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4506:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12214:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11425;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5276:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18959:349;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4398:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5857:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11030:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11534:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19316:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16748:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11614:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4622:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8945:148;;;;;;;;;;;;;:::i;:::-;;11975:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19493:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17739:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15752:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8303:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16124:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4286:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11889:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18455:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6080:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25361:321;;;;;;;;;;;;;:::i;:::-;;17411:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4757:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12468:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25886:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12738:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12058:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11574:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17949:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16501:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18141:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11837:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11144:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12130:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11940:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25690:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26078:432;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4940:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11186:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15560:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11348:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12092:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9248:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11226:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12173:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11100:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17078:325;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17199:14:::1;17179:17;:34;;;;17243:13;17224:16;:32;;;;17303:16;;17283:17;;:36;;;;:::i;:::-;17267:13;:52;;;;17355:5;17338:13;;:22;;17330:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17078:325:::0;;:::o;4178:100::-;4232:13;4265:5;4258:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4178:100;:::o;10986:37::-;;;:::o;5099:169::-;5182:4;5199:39;5208:12;:10;:12::i;:::-;5222:7;5231:6;5199:8;:39::i;:::-;5256:4;5249:11;;5099:169;;;;:::o;12014:31::-;;;;:::o;11263:39::-;;;;:::o;16233:256::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16357:10:::1;:8;:10::i;:::-;16351:2;:16;;;;:::i;:::-;16342:4;16338:1;16322:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16321:47;;;;:::i;:::-;16312:6;:56;16304:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;16470:10;:8;:10::i;:::-;16464:2;:16;;;;:::i;:::-;16454:6;:27;;;;:::i;:::-;16431:20;:50;;;;16233:256:::0;:::o;12516:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;4506:108::-;4567:7;4594:12;;4587:19;;4506:108;:::o;12214:33::-;;;;:::o;11425:::-;;;;:::o;5276:573::-;5416:4;5433:36;5443:6;5451:9;5462:6;5433:9;:36::i;:::-;5482:24;5509:11;:19;5521:6;5509:19;;;;;;;;;;;;;;;:33;5529:12;:10;:12::i;:::-;5509:33;;;;;;;;;;;;;;;;5482:60;;5577:17;5557:16;:37;5553:265;;5639:6;5619:16;:26;;5611:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5734:57;5743:6;5751:12;:10;:12::i;:::-;5784:6;5765:16;:25;5734:8;:57::i;:::-;5553:265;5837:4;5830:11;;;5276:573;;;;;:::o;18959:349::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19089:1:::1;19058:33;;:19;:33;;::::0;19050:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19131:42;19147:19;19168:4;19131:15;:42::i;:::-;19234:16;;;;;;;;;;;19189:62;;19213:19;19189:62;;;;;;;;;;;;19281:19;19262:16;;:38;;;;;;;;;;;;;;;;;;18959:349:::0;:::o;4398:100::-;4456:5;4481:9;;;;;;;;;;;4474:16;;4398:100;:::o;5857:215::-;5945:4;5962:80;5971:12;:10;:12::i;:::-;5985:7;6031:10;5994:11;:25;6006:12;:10;:12::i;:::-;5994:25;;;;;;;;;;;;;;;:34;6020:7;5994:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5962:8;:80::i;:::-;6060:4;6053:11;;5857:215;;;;:::o;11030:31::-;;;:::o;11534:33::-;;;;;;;;;;;;;:::o;19316:127::-;19383:4;19407:19;:28;19427:7;19407:28;;;;;;;;;;;;;;;;;;;;;;;;;19400:35;;19316:127;;;:::o;16748:318::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16867:14:::1;16848:16;:33;;;;16910:13;16892:15;:31;;;;16968:15;;16949:16;;:34;;;;:::i;:::-;16934:12;:49;;;;17018:5;17002:12;;:21;;16994:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16748:318:::0;;:::o;11614:31::-;;;;;;;;;;;;;:::o;4622:127::-;4696:7;4723:9;:18;4733:7;4723:18;;;;;;;;;;;;;;;;4716:25;;4622:127;;;:::o;8945:148::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9052:1:::1;9015:40;;9036:6;;;;;;;;;;;9015:40;;;;;;;;;;;;9083:1;9066:6;;:19;;;;;;;;;;;;;;;;;;8945:148::o:0;11975:32::-;;;;:::o;19493:159::-;19545:4;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19578:5:::1;19561:14;;:22;;;;;;;;;;;;;;;;;;19617:5;19594:20;;:28;;;;;;;;;;;;;;;;;;19640:4;19633:11;;19493:159:::0;:::o;17739:202::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17871:4:::1;17829:31;:39;17861:6;17829:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17920:6;17891:42;;;17928:4;17891:42;;;;;;:::i;:::-;;;;;;;;17739:202:::0;;:::o;15752:272::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15835:13:::1;;;;;;;;;;;15834:14;15826:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15904:4;15888:13;;:20;;;;;;;;;;;;;;;;;;15933:4;15919:11;;:18;;;;;;;;;;;;;;;;;;15969:12;15948:18;:33;;;;16005:11;15992:10;:24;;;;15752:272:::0;:::o;8303:79::-;8341:7;8368:6;;;;;;;;;;;8361:13;;8303:79;:::o;16124:101::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16210:7:::1;16196:11;;:21;;;;;;;;;;;;;;;;;;16124:101:::0;:::o;4286:104::-;4342:13;4375:7;4368:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4286:104;:::o;11889:42::-;11926:5;11889:42;:::o;18455:251::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18564:6:::1;18556:14;;:4;:14;;::::0;18548:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18657:41;18686:4;18692:5;18657:28;:41::i;:::-;18455:251:::0;;:::o;6080:413::-;6173:4;6190:24;6217:11;:25;6229:12;:10;:12::i;:::-;6217:25;;;;;;;;;;;;;;;:34;6243:7;6217:34;;;;;;;;;;;;;;;;6190:61;;6290:15;6270:16;:35;;6262:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6383:67;6392:12;:10;:12::i;:::-;6406:7;6434:15;6415:16;:34;6383:8;:67::i;:::-;6481:4;6474:11;;;6080:413;;;;:::o;25361:321::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25445:1:::1;25424:11;:18;;;;:22;25416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25484:9;25480:164;25503:11;:18;;;;25499:1;:22;25480:164;;;25546:6;:22;25553:11;25565:1;25553:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25546:22;;;;;;;;;;;;;;;;;;;;;;;;;25542:91;;25613:4;25588:6;:22;25595:11;25607:1;25595:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25588:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25542:91;25523:3;;;;;:::i;:::-;;;;25480:164;;;;25663:11;;25656:18;;;;:::i;:::-;25361:321::o:0;17411:320::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17527:14:::1;17507:17;:34;;;;17571:13;17552:16;:32;;;;17631:16;;17611:17;;:36;;;;:::i;:::-;17595:13;:52;;;;17683:5;17666:13;;:22;;17658:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17411:320:::0;;:::o;4757:175::-;4843:4;4860:42;4870:12;:10;:12::i;:::-;4884:9;4895:6;4860:9;:42::i;:::-;4920:4;4913:11;;4757:175;;;;:::o;12468:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;25886:184::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25966:9:::1;25962:101;25985:10;:17;25981:1;:21;25962:101;;;26047:4;26023:6;:21;26030:10;26041:1;26030:13;;;;;;;;:::i;:::-;;;;;;;;26023:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26004:3;;;;;:::i;:::-;;;;25962:101;;;;25886:184:::0;:::o;12738:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12058:27::-;;;;:::o;11574:33::-;;;;;;;;;;;;;:::o;17949:184::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18065:8:::1;18034:19;:28;18054:7;18034:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18107:7;18091:34;;;18116:8;18091:34;;;;;;:::i;:::-;;;;;;;;17949:184:::0;;:::o;16501:235::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16628:10:::1;:8;:10::i;:::-;16622:2;:16;;;;:::i;:::-;16616:3;16612:1;16596:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;16595:44;;;;:::i;:::-;16586:6;:53;16578:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;16717:10;:8;:10::i;:::-;16711:2;:16;;;;:::i;:::-;16701:6;:27;;;;:::i;:::-;16689:9;:39;;;;16501:235:::0;:::o;18141:306::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18260:9:::1;18256:115;18279:8;;:15;;18275:1;:19;18256:115;;;18351:8;18316:19;:32;18336:8;;18345:1;18336:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18316:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;18296:3;;;;;:::i;:::-;;;;18256:115;;;;18388:51;18420:8;;18430;18388:51;;;;;;;;:::i;:::-;;;;;;;;18141:306:::0;;;:::o;11837:39::-;;;;;;;;;;;;;:::o;11144:35::-;;;;:::o;12130:30::-;;;;:::o;11940:28::-;;;;:::o;25690:188::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25773:9:::1;25769:102;25792:10;:17;25788:1;:21;25769:102;;;25854:5;25830:6;:21;25837:10;25848:1;25837:13;;;;;;;;:::i;:::-;;;;;;;;25830:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25811:3;;;;;:::i;:::-;;;;25769:102;;;;25690:188:::0;:::o;26078:432::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26212:12:::1;:19;26194:7;:14;:37;26186:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;26302:3;26285:7;:14;:20;26277:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26379:9;26375:126;26398:7;:14;26394:1;:18;26375:126;;;26433:56;26449:10;26461:7;26469:1;26461:10;;;;;;;;:::i;:::-;;;;;;;;26473:12;26486:1;26473:15;;;;;;;;:::i;:::-;;;;;;;;26433;:56::i;:::-;26414:3;;;;;:::i;:::-;;;;26375:126;;;;26078:432:::0;;:::o;4940:151::-;5029:7;5056:11;:18;5068:5;5056:18;;;;;;;;;;;;;;;:27;5075:7;5056:27;;;;;;;;;;;;;;;;5049:34;;4940:151;;;;:::o;11186:33::-;;;;:::o;15560:134::-;15620:4;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15659:5:::1;15636:20;;:28;;;;;;;;;;;;;;;;;;15682:4;15675:11;;15560:134:::0;:::o;11348:37::-;;;;:::o;12092:31::-;;;;:::o;9248:244::-;8525:12;:10;:12::i;:::-;8515:22;;:6;;;;;;;;;;;:22;;;8507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9357:1:::1;9337:22;;:8;:22;;::::0;9329:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9447:8;9418:38;;9439:6;;;;;;;;;;;9418:38;;;;;;;;;;;;9476:8;9467:6;;:17;;;;;;;;;;;;;;;;;;9248:244:::0;:::o;11226:24::-;;;;:::o;12173:34::-;;;;:::o;11100:31::-;;;;;;;;;;;;;:::o;126:98::-;179:7;206:10;199:17;;126:98;:::o;7420:380::-;7573:1;7556:19;;:5;:19;;;7548:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7654:1;7635:21;;:7;:21;;;7627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7738:6;7708:11;:18;7720:5;7708:18;;;;;;;;;;;;;;;:27;7727:7;7708:27;;;;;;;;;;;;;;;:36;;;;7776:7;7760:32;;7769:5;7760:32;;;7785:6;7760:32;;;;;;:::i;:::-;;;;;;;;7420:380;;;:::o;19664:4391::-;19812:1;19796:18;;:4;:18;;;19788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19889:1;19875:16;;:2;:16;;;19867:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19951:6;:10;19958:2;19951:10;;;;;;;;;;;;;;;;;;;;;;;;;19950:11;:28;;;;;19966:6;:12;19973:4;19966:12;;;;;;;;;;;;;;;;;;;;;;;;;19965:13;19950:28;19942:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20017:1;20007:6;:11;20004:92;;20035:28;20051:4;20057:2;20061:1;20035:15;:28::i;:::-;20078:7;;20004:92;20120:13;;;;;;;;;;;20116:136;;20157:19;:25;20177:4;20157:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20186:19;:23;20206:2;20186:23;;;;;;;;;;;;;;;;;;;;;;;;;20157:52;20149:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;20116:136;20275:14;;;;;;;;;;;20272:1656;;;20335:7;:5;:7::i;:::-;20327:15;;:4;:15;;;;:49;;;;;20369:7;:5;:7::i;:::-;20363:13;;:2;:13;;;;20327:49;:86;;;;;20411:1;20397:16;;:2;:16;;;;20327:86;:128;;;;;20448:6;20434:21;;:2;:21;;;;20327:128;:158;;;;;20477:8;;;;;;;;;;;20476:9;20327:158;20305:1612;;;20659:20;;;;;;;;;;;20655:417;;;20757:12;20753:1;20711:28;:39;20740:9;20711:39;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:58;20703:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;20838:9;20824:24;;:2;:24;;;;:49;;;;;20866:6;20852:21;;:2;:21;;;;20824:49;20820:233;;;20943:12;20901:28;:39;20930:9;20901:39;;;;;;;;;;;;;;;:54;;;;21017:12;20982:28;:32;21011:2;20982:32;;;;;;;;;;;;;;;:47;;;;20820:233;20655:417;21140:25;:31;21166:4;21140:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21176:31;:35;21208:2;21176:35;;;;;;;;;;;;;;;;;;;;;;;;;21175:36;21140:71;21136:766;;;21254:20;;21244:6;:30;;21236:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21389:9;;21372:13;21382:2;21372:9;:13::i;:::-;21363:6;:22;;;;:::i;:::-;:35;;21355:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21136:766;;;21507:25;:29;21533:2;21507:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21541:31;:37;21573:4;21541:37;;;;;;;;;;;;;;;;;;;;;;;;;21540:38;21507:71;21503:399;;;21621:20;;21611:6;:30;;21603:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21503:399;;;21747:31;:35;21779:2;21747:35;;;;;;;;;;;;;;;;;;;;;;;;;21743:159;;21841:9;;21824:13;21834:2;21824:9;:13::i;:::-;21815:6;:22;;;;:::i;:::-;:35;;21807:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21743:159;21503:399;21136:766;20305:1612;20272:1656;21934:28;21965:24;21983:4;21965:9;:24::i;:::-;21934:55;;22010:12;22049:18;;22025:20;:42;;22010:57;;22098:7;:35;;;;;22122:11;;;;;;;;;;;22098:35;:61;;;;;22151:8;;;;;;;;;;;22150:9;22098:61;:110;;;;;22177:25;:31;22203:4;22177:31;;;;;;;;;;;;;;;;;;;;;;;;;22176:32;22098:110;:153;;;;;22226:19;:25;22246:4;22226:25;;;;;;;;;;;;;;;;;;;;;;;;;22225:26;22098:153;:194;;;;;22269:19;:23;22289:2;22269:23;;;;;;;;;;;;;;;;;;;;;;;;;22268:24;22098:194;22080:322;;;22330:4;22319:8;;:15;;;;;;;;;;;;;;;;;;22349:10;:8;:10::i;:::-;22385:5;22374:8;;:16;;;;;;;;;;;;;;;;;;22080:322;22414:12;22430:8;;;;;;;;;;;22429:9;22414:24;;22539:19;:25;22559:4;22539:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22568:19;:23;22588:2;22568:23;;;;;;;;;;;;;;;;;;;;;;;;;22539:52;22536:99;;;22618:5;22608:15;;22536:99;22655:12;22746:7;22743:1259;;;22807:12;22793:10;;22772:18;;:31;;;;:::i;:::-;:47;;:117;;;;;22824:25;:29;22850:2;22824:29;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;22857:25;:31;22883:4;22857:31;;;;;;;;;;;;;;;;;;;;;;;;;22824:64;22772:117;22769:1076;;;11926:5;22925:12;;22916:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;22909:41;;23016:12;;22998:15;;22991:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22969:18;;:59;;;;;;;:::i;:::-;;;;;;;;23096:12;;23077:16;;23070:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;23047:19;;:61;;;;;;;:::i;:::-;;;;;;;;23127:11;23144:2;23127:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22769:1076;;;23212:25;:29;23238:2;23212:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23261:1;23245:13;;:17;23212:50;23208:637;;;11926:5;23298:13;;23289:6;:22;;;;:::i;:::-;:35;;;;:::i;:::-;23282:42;;23391:13;;23372:16;;23365:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23343:18;;:61;;;;;;;:::i;:::-;;;;;;;;23473:13;;23453:17;;23446:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;23423:19;;:63;;;;;;;:::i;:::-;;;;;;;;23208:637;;;23561:25;:31;23587:4;23561:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23611:1;23596:12;;:16;23561:51;23558:287;;;11926:5;23646:12;;23637:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;23630:41;;23737:12;;23719:15;;23712:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23690:18;;:59;;;;;;;:::i;:::-;;;;;;;;23817:12;;23798:16;;23791:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;23768:19;;:61;;;;;;;:::i;:::-;;;;;;;;23558:287;23208:637;22769:1076;23871:1;23864:4;:8;23861:93;;;23896:42;23912:4;23926;23933;23896:15;:42::i;:::-;23861:93;23986:4;23976:14;;;;;:::i;:::-;;;22743:1259;24014:33;24030:4;24036:2;24040:6;24014:15;:33::i;:::-;19777:4278;;;;19664:4391;;;;:::o;18714:237::-;18831:5;18797:25;:31;18823:4;18797:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18849:38;18875:4;18881:5;18849:25;:38::i;:::-;18937:5;18903:40;;18931:4;18903:40;;;;;;;;;;;;18714:237;;:::o;6501:614::-;6659:1;6641:20;;:6;:20;;;6633:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6743:1;6722:23;;:9;:23;;;6714:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6798:21;6822:9;:17;6832:6;6822:17;;;;;;;;;;;;;;;;6798:41;;6875:6;6858:13;:23;;6850:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6996:6;6980:13;:22;6960:9;:17;6970:6;6960:17;;;;;;;;;;;;;;;:42;;;;7048:6;7024:9;:20;7034:9;7024:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7089:9;7072:35;;7081:6;7072:35;;;7100:6;7072:35;;;;;;:::i;:::-;;;;;;;;6622:493;6501:614;;;:::o;24592:761::-;24631:23;24657:24;24675:4;24657:9;:24::i;:::-;24631:50;;24692:25;24741:19;;24720:18;;:40;;;;:::i;:::-;24692:68;;24803:1;24784:15;:20;:46;;;;24829:1;24808:17;:22;24784:46;24781:60;;;24833:7;;;;24781:60;24879:1;24858:18;;:22;24855:396;;;24896:23;24961:17;24940:18;;24922:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;24896:82;;24993:55;25017:4;25024:6;25032:15;24993;:55::i;:::-;25075:6;25067:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25063:37;25133:15;25114:34;;;;;:::i;:::-;;;25184:18;;25163:39;;;;;:::i;:::-;;;25238:1;25217:18;:22;;;;24881:370;24855:396;25284:1;25266:15;:19;25263:83;;;25301:33;25318:15;25301:16;:33::i;:::-;25263:83;24620:733;;24592:761;:::o;24063:521::-;24191:21;24229:1;24215:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24191:40;;24260:4;24242;24247:1;24242:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24286:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24276:4;24281:1;24276:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;24341:9;:60;;;24416:11;24442:1;24486:4;24513:16;;;;;;;;;;;24545:15;24341:230;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24118:466;24063:521;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310: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:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:60::-;2672:3;2693:5;2686:12;;2644:60;;;:::o;2710:142::-;2760:9;2793:53;2811:34;2820:24;2838:5;2820:24;:::i;:::-;2811:34;:::i;:::-;2793:53;:::i;:::-;2780:66;;2710:142;;;:::o;2858:126::-;2908:9;2941:37;2972:5;2941:37;:::i;:::-;2928:50;;2858:126;;;:::o;2990:144::-;3058:9;3091:37;3122:5;3091:37;:::i;:::-;3078:50;;2990:144;;;:::o;3140:167::-;3245:55;3294:5;3245:55;:::i;:::-;3240:3;3233:68;3140:167;;:::o;3313:258::-;3424:4;3462:2;3451:9;3447:18;3439:26;;3475:89;3561:1;3550:9;3546:17;3537:6;3475:89;:::i;:::-;3313:258;;;;:::o;3577:96::-;3614:7;3643:24;3661:5;3643:24;:::i;:::-;3632:35;;3577:96;;;:::o;3679:122::-;3752:24;3770:5;3752:24;:::i;:::-;3745:5;3742:35;3732:63;;3791:1;3788;3781:12;3732:63;3679:122;:::o;3807:139::-;3853:5;3891:6;3878:20;3869:29;;3907:33;3934:5;3907:33;:::i;:::-;3807:139;;;;:::o;3952:474::-;4020:6;4028;4077:2;4065:9;4056:7;4052:23;4048:32;4045:119;;;4083:79;;:::i;:::-;4045:119;4203:1;4228:53;4273:7;4264:6;4253:9;4249:22;4228:53;:::i;:::-;4218:63;;4174:117;4330:2;4356:53;4401:7;4392:6;4381:9;4377:22;4356:53;:::i;:::-;4346:63;;4301:118;3952:474;;;;;:::o;4432:90::-;4466:7;4509:5;4502:13;4495:21;4484:32;;4432:90;;;:::o;4528:109::-;4609:21;4624:5;4609:21;:::i;:::-;4604:3;4597:34;4528:109;;:::o;4643:210::-;4730:4;4768:2;4757:9;4753:18;4745:26;;4781:65;4843:1;4832:9;4828:17;4819:6;4781:65;:::i;:::-;4643:210;;;;:::o;4859:118::-;4946:24;4964:5;4946:24;:::i;:::-;4941:3;4934:37;4859:118;;:::o;4983:222::-;5076:4;5114:2;5103:9;5099:18;5091:26;;5127:71;5195:1;5184:9;5180:17;5171:6;5127:71;:::i;:::-;4983:222;;;;:::o;5211:329::-;5270:6;5319:2;5307:9;5298:7;5294:23;5290:32;5287:119;;;5325:79;;:::i;:::-;5287:119;5445:1;5470:53;5515:7;5506:6;5495:9;5491:22;5470:53;:::i;:::-;5460:63;;5416:117;5211:329;;;;:::o;5546:::-;5605:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:119;;;5660:79;;:::i;:::-;5622:119;5780:1;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5751:117;5546:329;;;;:::o;5881:619::-;5958:6;5966;5974;6023:2;6011:9;6002:7;5998:23;5994:32;5991:119;;;6029:79;;:::i;:::-;5991:119;6149:1;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6120:117;6276:2;6302:53;6347:7;6338:6;6327:9;6323:22;6302:53;:::i;:::-;6292:63;;6247:118;6404:2;6430:53;6475:7;6466:6;6455:9;6451:22;6430:53;:::i;:::-;6420:63;;6375:118;5881:619;;;;;:::o;6506:86::-;6541:7;6581:4;6574:5;6570:16;6559:27;;6506:86;;;:::o;6598:112::-;6681:22;6697:5;6681:22;:::i;:::-;6676:3;6669:35;6598:112;;:::o;6716:214::-;6805:4;6843:2;6832:9;6828:18;6820:26;;6856:67;6920:1;6909:9;6905:17;6896:6;6856:67;:::i;:::-;6716:214;;;;:::o;6936:118::-;7023:24;7041:5;7023:24;:::i;:::-;7018:3;7011:37;6936:118;;:::o;7060:222::-;7153:4;7191:2;7180:9;7176:18;7168:26;;7204:71;7272:1;7261:9;7257:17;7248:6;7204:71;:::i;:::-;7060:222;;;;:::o;7288:116::-;7358:21;7373:5;7358:21;:::i;:::-;7351:5;7348:32;7338:60;;7394:1;7391;7384:12;7338:60;7288:116;:::o;7410:133::-;7453:5;7491:6;7478:20;7469:29;;7507:30;7531:5;7507:30;:::i;:::-;7410:133;;;;:::o;7549:468::-;7614:6;7622;7671:2;7659:9;7650:7;7646:23;7642:32;7639:119;;;7677:79;;:::i;:::-;7639:119;7797:1;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7768:117;7924:2;7950:50;7992:7;7983:6;7972:9;7968:22;7950:50;:::i;:::-;7940:60;;7895:115;7549:468;;;;;:::o;8023:323::-;8079:6;8128:2;8116:9;8107:7;8103:23;8099:32;8096:119;;;8134:79;;:::i;:::-;8096:119;8254:1;8279:50;8321:7;8312:6;8301:9;8297:22;8279:50;:::i;:::-;8269:60;;8225:114;8023:323;;;;:::o;8352:117::-;8461:1;8458;8451:12;8475:180;8523:77;8520:1;8513:88;8620:4;8617:1;8610:15;8644:4;8641:1;8634:15;8661:281;8744:27;8766:4;8744:27;:::i;:::-;8736:6;8732:40;8874:6;8862:10;8859:22;8838:18;8826:10;8823:34;8820:62;8817:88;;;8885:18;;:::i;:::-;8817:88;8925:10;8921:2;8914:22;8704:238;8661:281;;:::o;8948:129::-;8982:6;9009:20;;:::i;:::-;8999:30;;9038:33;9066:4;9058:6;9038:33;:::i;:::-;8948:129;;;:::o;9083:311::-;9160:4;9250:18;9242:6;9239:30;9236:56;;;9272:18;;:::i;:::-;9236:56;9322:4;9314:6;9310:17;9302:25;;9382:4;9376;9372:15;9364:23;;9083:311;;;:::o;9400:117::-;9509:1;9506;9499:12;9540:710;9636:5;9661:81;9677:64;9734:6;9677:64;:::i;:::-;9661:81;:::i;:::-;9652:90;;9762:5;9791:6;9784:5;9777:21;9825:4;9818:5;9814:16;9807:23;;9878:4;9870:6;9866:17;9858:6;9854:30;9907:3;9899:6;9896:15;9893:122;;;9926:79;;:::i;:::-;9893:122;10041:6;10024:220;10058:6;10053:3;10050:15;10024:220;;;10133:3;10162:37;10195:3;10183:10;10162:37;:::i;:::-;10157:3;10150:50;10229:4;10224:3;10220:14;10213:21;;10100:144;10084:4;10079:3;10075:14;10068:21;;10024:220;;;10028:21;9642:608;;9540:710;;;;;:::o;10273:370::-;10344:5;10393:3;10386:4;10378:6;10374:17;10370:27;10360:122;;10401:79;;:::i;:::-;10360:122;10518:6;10505:20;10543:94;10633:3;10625:6;10618:4;10610:6;10606:17;10543:94;:::i;:::-;10534:103;;10350:293;10273:370;;;;:::o;10649:539::-;10733:6;10782:2;10770:9;10761:7;10757:23;10753:32;10750:119;;;10788:79;;:::i;:::-;10750:119;10936:1;10925:9;10921:17;10908:31;10966:18;10958:6;10955:30;10952:117;;;10988:79;;:::i;:::-;10952:117;11093:78;11163:7;11154:6;11143:9;11139:22;11093:78;:::i;:::-;11083:88;;10879:302;10649:539;;;;:::o;11194:117::-;11303:1;11300;11293:12;11334:568;11407:8;11417:6;11467:3;11460:4;11452:6;11448:17;11444:27;11434:122;;11475:79;;:::i;:::-;11434:122;11588:6;11575:20;11565:30;;11618:18;11610:6;11607:30;11604:117;;;11640:79;;:::i;:::-;11604:117;11754:4;11746:6;11742:17;11730:29;;11808:3;11800:4;11792:6;11788:17;11778:8;11774:32;11771:41;11768:128;;;11815:79;;:::i;:::-;11768:128;11334:568;;;;;:::o;11908:698::-;12000:6;12008;12016;12065:2;12053:9;12044:7;12040:23;12036:32;12033:119;;;12071:79;;:::i;:::-;12033:119;12219:1;12208:9;12204:17;12191:31;12249:18;12241:6;12238:30;12235:117;;;12271:79;;:::i;:::-;12235:117;12384:80;12456:7;12447:6;12436:9;12432:22;12384:80;:::i;:::-;12366:98;;;;12162:312;12513:2;12539:50;12581:7;12572:6;12561:9;12557:22;12539:50;:::i;:::-;12529:60;;12484:115;11908:698;;;;;:::o;12612:311::-;12689:4;12779:18;12771:6;12768:30;12765:56;;;12801:18;;:::i;:::-;12765:56;12851:4;12843:6;12839:17;12831:25;;12911:4;12905;12901:15;12893:23;;12612:311;;;:::o;12946:710::-;13042:5;13067:81;13083:64;13140:6;13083:64;:::i;:::-;13067:81;:::i;:::-;13058:90;;13168:5;13197:6;13190:5;13183:21;13231:4;13224:5;13220:16;13213:23;;13284:4;13276:6;13272:17;13264:6;13260:30;13313:3;13305:6;13302:15;13299:122;;;13332:79;;:::i;:::-;13299:122;13447:6;13430:220;13464:6;13459:3;13456:15;13430:220;;;13539:3;13568:37;13601:3;13589:10;13568:37;:::i;:::-;13563:3;13556:50;13635:4;13630:3;13626:14;13619:21;;13506:144;13490:4;13485:3;13481:14;13474:21;;13430:220;;;13434:21;13048:608;;12946:710;;;;;:::o;13679:370::-;13750:5;13799:3;13792:4;13784:6;13780:17;13776:27;13766:122;;13807:79;;:::i;:::-;13766:122;13924:6;13911:20;13949:94;14039:3;14031:6;14024:4;14016:6;14012:17;13949:94;:::i;:::-;13940:103;;13756:293;13679:370;;;;:::o;14055:894::-;14173:6;14181;14230:2;14218:9;14209:7;14205:23;14201:32;14198:119;;;14236:79;;:::i;:::-;14198:119;14384:1;14373:9;14369:17;14356:31;14414:18;14406:6;14403:30;14400:117;;;14436:79;;:::i;:::-;14400:117;14541:78;14611:7;14602:6;14591:9;14587:22;14541:78;:::i;:::-;14531:88;;14327:302;14696:2;14685:9;14681:18;14668:32;14727:18;14719:6;14716:30;14713:117;;;14749:79;;:::i;:::-;14713:117;14854:78;14924:7;14915:6;14904:9;14900:22;14854:78;:::i;:::-;14844:88;;14639:303;14055:894;;;;;:::o;14955:474::-;15023:6;15031;15080:2;15068:9;15059:7;15055:23;15051:32;15048:119;;;15086:79;;:::i;:::-;15048:119;15206:1;15231:53;15276:7;15267:6;15256:9;15252:22;15231:53;:::i;:::-;15221:63;;15177:117;15333:2;15359:53;15404:7;15395:6;15384:9;15380:22;15359:53;:::i;:::-;15349:63;;15304:118;14955:474;;;;;:::o;15435:182::-;15575:34;15571:1;15563:6;15559:14;15552:58;15435:182;:::o;15623:366::-;15765:3;15786:67;15850:2;15845:3;15786:67;:::i;:::-;15779:74;;15862:93;15951:3;15862:93;:::i;:::-;15980:2;15975:3;15971:12;15964:19;;15623:366;;;:::o;15995:419::-;16161:4;16199:2;16188:9;16184:18;16176:26;;16248:9;16242:4;16238:20;16234:1;16223:9;16219:17;16212:47;16276:131;16402:4;16276:131;:::i;:::-;16268:139;;15995:419;;;:::o;16420:180::-;16468:77;16465:1;16458:88;16565:4;16562:1;16555:15;16589:4;16586:1;16579:15;16606:191;16646:3;16665:20;16683:1;16665:20;:::i;:::-;16660:25;;16699:20;16717:1;16699:20;:::i;:::-;16694:25;;16742:1;16739;16735:9;16728:16;;16763:3;16760:1;16757:10;16754:36;;;16770:18;;:::i;:::-;16754:36;16606:191;;;;:::o;16803:180::-;16943:32;16939:1;16931:6;16927:14;16920:56;16803:180;:::o;16989:366::-;17131:3;17152:67;17216:2;17211:3;17152:67;:::i;:::-;17145:74;;17228:93;17317:3;17228:93;:::i;:::-;17346:2;17341:3;17337:12;17330:19;;16989:366;;;:::o;17361:419::-;17527:4;17565:2;17554:9;17550:18;17542:26;;17614:9;17608:4;17604:20;17600:1;17589:9;17585:17;17578:47;17642:131;17768:4;17642:131;:::i;:::-;17634:139;;17361:419;;;:::o;17786:180::-;17834:77;17831:1;17824:88;17931:4;17928:1;17921:15;17955:4;17952:1;17945:15;17972:320;18016:6;18053:1;18047:4;18043:12;18033:22;;18100:1;18094:4;18090:12;18121:18;18111:81;;18177:4;18169:6;18165:17;18155:27;;18111:81;18239:2;18231:6;18228:14;18208:18;18205:38;18202:84;;18258:18;;:::i;:::-;18202:84;18023:269;17972:320;;;:::o;18298:102::-;18340:8;18387:5;18384:1;18380:13;18359:34;;18298:102;;;:::o;18406:848::-;18467:5;18474:4;18498:6;18489:15;;18522:5;18513:14;;18536:712;18557:1;18547:8;18544:15;18536:712;;;18652:4;18647:3;18643:14;18637:4;18634:24;18631:50;;;18661:18;;:::i;:::-;18631:50;18711:1;18701:8;18697:16;18694:451;;;19126:4;19119:5;19115:16;19106:25;;18694:451;19176:4;19170;19166:15;19158:23;;19206:32;19229:8;19206:32;:::i;:::-;19194:44;;18536:712;;;18406:848;;;;;;;:::o;19260:1073::-;19314:5;19505:8;19495:40;;19526:1;19517:10;;19528:5;;19495:40;19554:4;19544:36;;19571:1;19562:10;;19573:5;;19544:36;19640:4;19688:1;19683:27;;;;19724:1;19719:191;;;;19633:277;;19683:27;19701:1;19692:10;;19703:5;;;19719:191;19764:3;19754:8;19751:17;19748:43;;;19771:18;;:::i;:::-;19748:43;19820:8;19817:1;19813:16;19804:25;;19855:3;19848:5;19845:14;19842:40;;;19862:18;;:::i;:::-;19842:40;19895:5;;;19633:277;;20019:2;20009:8;20006:16;20000:3;19994:4;19991:13;19987:36;19969:2;19959:8;19956:16;19951:2;19945:4;19942:12;19938:35;19922:111;19919:246;;;20075:8;20069:4;20065:19;20056:28;;20110:3;20103:5;20100:14;20097:40;;;20117:18;;:::i;:::-;20097:40;20150:5;;19919:246;20190:42;20228:3;20218:8;20212:4;20209:1;20190:42;:::i;:::-;20175:57;;;;20264:4;20259:3;20255:14;20248:5;20245:25;20242:51;;;20273:18;;:::i;:::-;20242:51;20322:4;20315:5;20311:16;20302:25;;19260:1073;;;;;;:::o;20339:281::-;20397:5;20421:23;20439:4;20421:23;:::i;:::-;20413:31;;20465:25;20481:8;20465:25;:::i;:::-;20453:37;;20509:104;20546:66;20536:8;20530:4;20509:104;:::i;:::-;20500:113;;20339:281;;;;:::o;20626:410::-;20666:7;20689:20;20707:1;20689:20;:::i;:::-;20684:25;;20723:20;20741:1;20723:20;:::i;:::-;20718:25;;20778:1;20775;20771:9;20800:30;20818:11;20800:30;:::i;:::-;20789:41;;20979:1;20970:7;20966:15;20963:1;20960:22;20940:1;20933:9;20913:83;20890:139;;21009:18;;:::i;:::-;20890:139;20674:362;20626:410;;;;:::o;21042:180::-;21090:77;21087:1;21080:88;21187:4;21184:1;21177:15;21211:4;21208:1;21201:15;21228:185;21268:1;21285:20;21303:1;21285:20;:::i;:::-;21280:25;;21319:20;21337:1;21319:20;:::i;:::-;21314:25;;21358:1;21348:35;;21363:18;;:::i;:::-;21348:35;21405:1;21402;21398:9;21393:14;;21228:185;;;;:::o;21419:234::-;21559:34;21555:1;21547:6;21543:14;21536:58;21628:17;21623:2;21615:6;21611:15;21604:42;21419:234;:::o;21659:366::-;21801:3;21822:67;21886:2;21881:3;21822:67;:::i;:::-;21815:74;;21898:93;21987:3;21898:93;:::i;:::-;22016:2;22011:3;22007:12;22000:19;;21659:366;;;:::o;22031:419::-;22197:4;22235:2;22224:9;22220:18;22212:26;;22284:9;22278:4;22274:20;22270:1;22259:9;22255:17;22248:47;22312:131;22438:4;22312:131;:::i;:::-;22304:139;;22031:419;;;:::o;22456:227::-;22596:34;22592:1;22584:6;22580:14;22573:58;22665:10;22660:2;22652:6;22648:15;22641:35;22456:227;:::o;22689:366::-;22831:3;22852:67;22916:2;22911:3;22852:67;:::i;:::-;22845:74;;22928:93;23017:3;22928:93;:::i;:::-;23046:2;23041:3;23037:12;23030:19;;22689:366;;;:::o;23061:419::-;23227:4;23265:2;23254:9;23250:18;23242:26;;23314:9;23308:4;23304:20;23300:1;23289:9;23285:17;23278:47;23342:131;23468:4;23342:131;:::i;:::-;23334:139;;23061:419;;;:::o;23486:174::-;23626:26;23622:1;23614:6;23610:14;23603:50;23486:174;:::o;23666:366::-;23808:3;23829:67;23893:2;23888:3;23829:67;:::i;:::-;23822:74;;23905:93;23994:3;23905:93;:::i;:::-;24023:2;24018:3;24014:12;24007:19;;23666:366;;;:::o;24038:419::-;24204:4;24242:2;24231:9;24227:18;24219:26;;24291:9;24285:4;24281:20;24277:1;24266:9;24262:17;24255:47;24319:131;24445:4;24319:131;:::i;:::-;24311:139;;24038:419;;;:::o;24463:174::-;24603:26;24599:1;24591:6;24587:14;24580:50;24463:174;:::o;24643:366::-;24785:3;24806:67;24870:2;24865:3;24806:67;:::i;:::-;24799:74;;24882:93;24971:3;24882:93;:::i;:::-;25000:2;24995:3;24991:12;24984:19;;24643:366;;;:::o;25015:419::-;25181:4;25219:2;25208:9;25204:18;25196:26;;25268:9;25262:4;25258:20;25254:1;25243:9;25239:17;25232:47;25296:131;25422:4;25296:131;:::i;:::-;25288:139;;25015:419;;;:::o;25440:293::-;25580:34;25576:1;25568:6;25564:14;25557:58;25649:34;25644:2;25636:6;25632:15;25625:59;25718:7;25713:2;25705:6;25701:15;25694:32;25440:293;:::o;25739:366::-;25881:3;25902:67;25966:2;25961:3;25902:67;:::i;:::-;25895:74;;25978:93;26067:3;25978:93;:::i;:::-;26096:2;26091:3;26087:12;26080:19;;25739:366;;;:::o;26111:419::-;26277:4;26315:2;26304:9;26300:18;26292:26;;26364:9;26358:4;26354:20;26350:1;26339:9;26335:17;26328:47;26392:131;26518:4;26392:131;:::i;:::-;26384:139;;26111:419;;;:::o;26536:224::-;26676:34;26672:1;26664:6;26660:14;26653:58;26745:7;26740:2;26732:6;26728:15;26721:32;26536:224;:::o;26766:366::-;26908:3;26929:67;26993:2;26988:3;26929:67;:::i;:::-;26922:74;;27005:93;27094:3;27005:93;:::i;:::-;27123:2;27118:3;27114:12;27107:19;;26766:366;;;:::o;27138:419::-;27304:4;27342:2;27331:9;27327:18;27319:26;;27391:9;27385:4;27381:20;27377:1;27366:9;27362:17;27355:47;27419:131;27545:4;27419:131;:::i;:::-;27411:139;;27138:419;;;:::o;27563:166::-;27703:18;27699:1;27691:6;27687:14;27680:42;27563:166;:::o;27735:366::-;27877:3;27898:67;27962:2;27957:3;27898:67;:::i;:::-;27891:74;;27974:93;28063:3;27974:93;:::i;:::-;28092:2;28087:3;28083:12;28076:19;;27735:366;;;:::o;28107:419::-;28273:4;28311:2;28300:9;28296:18;28288:26;;28360:9;28354:4;28350:20;28346:1;28335:9;28331:17;28324:47;28388:131;28514:4;28388:131;:::i;:::-;28380:139;;28107:419;;;:::o;28532:180::-;28580:77;28577:1;28570:88;28677:4;28674:1;28667:15;28701:4;28698:1;28691:15;28718:233;28757:3;28780:24;28798:5;28780:24;:::i;:::-;28771:33;;28826:66;28819:5;28816:77;28813:103;;28896:18;;:::i;:::-;28813:103;28943:1;28936:5;28932:13;28925:20;;28718:233;;;:::o;28957:221::-;29097:34;29093:1;29085:6;29081:14;29074:58;29166:4;29161:2;29153:6;29149:15;29142:29;28957:221;:::o;29184:366::-;29326:3;29347:67;29411:2;29406:3;29347:67;:::i;:::-;29340:74;;29423:93;29512:3;29423:93;:::i;:::-;29541:2;29536:3;29532:12;29525:19;;29184:366;;;:::o;29556:419::-;29722:4;29760:2;29749:9;29745:18;29737:26;;29809:9;29803:4;29799:20;29795:1;29784:9;29780:17;29773:47;29837:131;29963:4;29837:131;:::i;:::-;29829:139;;29556:419;;;:::o;29981:184::-;30080:11;30114:6;30109:3;30102:19;30154:4;30149:3;30145:14;30130:29;;29981:184;;;;:::o;30171:102::-;30240:4;30263:3;30255:11;;30171:102;;;:::o;30279:108::-;30356:24;30374:5;30356:24;:::i;:::-;30351:3;30344:37;30279:108;;:::o;30393:179::-;30462:10;30483:46;30525:3;30517:6;30483:46;:::i;:::-;30561:4;30556:3;30552:14;30538:28;;30393:179;;;;:::o;30578:122::-;30630:5;30655:39;30690:2;30685:3;30681:12;30676:3;30655:39;:::i;:::-;30646:48;;30578:122;;;;:::o;30706:115::-;30778:4;30810;30805:3;30801:14;30793:22;;30706:115;;;:::o;30857:699::-;30986:3;31009:86;31088:6;31083:3;31009:86;:::i;:::-;31002:93;;31119:58;31171:5;31119:58;:::i;:::-;31200:7;31231:1;31216:315;31241:6;31238:1;31235:13;31216:315;;;31311:42;31346:6;31337:7;31311:42;:::i;:::-;31373:63;31432:3;31417:13;31373:63;:::i;:::-;31366:70;;31459:62;31514:6;31459:62;:::i;:::-;31449:72;;31276:255;31263:1;31260;31256:9;31251:14;;31216:315;;;31220:14;31547:3;31540:10;;30991:565;;30857:699;;;;;:::o;31562:491::-;31737:4;31775:2;31764:9;31760:18;31752:26;;31824:9;31818:4;31814:20;31810:1;31799:9;31795:17;31788:47;31852:118;31965:4;31956:6;31948;31852:118;:::i;:::-;31844:126;;31980:66;32042:2;32031:9;32027:18;32018:6;31980:66;:::i;:::-;31562:491;;;;;;:::o;32059:180::-;32199:32;32195:1;32187:6;32183:14;32176:56;32059:180;:::o;32245:366::-;32387:3;32408:67;32472:2;32467:3;32408:67;:::i;:::-;32401:74;;32484:93;32573:3;32484:93;:::i;:::-;32602:2;32597:3;32593:12;32586:19;;32245:366;;;:::o;32617:419::-;32783:4;32821:2;32810:9;32806:18;32798:26;;32870:9;32864:4;32860:20;32856:1;32845:9;32841:17;32834:47;32898:131;33024:4;32898:131;:::i;:::-;32890:139;;32617:419;;;:::o;33042:241::-;33182:34;33178:1;33170:6;33166:14;33159:58;33251:24;33246:2;33238:6;33234:15;33227:49;33042:241;:::o;33289:366::-;33431:3;33452:67;33516:2;33511:3;33452:67;:::i;:::-;33445:74;;33528:93;33617:3;33528:93;:::i;:::-;33646:2;33641:3;33637:12;33630:19;;33289:366;;;:::o;33661:419::-;33827:4;33865:2;33854:9;33850:18;33842:26;;33914:9;33908:4;33904:20;33900:1;33889:9;33885:17;33878:47;33942:131;34068:4;33942:131;:::i;:::-;33934:139;;33661:419;;;:::o;34086:225::-;34226:34;34222:1;34214:6;34210:14;34203:58;34295:8;34290:2;34282:6;34278:15;34271:33;34086:225;:::o;34317:366::-;34459:3;34480:67;34544:2;34539:3;34480:67;:::i;:::-;34473:74;;34556:93;34645:3;34556:93;:::i;:::-;34674:2;34669:3;34665:12;34658:19;;34317:366;;;:::o;34689:419::-;34855:4;34893:2;34882:9;34878:18;34870:26;;34942:9;34936:4;34932:20;34928:1;34917:9;34913:17;34906:47;34970:131;35096:4;34970:131;:::i;:::-;34962:139;;34689:419;;;:::o;35114:223::-;35254:34;35250:1;35242:6;35238:14;35231:58;35323:6;35318:2;35310:6;35306:15;35299:31;35114:223;:::o;35343:366::-;35485:3;35506:67;35570:2;35565:3;35506:67;:::i;:::-;35499:74;;35582:93;35671:3;35582:93;:::i;:::-;35700:2;35695:3;35691:12;35684:19;;35343:366;;;:::o;35715:419::-;35881:4;35919:2;35908:9;35904:18;35896:26;;35968:9;35962:4;35958:20;35954:1;35943:9;35939:17;35932:47;35996:131;36122:4;35996:131;:::i;:::-;35988:139;;35715:419;;;:::o;36140:221::-;36280:34;36276:1;36268:6;36264:14;36257:58;36349:4;36344:2;36336:6;36332:15;36325:29;36140:221;:::o;36367:366::-;36509:3;36530:67;36594:2;36589:3;36530:67;:::i;:::-;36523:74;;36606:93;36695:3;36606:93;:::i;:::-;36724:2;36719:3;36715:12;36708:19;;36367:366;;;:::o;36739:419::-;36905:4;36943:2;36932:9;36928:18;36920:26;;36992:9;36986:4;36982:20;36978:1;36967:9;36963:17;36956:47;37020:131;37146:4;37020:131;:::i;:::-;37012:139;;36739:419;;;:::o;37164:224::-;37304:34;37300:1;37292:6;37288:14;37281:58;37373:7;37368:2;37360:6;37356:15;37349:32;37164:224;:::o;37394:366::-;37536:3;37557:67;37621:2;37616:3;37557:67;:::i;:::-;37550:74;;37633:93;37722:3;37633:93;:::i;:::-;37751:2;37746:3;37742:12;37735:19;;37394:366;;;:::o;37766:419::-;37932:4;37970:2;37959:9;37955:18;37947:26;;38019:9;38013:4;38009:20;38005:1;37994:9;37990:17;37983:47;38047:131;38173:4;38047:131;:::i;:::-;38039:139;;37766:419;;;:::o;38191:222::-;38331:34;38327:1;38319:6;38315:14;38308:58;38400:5;38395:2;38387:6;38383:15;38376:30;38191:222;:::o;38419:366::-;38561:3;38582:67;38646:2;38641:3;38582:67;:::i;:::-;38575:74;;38658:93;38747:3;38658:93;:::i;:::-;38776:2;38771:3;38767:12;38760:19;;38419:366;;;:::o;38791:419::-;38957:4;38995:2;38984:9;38980:18;38972:26;;39044:9;39038:4;39034:20;39030:1;39019:9;39015:17;39008:47;39072:131;39198:4;39072:131;:::i;:::-;39064:139;;38791:419;;;:::o;39216:157::-;39356:9;39352:1;39344:6;39340:14;39333:33;39216:157;:::o;39379:365::-;39521:3;39542:66;39606:1;39601:3;39542:66;:::i;:::-;39535:73;;39617:93;39706:3;39617:93;:::i;:::-;39735:2;39730:3;39726:12;39719:19;;39379:365;;;:::o;39750:419::-;39916:4;39954:2;39943:9;39939:18;39931:26;;40003:9;39997:4;39993:20;39989:1;39978:9;39974:17;39967:47;40031:131;40157:4;40031:131;:::i;:::-;40023:139;;39750:419;;;:::o;40175:176::-;40315:28;40311:1;40303:6;40299:14;40292:52;40175:176;:::o;40357:366::-;40499:3;40520:67;40584:2;40579:3;40520:67;:::i;:::-;40513:74;;40596:93;40685:3;40596:93;:::i;:::-;40714:2;40709:3;40705:12;40698:19;;40357:366;;;:::o;40729:419::-;40895:4;40933:2;40922:9;40918:18;40910:26;;40982:9;40976:4;40972:20;40968:1;40957:9;40953:17;40946:47;41010:131;41136:4;41010:131;:::i;:::-;41002:139;;40729:419;;;:::o;41154:173::-;41294:25;41290:1;41282:6;41278:14;41271:49;41154:173;:::o;41333:366::-;41475:3;41496:67;41560:2;41555:3;41496:67;:::i;:::-;41489:74;;41572:93;41661:3;41572:93;:::i;:::-;41690:2;41685:3;41681:12;41674:19;;41333:366;;;:::o;41705:419::-;41871:4;41909:2;41898:9;41894:18;41886:26;;41958:9;41952:4;41948:20;41944:1;41933:9;41929:17;41922:47;41986:131;42112:4;41986:131;:::i;:::-;41978:139;;41705:419;;;:::o;42130:240::-;42270:34;42266:1;42258:6;42254:14;42247:58;42339:23;42334:2;42326:6;42322:15;42315:48;42130:240;:::o;42376:366::-;42518:3;42539:67;42603:2;42598:3;42539:67;:::i;:::-;42532:74;;42615:93;42704:3;42615:93;:::i;:::-;42733:2;42728:3;42724:12;42717:19;;42376:366;;;:::o;42748:419::-;42914:4;42952:2;42941:9;42937:18;42929:26;;43001:9;42995:4;42991:20;42987:1;42976:9;42972:17;42965:47;43029:131;43155:4;43029:131;:::i;:::-;43021:139;;42748:419;;;:::o;43173:177::-;43313:29;43309:1;43301:6;43297:14;43290:53;43173:177;:::o;43356:366::-;43498:3;43519:67;43583:2;43578:3;43519:67;:::i;:::-;43512:74;;43595:93;43684:3;43595:93;:::i;:::-;43713:2;43708:3;43704:12;43697:19;;43356:366;;;:::o;43728:419::-;43894:4;43932:2;43921:9;43917:18;43909:26;;43981:9;43975:4;43971:20;43967:1;43956:9;43952:17;43945:47;44009:131;44135:4;44009:131;:::i;:::-;44001:139;;43728:419;;;:::o;44153:241::-;44293:34;44289:1;44281:6;44277:14;44270:58;44362:24;44357:2;44349:6;44345:15;44338:49;44153:241;:::o;44400:366::-;44542:3;44563:67;44627:2;44622:3;44563:67;:::i;:::-;44556:74;;44639:93;44728:3;44639:93;:::i;:::-;44757:2;44752:3;44748:12;44741:19;;44400:366;;;:::o;44772:419::-;44938:4;44976:2;44965:9;44961:18;44953:26;;45025:9;45019:4;45015:20;45011:1;45000:9;44996:17;44989:47;45053:131;45179:4;45053:131;:::i;:::-;45045:139;;44772:419;;;:::o;45197:194::-;45237:4;45257:20;45275:1;45257:20;:::i;:::-;45252:25;;45291:20;45309:1;45291:20;:::i;:::-;45286:25;;45335:1;45332;45328:9;45320:17;;45359:1;45353:4;45350:11;45347:37;;;45364:18;;:::i;:::-;45347:37;45197:194;;;;:::o;45397:225::-;45537:34;45533:1;45525:6;45521:14;45514:58;45606:8;45601:2;45593:6;45589:15;45582:33;45397:225;:::o;45628:366::-;45770:3;45791:67;45855:2;45850:3;45791:67;:::i;:::-;45784:74;;45867:93;45956:3;45867:93;:::i;:::-;45985:2;45980:3;45976:12;45969:19;;45628:366;;;:::o;46000:419::-;46166:4;46204:2;46193:9;46189:18;46181:26;;46253:9;46247:4;46243:20;46239:1;46228:9;46224:17;46217:47;46281:131;46407:4;46281:131;:::i;:::-;46273:139;;46000:419;;;:::o;46425:143::-;46482:5;46513:6;46507:13;46498:22;;46529:33;46556:5;46529:33;:::i;:::-;46425:143;;;;:::o;46574:351::-;46644:6;46693:2;46681:9;46672:7;46668:23;46664:32;46661:119;;;46699:79;;:::i;:::-;46661:119;46819:1;46844:64;46900:7;46891:6;46880:9;46876:22;46844:64;:::i;:::-;46834:74;;46790:128;46574:351;;;;:::o;46931:85::-;46976:7;47005:5;46994:16;;46931:85;;;:::o;47022:158::-;47080:9;47113:61;47131:42;47140:32;47166:5;47140:32;:::i;:::-;47131:42;:::i;:::-;47113:61;:::i;:::-;47100:74;;47022:158;;;:::o;47186:147::-;47281:45;47320:5;47281:45;:::i;:::-;47276:3;47269:58;47186:147;;:::o;47339:114::-;47406:6;47440:5;47434:12;47424:22;;47339:114;;;:::o;47459:132::-;47526:4;47549:3;47541:11;;47579:4;47574:3;47570:14;47562:22;;47459:132;;;:::o;47597:113::-;47667:4;47699;47694:3;47690:14;47682:22;;47597:113;;;:::o;47746:732::-;47865:3;47894:54;47942:5;47894:54;:::i;:::-;47964:86;48043:6;48038:3;47964:86;:::i;:::-;47957:93;;48074:56;48124:5;48074:56;:::i;:::-;48153:7;48184:1;48169:284;48194:6;48191:1;48188:13;48169:284;;;48270:6;48264:13;48297:63;48356:3;48341:13;48297:63;:::i;:::-;48290:70;;48383:60;48436:6;48383:60;:::i;:::-;48373:70;;48229:224;48216:1;48213;48209:9;48204:14;;48169:284;;;48173:14;48469:3;48462:10;;47870:608;;;47746:732;;;;:::o;48484:831::-;48747:4;48785:3;48774:9;48770:19;48762:27;;48799:71;48867:1;48856:9;48852:17;48843:6;48799:71;:::i;:::-;48880:80;48956:2;48945:9;48941:18;48932:6;48880:80;:::i;:::-;49007:9;49001:4;48997:20;48992:2;48981:9;48977:18;48970:48;49035:108;49138:4;49129:6;49035:108;:::i;:::-;49027:116;;49153:72;49221:2;49210:9;49206:18;49197:6;49153:72;:::i;:::-;49235:73;49303:3;49292:9;49288:19;49279:6;49235:73;:::i;:::-;48484:831;;;;;;;;:::o
Swarm Source
ipfs://de9d0e30390bc5380c68f6cd338492604bf8c8f2e6a5fcc7f841b6612bc34490
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.