ERC-20
Overview
Max Total Supply
100 100
Holders
70
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OneHundredToken
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-19 */ //SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address __owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed _owner, address indexed spender, uint256 value); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } abstract contract Auth { address internal _owner; constructor(address creatorOwner) { _owner = creatorOwner; } modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; } function owner() public view returns (address) { return _owner; } function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); } function renounceOwnership() external onlyOwner { _owner = address(0); emit OwnershipTransferred(address(0)); } event OwnershipTransferred(address _owner); } contract OneHundredToken is IERC20, Auth { uint8 private constant _decimals = 18; uint256 private constant _totalSupply = 100 * (10**_decimals); string private constant _name = "100 Token"; string private constant _symbol = "100"; uint8 private antiSnipeTax1 = 10; uint8 private antiSnipeTax2 = 1; uint8 private antiSnipeBlocks1 = 1; uint8 private antiSnipeBlocks2 = 1; uint256 private _antiMevBlock = 2; uint8 private _buyTaxRate = 1; uint8 private _sellTaxRate = 1; uint16 private _taxSharesMarketing = 100; uint16 private _taxSharesLP = 0; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesLP; address payable private _walletMarketing = payable(0x7684d15B40dC791775f074da6d815Aa1f842E7CD); uint256 private _launchBlock; uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 899 / 100000; uint256 private _swapLimit = _taxSwapMin * 38 * 100; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _noFees; mapping (address => bool) private _noLimits; address private _lpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress); address private _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inTaxSwap = false; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { _lpOwner = msg.sender; uint256 airdropFunds = _totalSupply * 50 / 100; _balances[address(this)] = _totalSupply - airdropFunds; emit Transfer(address(0), address(this), _balances[address(this)]); _balances[_owner] = airdropFunds; emit Transfer(address(0), _owner, _balances[_owner]); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = true; } receive() external payable {} function totalSupply() external pure override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(msg.sender), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(sender), "Trading not open"); if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return _transferFrom(sender, recipient, amount); } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][_swapRouterAddress] = type(uint256).max; emit Approval(address(this), _swapRouterAddress, type(uint256).max); } } function addLiquidity() external payable onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP exists"); require(!_tradingOpen, "trading is open"); require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message"); require(_balances[address(this)]>0, "No tokens in contract"); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH()); _addLiquidity(_balances[address(this)], address(this).balance, false); _balances[_primaryLP] -= _swapLimit; (bool lpAddSuccess,) = _primaryLP.call(abi.encodeWithSignature("sync()")); require(lpAddSuccess, "Failed adding liquidity"); _isLP[_primaryLP] = lpAddSuccess; _openTrading(); } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lpTokenRecipient = _lpOwner; if ( autoburn ) { lpTokenRecipient = address(0); } _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function _openTrading() internal { _maxTxAmount = _totalSupply * 3 / 100; _maxWalletAmount = _totalSupply * 3 / 100; _tradingOpen = true; _launchBlock = block.number; _antiMevBlock = _antiMevBlock + _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from Zero wallet"); if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); } if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); } if ( block.number < _antiMevBlock && block.number >= _launchBlock && _isLP[sender] ) { require(recipient == tx.origin, "MEV blocked"); } if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); } uint256 _taxAmount = _calculateTax(sender, recipient, amount); uint256 _transferAmount = amount - _taxAmount; _balances[sender] = _balances[sender] - amount; _swapLimit += _taxAmount; _balances[recipient] = _balances[recipient] + _transferAmount; emit Transfer(sender, recipient, amount); return true; } function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address sender) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; } else if ( _isLP[sender] ) { if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) { taxAmount = amount * _buyTaxRate / 100; } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) { taxAmount = amount * antiSnipeTax2 / 100; } else if ( block.number >= _launchBlock) { taxAmount = amount * antiSnipeTax1 / 100; } } else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; } return taxAmount; } function exemptFromFees(address wallet) external view returns (bool) { return _noFees[wallet]; } function exemptFromLimits(address wallet) external view returns (bool) { return _noLimits[wallet]; } function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); } _noFees[ wallet ] = noFees; _noLimits[ wallet ] = noLimits; } function buyFee() external view returns(uint8) { return _buyTaxRate; } function sellFee() external view returns(uint8) { return _sellTaxRate; } function feeSplit() external view returns (uint16 marketing, uint16 LP ) { return ( _taxSharesMarketing, _taxSharesLP); } function setFees(uint8 buy, uint8 sell) external onlyOwner { require(buy + sell <= 10, "Roundtrip too high"); _buyTaxRate = buy; _sellTaxRate = sell; } function setFeeSplit(uint16 sharesAutoLP, uint16 sharesMarketing) external onlyOwner { uint16 totalShares = sharesAutoLP + sharesMarketing; require( totalShares > 0, "All cannot be 0"); _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _totalTaxShares = totalShares; } function marketingWallet() external view returns (address) { return _walletMarketing; } function updateWallets(address marketing, address LPtokens) external onlyOwner { require(!_isLP[marketing] && !_isLP[LPtokens], "LP cannot be tax wallet"); _walletMarketing = payable(marketing); _lpOwner = LPtokens; _noFees[marketing] = true; _noLimits[marketing] = true; } function maxWallet() external view returns (uint256) { return _maxWalletAmount; } function maxTransaction() external view returns (uint256) { return _maxTxAmount; } function swapAtMin() external view returns (uint256) { return _taxSwapMin; } function swapAtMax() external view returns (uint256) { return _taxSwapMax; } function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet too low"); _maxWalletAmount = newWalletAmt; } function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner { _taxSwapMin = _totalSupply * minValue / minDivider; _taxSwapMax = _totalSupply * maxValue / maxDivider; require(_taxSwapMax>=_taxSwapMin, "Min/Max error"); require(_taxSwapMax>_totalSupply / 100000, "Max too low"); require(_taxSwapMax<_totalSupply / 100, "Max too high"); } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = _swapLimit; if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2; uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP; if( _tokensToSwap > 10**_decimals ) { uint256 _ethPreSwap = address(this).balance; _balances[address(this)] += _taxTokensAvailable; _swapTaxTokensForEth(_tokensToSwap); _swapLimit -= _taxTokensAvailable; uint256 _ethSwapped = address(this).balance - _ethPreSwap; if ( _taxSharesLP > 0 ) { uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ; _approveRouter(_tokensForLP); _addLiquidity(_tokensForLP, _ethWeiAmount, false); } } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _primarySwapRouter.WETH(); _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 amount) private { _walletMarketing.transfer(amount); } function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap { require(swapTokenPercent <= 100, "Cannot swap more than 100%"); uint256 tokensToSwap = _balances[address(this)] * swapTokenPercent / 100; if (tokensToSwap > 10 ** _decimals) { _swapTaxTokensForEth(tokensToSwap); } if (sendEth) { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "No ETH"); _distributeTaxEth(address(this).balance); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSplit","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"LP","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","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":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"}],"name":"setFeeSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600a600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506001600060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff16021790555060026001556001600260006101000a81548160ff021916908360ff1602179055506001600260016101000a81548160ff021916908360ff16021790555060646002806101000a81548161ffff021916908361ffff1602179055506000600260046101000a81548161ffff021916908361ffff160217905550600260049054906101000a900461ffff1660028054906101000a900461ffff16620001189190620009bf565b600260066101000a81548161ffff021916908361ffff160217905550737684d15b40dc791775f074da6d815aa1f842e7cd600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000199919062000b67565b6064620001a7919062000bb8565b6004556012600a620001ba919062000b67565b6064620001c8919062000bb8565b600555620186a0600a6012600a620001e1919062000b67565b6064620001ef919062000bb8565b620001fb919062000bb8565b62000207919062000c32565b600655620186a06103836012600a62000221919062000b67565b60646200022f919062000bb8565b6200023b919062000bb8565b62000247919062000c32565b600755606460266006546200025d919062000bb8565b62000269919062000bb8565b600855737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160016101000a81548160ff021916908315150217905550348015620002e957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460326012600a62000383919062000b67565b606462000391919062000bb8565b6200039d919062000bb8565b620003a9919062000c32565b9050806012600a620003bc919062000b67565b6064620003ca919062000bb8565b620003d6919062000c6a565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620004b8919062000cb6565b60405180910390a380600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000605919062000cb6565b60405180910390a36001600b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000cd3565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009cc8262000982565b9150620009d98362000982565b9250828201905061ffff811115620009f657620009f562000990565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000a5b5780860481111562000a335762000a3262000990565b5b600185161562000a435780820291505b808102905062000a5385620009fc565b945062000a13565b94509492505050565b60008262000a76576001905062000b49565b8162000a86576000905062000b49565b816001811462000a9f576002811462000aaa5762000ae0565b600191505062000b49565b60ff84111562000abf5762000abe62000990565b5b8360020a91508482111562000ad95762000ad862000990565b5b5062000b49565b5060208310610133831016604e8410600b841016171562000b1a5782820a90508381111562000b145762000b1362000990565b5b62000b49565b62000b29848484600162000a09565b9250905081840481111562000b435762000b4262000990565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b748262000b50565b915062000b818362000b5a565b925062000bb07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a64565b905092915050565b600062000bc58262000b50565b915062000bd28362000b50565b925082820262000be28162000b50565b9150828204841483151762000bfc5762000bfb62000990565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c3f8262000b50565b915062000c4c8362000b50565b92508262000c5f5762000c5e62000c03565b5b828204905092915050565b600062000c778262000b50565b915062000c848362000b50565b925082820390508181111562000c9f5762000c9e62000990565b5b92915050565b62000cb08162000b50565b82525050565b600060208201905062000ccd600083018462000ca5565b92915050565b614c008062000ce36000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136a8565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613763565b61075e565b60405161023c91906137be565b60405180910390f35b34801561025157600080fd5b5061025a610850565b60405161026791906137e8565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613803565b610871565b6040516102a491906137be565b60405180910390f35b3480156102b957600080fd5b506102c2610a7b565b6040516102cf9190613872565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906138e5565b610a92565b005b34801561030d57600080fd5b50610316610c78565b6040516103239190613872565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e919061395f565b610c81565b005b34801561036157600080fd5b5061036a610e39565b60405161037791906137e8565b60405180910390f35b34801561038c57600080fd5b50610395610e43565b6040516103a29190613872565b60405180910390f35b3480156103b757600080fd5b506103c0610e5a565b6040516103cd91906137e8565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f8919061399f565b610e64565b005b34801561040b57600080fd5b50610426600480360381019061042191906139df565b610f7e565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a32565b61115b565b60405161045c91906137be565b60405180910390f35b34801561047157600080fd5b5061047a6111b1565b604051610488929190613a6e565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a32565b6111dc565b6040516104c591906137e8565b60405180910390f35b3480156104da57600080fd5b506104e3611225565b005b3480156104f157600080fd5b506104fa61132e565b6040516105079190613aa6565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a32565b611358565b60405161054491906137be565b60405180910390f35b34801561055957600080fd5b506105626113ae565b60405161056f9190613aa6565b60405180910390f35b34801561058457600080fd5b5061058d6113d7565b60405161059a91906136a8565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613afd565b611414565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613763565b611647565b60405161060091906137be565b60405180910390f35b34801561061557600080fd5b5061061e6116a4565b60405161062b91906137e8565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b64565b6116ae565b60405161066891906137e8565b60405180910390f35b610679611735565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b64565b611e22565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613be2565b6120c9565b005b3480156106d957600080fd5b506106f460048036038101906106ef919061395f565b6121d1565b005b34801561070257600080fd5b5061070b612311565b60405161071891906137e8565b60405180910390f35b60606040518060400160405280600981526020017f31303020546f6b656e0000000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e91906137e8565b60405180910390a36001905092915050565b60006012600a6108609190613d71565b606461086c9190613dbc565b905090565b600061087c8461231b565b6108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b290613e4a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a675781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109e69190613e6a565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a728484846123f6565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790613eea565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990613f56565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd49190613dbc565b610bde9190613fa5565b90506012600a610bee9190613d71565b811115610bff57610bfe81612982565b5b8115610c5857600047905060008111610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490614022565b60405180910390fd5b610c5647612ba1565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006012905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690613eea565b60405180910390fd5b600060016103e88461ffff166012600a610d299190613d71565b6064610d359190613dbc565b610d3f9190613dbc565b610d499190613fa5565b610d539190614042565b9050600454811015610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d91906140c2565b60405180910390fd5b80600481905550600060016103e88461ffff166012600a610dbb9190613d71565b6064610dc79190613dbc565b610dd19190613dbc565b610ddb9190613fa5565b610de59190614042565b9050600554811015610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e239061412e565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee990613eea565b60405180910390fd5b600a8183610f00919061414e565b60ff161115610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b906141cf565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100390613eea565b60405180910390fd5b80806110155750815b156110a857601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e9061423b565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa90613eea565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516113249190613aa6565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f3130300000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990613eea565b60405180910390fd5b8263ffffffff168463ffffffff166012600a6114be9190613d71565b60646114ca9190613dbc565b6114d49190613dbc565b6114de9190613fa5565b6006819055508063ffffffff168263ffffffff166012600a6115009190613d71565b606461150c9190613dbc565b6115169190613dbc565b6115209190613fa5565b600781905550600654600754101561156d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611564906142a7565b60405180910390fd5b620186a06012600a61157f9190613d71565b606461158b9190613dbc565b6115959190613fa5565b600754116115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90614313565b60405180910390fd5b60646012600a6115e89190613d71565b60646115f49190613dbc565b6115fe9190613fa5565b60075410611641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116389061437f565b60405180910390fd5b50505050565b60006116523361231b565b611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890613e4a565b60405180910390fd5b61169c3384846123f6565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90613eea565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611866906143eb565b60405180910390fd5b601160009054906101000a900460ff16156118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b690614457565b60405180910390fd5b60003411806118ce5750600047115b61190d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611904906144c3565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119869061452f565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a209190614564565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acd9190614564565b6040518363ffffffff1660e01b8152600401611aea929190614591565b6020604051808303816000875af1158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d9190614564565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bb8600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c0d565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c2b9190613e6a565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611cfd9190614601565b6000604051808303816000865af19150503d8060008114611d3a576040519150601f19603f3d011682016040523d82523d6000602084013e611d3f565b606091505b5050905080611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90614664565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e04612cfb565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea790613eea565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f545750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8a906146d0565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e90613eea565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121c6919061474f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461225f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225690613eea565b60405180910390fd5b6000818361226d919061476a565b905060008161ffff16116122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad906147ec565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff161561234057600190506123ed565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123e25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123ec57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614858565b60405180910390fd5b601160009054906101000a900460ff1661255c57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561251c5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290613e4a565b60405180910390fd5b5b601160019054906101000a900460ff161580156125c25750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125d0576125cf612ddf565b5b600154431080156125e357506003544310155b80156126385750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126ac573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a2906148c4565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561271457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561276c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127bc5761277c848484612fe7565b6127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290614930565b60405180910390fd5b5b60006127c985858561317e565b9050600081846127d99190613e6a565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128269190613e6a565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816008600082825461287b9190614042565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128cd9190614042565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161296d91906137e8565b60405180910390a36001925050509392505050565b61298b8161342e565b6000600267ffffffffffffffff8111156129a8576129a7614950565b5b6040519080825280602002602001820160405280156129d65781602001602082028036833780820191505090505b50905030816000815181106129ee576129ed61497f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab99190614564565b81600181518110612acd57612acc61497f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b6b959493929190614aa7565b600060405180830381600087803b158015612b8557600080fd5b505af1158015612b99573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c09573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c3f57600090505b612c488461342e565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612caf96959493929190614b01565b60606040518083038185885af1158015612ccd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612cf29190614b77565b50505050505050565b606460036012600a612d0d9190613d71565b6064612d199190613dbc565b612d239190613dbc565b612d2d9190613fa5565b600481905550606460036012600a612d459190613d71565b6064612d519190613dbc565b612d5b9190613dbc565b612d659190613fa5565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612dc39190614042565b612dcd9190614042565b612dd79190614042565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e1f5750601160009054906101000a900460ff165b15612fc9576007548110612e335760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e6b9190613dbc565b612e759190613fa5565b612e7f9190613fa5565b905060008183612e8f9190613e6a565b90506012600a612e9f9190613d71565b811115612fad57600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612efa9190614042565b92505081905550612f0a82612982565b8360086000828254612f1c9190613e6a565b9250508190555060008147612f319190613e6a565b90506000600260049054906101000a900461ffff1661ffff161115612faa576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612f879190613dbc565b612f919190613fa5565b9050612f9c8561342e565b612fa885826000612c0d565b505b50505b60004790506000811115612fc557612fc481612ba1565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156130545750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130aa5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613173576004548311156130c25760009050613172565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613167575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131659190614042565b115b1561317157600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806131e65750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061323a5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132485760009050613423565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133a257600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132cd9190614042565b6132d79190614042565b431061330e576064600260009054906101000a900460ff1660ff16846132fd9190613dbc565b6133079190613fa5565b905061339d565b600060169054906101000a900460ff1660ff1660035461332e9190614042565b4310613365576064600060159054906101000a900460ff1660ff16846133549190613dbc565b61335e9190613fa5565b905061339c565b600354431061339b576064600060149054906101000a900460ff1660ff168461338e9190613dbc565b6133989190613fa5565b90505b5b5b613422565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613421576064600260019054906101000a900460ff1660ff16846134149190613dbc565b61341e9190613fa5565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613615577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161360c91906137e8565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015613652578082015181840152602081019050613637565b60008484015250505050565b6000601f19601f8301169050919050565b600061367a82613618565b6136848185613623565b9350613694818560208601613634565b61369d8161365e565b840191505092915050565b600060208201905081810360008301526136c2818461366f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136fa826136cf565b9050919050565b61370a816136ef565b811461371557600080fd5b50565b60008135905061372781613701565b92915050565b6000819050919050565b6137408161372d565b811461374b57600080fd5b50565b60008135905061375d81613737565b92915050565b6000806040838503121561377a576137796136ca565b5b600061378885828601613718565b92505060206137998582860161374e565b9150509250929050565b60008115159050919050565b6137b8816137a3565b82525050565b60006020820190506137d360008301846137af565b92915050565b6137e28161372d565b82525050565b60006020820190506137fd60008301846137d9565b92915050565b60008060006060848603121561381c5761381b6136ca565b5b600061382a86828701613718565b935050602061383b86828701613718565b925050604061384c8682870161374e565b9150509250925092565b600060ff82169050919050565b61386c81613856565b82525050565b60006020820190506138876000830184613863565b92915050565b61389681613856565b81146138a157600080fd5b50565b6000813590506138b38161388d565b92915050565b6138c2816137a3565b81146138cd57600080fd5b50565b6000813590506138df816138b9565b92915050565b600080604083850312156138fc576138fb6136ca565b5b600061390a858286016138a4565b925050602061391b858286016138d0565b9150509250929050565b600061ffff82169050919050565b61393c81613925565b811461394757600080fd5b50565b60008135905061395981613933565b92915050565b60008060408385031215613976576139756136ca565b5b60006139848582860161394a565b92505060206139958582860161394a565b9150509250929050565b600080604083850312156139b6576139b56136ca565b5b60006139c4858286016138a4565b92505060206139d5858286016138a4565b9150509250929050565b6000806000606084860312156139f8576139f76136ca565b5b6000613a0686828701613718565b9350506020613a17868287016138d0565b9250506040613a28868287016138d0565b9150509250925092565b600060208284031215613a4857613a476136ca565b5b6000613a5684828501613718565b91505092915050565b613a6881613925565b82525050565b6000604082019050613a836000830185613a5f565b613a906020830184613a5f565b9392505050565b613aa0816136ef565b82525050565b6000602082019050613abb6000830184613a97565b92915050565b600063ffffffff82169050919050565b613ada81613ac1565b8114613ae557600080fd5b50565b600081359050613af781613ad1565b92915050565b60008060008060808587031215613b1757613b166136ca565b5b6000613b2587828801613ae8565b9450506020613b3687828801613ae8565b9350506040613b4787828801613ae8565b9250506060613b5887828801613ae8565b91505092959194509250565b60008060408385031215613b7b57613b7a6136ca565b5b6000613b8985828601613718565b9250506020613b9a85828601613718565b9150509250929050565b6000613baf826136cf565b9050919050565b613bbf81613ba4565b8114613bca57600080fd5b50565b600081359050613bdc81613bb6565b92915050565b600060208284031215613bf857613bf76136ca565b5b6000613c0684828501613bcd565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613c9557808604811115613c7157613c70613c0f565b5b6001851615613c805780820291505b8081029050613c8e85613c3e565b9450613c55565b94509492505050565b600082613cae5760019050613d6a565b81613cbc5760009050613d6a565b8160018114613cd25760028114613cdc57613d0b565b6001915050613d6a565b60ff841115613cee57613ced613c0f565b5b8360020a915084821115613d0557613d04613c0f565b5b50613d6a565b5060208310610133831016604e8410600b8410161715613d405782820a905083811115613d3b57613d3a613c0f565b5b613d6a565b613d4d8484846001613c4b565b92509050818404811115613d6457613d63613c0f565b5b81810290505b9392505050565b6000613d7c8261372d565b9150613d8783613856565b9250613db47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c9e565b905092915050565b6000613dc78261372d565b9150613dd28361372d565b9250828202613de08161372d565b91508282048414831517613df757613df6613c0f565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e34601083613623565b9150613e3f82613dfe565b602082019050919050565b60006020820190508181036000830152613e6381613e27565b9050919050565b6000613e758261372d565b9150613e808361372d565b9250828203905081811115613e9857613e97613c0f565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613ed4601883613623565b9150613edf82613e9e565b602082019050919050565b60006020820190508181036000830152613f0381613ec7565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f40601a83613623565b9150613f4b82613f0a565b602082019050919050565b60006020820190508181036000830152613f6f81613f33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fb08261372d565b9150613fbb8361372d565b925082613fcb57613fca613f76565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b600061400c600683613623565b915061401782613fd6565b602082019050919050565b6000602082019050818103600083015261403b81613fff565b9050919050565b600061404d8261372d565b91506140588361372d565b92508282019050808211156140705761406f613c0f565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140ac600a83613623565b91506140b782614076565b602082019050919050565b600060208201905081810360008301526140db8161409f565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000614118600e83613623565b9150614123826140e2565b602082019050919050565b600060208201905081810360008301526141478161410b565b9050919050565b600061415982613856565b915061416483613856565b9250828201905060ff81111561417d5761417c613c0f565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141b9601283613623565b91506141c482614183565b602082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614225601083613623565b9150614230826141ef565b602082019050919050565b6000602082019050818103600083015261425481614218565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b6000614291600d83613623565b915061429c8261425b565b602082019050919050565b600060208201905081810360008301526142c081614284565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b60006142fd600b83613623565b9150614308826142c7565b602082019050919050565b6000602082019050818103600083015261432c816142f0565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614369600c83613623565b915061437482614333565b602082019050919050565b600060208201905081810360008301526143988161435c565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143d5600983613623565b91506143e08261439f565b602082019050919050565b60006020820190508181036000830152614404816143c8565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614441600f83613623565b915061444c8261440b565b602082019050919050565b6000602082019050818103600083015261447081614434565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144ad601d83613623565b91506144b882614477565b602082019050919050565b600060208201905081810360008301526144dc816144a0565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000614519601583613623565b9150614524826144e3565b602082019050919050565b600060208201905081810360008301526145488161450c565b9050919050565b60008151905061455e81613701565b92915050565b60006020828403121561457a576145796136ca565b5b60006145888482850161454f565b91505092915050565b60006040820190506145a66000830185613a97565b6145b36020830184613a97565b9392505050565b600081519050919050565b600081905092915050565b60006145db826145ba565b6145e581856145c5565b93506145f5818560208601613634565b80840191505092915050565b600061460d82846145d0565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b600061464e601783613623565b915061465982614618565b602082019050919050565b6000602082019050818103600083015261467d81614641565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146ba601783613623565b91506146c582614684565b602082019050919050565b600060208201905081810360008301526146e9816146ad565b9050919050565b6000819050919050565b600061471561471061470b846136cf565b6146f0565b6136cf565b9050919050565b6000614727826146fa565b9050919050565b60006147398261471c565b9050919050565b6147498161472e565b82525050565b60006020820190506147646000830184614740565b92915050565b600061477582613925565b915061478083613925565b9250828201905061ffff81111561479a57614799613c0f565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147d6600f83613623565b91506147e1826147a0565b602082019050919050565b60006020820190508181036000830152614805816147c9565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614842601d83613623565b915061484d8261480c565b602082019050919050565b6000602082019050818103600083015261487181614835565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148ae600b83613623565b91506148b982614878565b602082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061491a601183613623565b9150614925826148e4565b602082019050919050565b600060208201905081810360008301526149498161490d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149d36149ce6149c9846149ae565b6146f0565b61372d565b9050919050565b6149e3816149b8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a1e816136ef565b82525050565b6000614a308383614a15565b60208301905092915050565b6000602082019050919050565b6000614a54826149e9565b614a5e81856149f4565b9350614a6983614a05565b8060005b83811015614a9a578151614a818882614a24565b9750614a8c83614a3c565b925050600181019050614a6d565b5085935050505092915050565b600060a082019050614abc60008301886137d9565b614ac960208301876149da565b8181036040830152614adb8186614a49565b9050614aea6060830185613a97565b614af760808301846137d9565b9695505050505050565b600060c082019050614b166000830189613a97565b614b2360208301886137d9565b614b3060408301876149da565b614b3d60608301866149da565b614b4a6080830185613a97565b614b5760a08301846137d9565b979650505050505050565b600081519050614b7181613737565b92915050565b600080600060608486031215614b9057614b8f6136ca565b5b6000614b9e86828701614b62565b9350506020614baf86828701614b62565b9250506040614bc086828701614b62565b915050925092509256fea26469706673582212206d43844e4f49453f98cc9931955b7050ad0b1d0c3ca929656890225a739013a664736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136a8565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613763565b61075e565b60405161023c91906137be565b60405180910390f35b34801561025157600080fd5b5061025a610850565b60405161026791906137e8565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613803565b610871565b6040516102a491906137be565b60405180910390f35b3480156102b957600080fd5b506102c2610a7b565b6040516102cf9190613872565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906138e5565b610a92565b005b34801561030d57600080fd5b50610316610c78565b6040516103239190613872565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e919061395f565b610c81565b005b34801561036157600080fd5b5061036a610e39565b60405161037791906137e8565b60405180910390f35b34801561038c57600080fd5b50610395610e43565b6040516103a29190613872565b60405180910390f35b3480156103b757600080fd5b506103c0610e5a565b6040516103cd91906137e8565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f8919061399f565b610e64565b005b34801561040b57600080fd5b50610426600480360381019061042191906139df565b610f7e565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a32565b61115b565b60405161045c91906137be565b60405180910390f35b34801561047157600080fd5b5061047a6111b1565b604051610488929190613a6e565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a32565b6111dc565b6040516104c591906137e8565b60405180910390f35b3480156104da57600080fd5b506104e3611225565b005b3480156104f157600080fd5b506104fa61132e565b6040516105079190613aa6565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a32565b611358565b60405161054491906137be565b60405180910390f35b34801561055957600080fd5b506105626113ae565b60405161056f9190613aa6565b60405180910390f35b34801561058457600080fd5b5061058d6113d7565b60405161059a91906136a8565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613afd565b611414565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613763565b611647565b60405161060091906137be565b60405180910390f35b34801561061557600080fd5b5061061e6116a4565b60405161062b91906137e8565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b64565b6116ae565b60405161066891906137e8565b60405180910390f35b610679611735565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b64565b611e22565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613be2565b6120c9565b005b3480156106d957600080fd5b506106f460048036038101906106ef919061395f565b6121d1565b005b34801561070257600080fd5b5061070b612311565b60405161071891906137e8565b60405180910390f35b60606040518060400160405280600981526020017f31303020546f6b656e0000000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e91906137e8565b60405180910390a36001905092915050565b60006012600a6108609190613d71565b606461086c9190613dbc565b905090565b600061087c8461231b565b6108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b290613e4a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a675781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109e69190613e6a565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a728484846123f6565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790613eea565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990613f56565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd49190613dbc565b610bde9190613fa5565b90506012600a610bee9190613d71565b811115610bff57610bfe81612982565b5b8115610c5857600047905060008111610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490614022565b60405180910390fd5b610c5647612ba1565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006012905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690613eea565b60405180910390fd5b600060016103e88461ffff166012600a610d299190613d71565b6064610d359190613dbc565b610d3f9190613dbc565b610d499190613fa5565b610d539190614042565b9050600454811015610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d91906140c2565b60405180910390fd5b80600481905550600060016103e88461ffff166012600a610dbb9190613d71565b6064610dc79190613dbc565b610dd19190613dbc565b610ddb9190613fa5565b610de59190614042565b9050600554811015610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e239061412e565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee990613eea565b60405180910390fd5b600a8183610f00919061414e565b60ff161115610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b906141cf565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100390613eea565b60405180910390fd5b80806110155750815b156110a857601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e9061423b565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa90613eea565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516113249190613aa6565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f3130300000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990613eea565b60405180910390fd5b8263ffffffff168463ffffffff166012600a6114be9190613d71565b60646114ca9190613dbc565b6114d49190613dbc565b6114de9190613fa5565b6006819055508063ffffffff168263ffffffff166012600a6115009190613d71565b606461150c9190613dbc565b6115169190613dbc565b6115209190613fa5565b600781905550600654600754101561156d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611564906142a7565b60405180910390fd5b620186a06012600a61157f9190613d71565b606461158b9190613dbc565b6115959190613fa5565b600754116115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90614313565b60405180910390fd5b60646012600a6115e89190613d71565b60646115f49190613dbc565b6115fe9190613fa5565b60075410611641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116389061437f565b60405180910390fd5b50505050565b60006116523361231b565b611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890613e4a565b60405180910390fd5b61169c3384846123f6565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90613eea565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611866906143eb565b60405180910390fd5b601160009054906101000a900460ff16156118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b690614457565b60405180910390fd5b60003411806118ce5750600047115b61190d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611904906144c3565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119869061452f565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a209190614564565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acd9190614564565b6040518363ffffffff1660e01b8152600401611aea929190614591565b6020604051808303816000875af1158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d9190614564565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bb8600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c0d565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c2b9190613e6a565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611cfd9190614601565b6000604051808303816000865af19150503d8060008114611d3a576040519150601f19603f3d011682016040523d82523d6000602084013e611d3f565b606091505b5050905080611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90614664565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e04612cfb565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea790613eea565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f545750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8a906146d0565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e90613eea565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121c6919061474f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461225f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225690613eea565b60405180910390fd5b6000818361226d919061476a565b905060008161ffff16116122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad906147ec565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff161561234057600190506123ed565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123e25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123ec57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614858565b60405180910390fd5b601160009054906101000a900460ff1661255c57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561251c5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290613e4a565b60405180910390fd5b5b601160019054906101000a900460ff161580156125c25750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125d0576125cf612ddf565b5b600154431080156125e357506003544310155b80156126385750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126ac573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a2906148c4565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561271457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561276c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127bc5761277c848484612fe7565b6127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290614930565b60405180910390fd5b5b60006127c985858561317e565b9050600081846127d99190613e6a565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128269190613e6a565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816008600082825461287b9190614042565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128cd9190614042565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161296d91906137e8565b60405180910390a36001925050509392505050565b61298b8161342e565b6000600267ffffffffffffffff8111156129a8576129a7614950565b5b6040519080825280602002602001820160405280156129d65781602001602082028036833780820191505090505b50905030816000815181106129ee576129ed61497f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab99190614564565b81600181518110612acd57612acc61497f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b6b959493929190614aa7565b600060405180830381600087803b158015612b8557600080fd5b505af1158015612b99573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c09573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c3f57600090505b612c488461342e565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612caf96959493929190614b01565b60606040518083038185885af1158015612ccd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612cf29190614b77565b50505050505050565b606460036012600a612d0d9190613d71565b6064612d199190613dbc565b612d239190613dbc565b612d2d9190613fa5565b600481905550606460036012600a612d459190613d71565b6064612d519190613dbc565b612d5b9190613dbc565b612d659190613fa5565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612dc39190614042565b612dcd9190614042565b612dd79190614042565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e1f5750601160009054906101000a900460ff165b15612fc9576007548110612e335760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e6b9190613dbc565b612e759190613fa5565b612e7f9190613fa5565b905060008183612e8f9190613e6a565b90506012600a612e9f9190613d71565b811115612fad57600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612efa9190614042565b92505081905550612f0a82612982565b8360086000828254612f1c9190613e6a565b9250508190555060008147612f319190613e6a565b90506000600260049054906101000a900461ffff1661ffff161115612faa576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612f879190613dbc565b612f919190613fa5565b9050612f9c8561342e565b612fa885826000612c0d565b505b50505b60004790506000811115612fc557612fc481612ba1565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156130545750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130aa5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613173576004548311156130c25760009050613172565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613167575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131659190614042565b115b1561317157600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806131e65750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061323a5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132485760009050613423565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133a257600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132cd9190614042565b6132d79190614042565b431061330e576064600260009054906101000a900460ff1660ff16846132fd9190613dbc565b6133079190613fa5565b905061339d565b600060169054906101000a900460ff1660ff1660035461332e9190614042565b4310613365576064600060159054906101000a900460ff1660ff16846133549190613dbc565b61335e9190613fa5565b905061339c565b600354431061339b576064600060149054906101000a900460ff1660ff168461338e9190613dbc565b6133989190613fa5565b90505b5b5b613422565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613421576064600260019054906101000a900460ff1660ff16846134149190613dbc565b61341e9190613fa5565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613615577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161360c91906137e8565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015613652578082015181840152602081019050613637565b60008484015250505050565b6000601f19601f8301169050919050565b600061367a82613618565b6136848185613623565b9350613694818560208601613634565b61369d8161365e565b840191505092915050565b600060208201905081810360008301526136c2818461366f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136fa826136cf565b9050919050565b61370a816136ef565b811461371557600080fd5b50565b60008135905061372781613701565b92915050565b6000819050919050565b6137408161372d565b811461374b57600080fd5b50565b60008135905061375d81613737565b92915050565b6000806040838503121561377a576137796136ca565b5b600061378885828601613718565b92505060206137998582860161374e565b9150509250929050565b60008115159050919050565b6137b8816137a3565b82525050565b60006020820190506137d360008301846137af565b92915050565b6137e28161372d565b82525050565b60006020820190506137fd60008301846137d9565b92915050565b60008060006060848603121561381c5761381b6136ca565b5b600061382a86828701613718565b935050602061383b86828701613718565b925050604061384c8682870161374e565b9150509250925092565b600060ff82169050919050565b61386c81613856565b82525050565b60006020820190506138876000830184613863565b92915050565b61389681613856565b81146138a157600080fd5b50565b6000813590506138b38161388d565b92915050565b6138c2816137a3565b81146138cd57600080fd5b50565b6000813590506138df816138b9565b92915050565b600080604083850312156138fc576138fb6136ca565b5b600061390a858286016138a4565b925050602061391b858286016138d0565b9150509250929050565b600061ffff82169050919050565b61393c81613925565b811461394757600080fd5b50565b60008135905061395981613933565b92915050565b60008060408385031215613976576139756136ca565b5b60006139848582860161394a565b92505060206139958582860161394a565b9150509250929050565b600080604083850312156139b6576139b56136ca565b5b60006139c4858286016138a4565b92505060206139d5858286016138a4565b9150509250929050565b6000806000606084860312156139f8576139f76136ca565b5b6000613a0686828701613718565b9350506020613a17868287016138d0565b9250506040613a28868287016138d0565b9150509250925092565b600060208284031215613a4857613a476136ca565b5b6000613a5684828501613718565b91505092915050565b613a6881613925565b82525050565b6000604082019050613a836000830185613a5f565b613a906020830184613a5f565b9392505050565b613aa0816136ef565b82525050565b6000602082019050613abb6000830184613a97565b92915050565b600063ffffffff82169050919050565b613ada81613ac1565b8114613ae557600080fd5b50565b600081359050613af781613ad1565b92915050565b60008060008060808587031215613b1757613b166136ca565b5b6000613b2587828801613ae8565b9450506020613b3687828801613ae8565b9350506040613b4787828801613ae8565b9250506060613b5887828801613ae8565b91505092959194509250565b60008060408385031215613b7b57613b7a6136ca565b5b6000613b8985828601613718565b9250506020613b9a85828601613718565b9150509250929050565b6000613baf826136cf565b9050919050565b613bbf81613ba4565b8114613bca57600080fd5b50565b600081359050613bdc81613bb6565b92915050565b600060208284031215613bf857613bf76136ca565b5b6000613c0684828501613bcd565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613c9557808604811115613c7157613c70613c0f565b5b6001851615613c805780820291505b8081029050613c8e85613c3e565b9450613c55565b94509492505050565b600082613cae5760019050613d6a565b81613cbc5760009050613d6a565b8160018114613cd25760028114613cdc57613d0b565b6001915050613d6a565b60ff841115613cee57613ced613c0f565b5b8360020a915084821115613d0557613d04613c0f565b5b50613d6a565b5060208310610133831016604e8410600b8410161715613d405782820a905083811115613d3b57613d3a613c0f565b5b613d6a565b613d4d8484846001613c4b565b92509050818404811115613d6457613d63613c0f565b5b81810290505b9392505050565b6000613d7c8261372d565b9150613d8783613856565b9250613db47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c9e565b905092915050565b6000613dc78261372d565b9150613dd28361372d565b9250828202613de08161372d565b91508282048414831517613df757613df6613c0f565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e34601083613623565b9150613e3f82613dfe565b602082019050919050565b60006020820190508181036000830152613e6381613e27565b9050919050565b6000613e758261372d565b9150613e808361372d565b9250828203905081811115613e9857613e97613c0f565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613ed4601883613623565b9150613edf82613e9e565b602082019050919050565b60006020820190508181036000830152613f0381613ec7565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f40601a83613623565b9150613f4b82613f0a565b602082019050919050565b60006020820190508181036000830152613f6f81613f33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fb08261372d565b9150613fbb8361372d565b925082613fcb57613fca613f76565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b600061400c600683613623565b915061401782613fd6565b602082019050919050565b6000602082019050818103600083015261403b81613fff565b9050919050565b600061404d8261372d565b91506140588361372d565b92508282019050808211156140705761406f613c0f565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140ac600a83613623565b91506140b782614076565b602082019050919050565b600060208201905081810360008301526140db8161409f565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000614118600e83613623565b9150614123826140e2565b602082019050919050565b600060208201905081810360008301526141478161410b565b9050919050565b600061415982613856565b915061416483613856565b9250828201905060ff81111561417d5761417c613c0f565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141b9601283613623565b91506141c482614183565b602082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614225601083613623565b9150614230826141ef565b602082019050919050565b6000602082019050818103600083015261425481614218565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b6000614291600d83613623565b915061429c8261425b565b602082019050919050565b600060208201905081810360008301526142c081614284565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b60006142fd600b83613623565b9150614308826142c7565b602082019050919050565b6000602082019050818103600083015261432c816142f0565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614369600c83613623565b915061437482614333565b602082019050919050565b600060208201905081810360008301526143988161435c565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143d5600983613623565b91506143e08261439f565b602082019050919050565b60006020820190508181036000830152614404816143c8565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614441600f83613623565b915061444c8261440b565b602082019050919050565b6000602082019050818103600083015261447081614434565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144ad601d83613623565b91506144b882614477565b602082019050919050565b600060208201905081810360008301526144dc816144a0565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000614519601583613623565b9150614524826144e3565b602082019050919050565b600060208201905081810360008301526145488161450c565b9050919050565b60008151905061455e81613701565b92915050565b60006020828403121561457a576145796136ca565b5b60006145888482850161454f565b91505092915050565b60006040820190506145a66000830185613a97565b6145b36020830184613a97565b9392505050565b600081519050919050565b600081905092915050565b60006145db826145ba565b6145e581856145c5565b93506145f5818560208601613634565b80840191505092915050565b600061460d82846145d0565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b600061464e601783613623565b915061465982614618565b602082019050919050565b6000602082019050818103600083015261467d81614641565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146ba601783613623565b91506146c582614684565b602082019050919050565b600060208201905081810360008301526146e9816146ad565b9050919050565b6000819050919050565b600061471561471061470b846136cf565b6146f0565b6136cf565b9050919050565b6000614727826146fa565b9050919050565b60006147398261471c565b9050919050565b6147498161472e565b82525050565b60006020820190506147646000830184614740565b92915050565b600061477582613925565b915061478083613925565b9250828201905061ffff81111561479a57614799613c0f565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147d6600f83613623565b91506147e1826147a0565b602082019050919050565b60006020820190508181036000830152614805816147c9565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614842601d83613623565b915061484d8261480c565b602082019050919050565b6000602082019050818103600083015261487181614835565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148ae600b83613623565b91506148b982614878565b602082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061491a601183613623565b9150614925826148e4565b602082019050919050565b600060208201905081810360008301526149498161490d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149d36149ce6149c9846149ae565b6146f0565b61372d565b9050919050565b6149e3816149b8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a1e816136ef565b82525050565b6000614a308383614a15565b60208301905092915050565b6000602082019050919050565b6000614a54826149e9565b614a5e81856149f4565b9350614a6983614a05565b8060005b83811015614a9a578151614a818882614a24565b9750614a8c83614a3c565b925050600181019050614a6d565b5085935050505092915050565b600060a082019050614abc60008301886137d9565b614ac960208301876149da565b8181036040830152614adb8186614a49565b9050614aea6060830185613a97565b614af760808301846137d9565b9695505050505050565b600060c082019050614b166000830189613a97565b614b2360208301886137d9565b614b3060408301876149da565b614b3d60608301866149da565b614b4a6080830185613a97565b614b5760a08301846137d9565b979650505050505050565b600081519050614b7181613737565b92915050565b600080600060608486031215614b9057614b8f6136ca565b5b6000614b9e86828701614b62565b9350506020614baf86828701614b62565b9250506040614bc086828701614b62565b915050925092509256fea26469706673582212206d43844e4f49453f98cc9931955b7050ad0b1d0c3ca929656890225a739013a664736f6c63430008130033
Deployed Bytecode Sourcemap
2274:14252:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5280:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5618:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5010:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6075:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11648:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15954:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5104:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13277:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13083:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11558:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13179:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11883:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11300:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11062:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11742:135;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5366:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2081:137;;;;;;;;;;;;;:::i;:::-;;12418:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11179:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1831:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5190:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13747:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5842:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12979:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5477:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6812:805;;;:::i;:::-;;12527:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1918:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12074:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12878:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5280:80;5328:13;5352:5;;;;;;;;;;;;;;;;;5345:12;;5280:80;:::o;5618:216::-;5693:4;5745:6;5710:11;:23;5722:10;5710:23;;;;;;;;;;;;;;;:32;5734:7;5710:32;;;;;;;;;;;;;;;:41;;;;5788:7;5767:37;;5776:10;5767:37;;;5797:6;5767:37;;;;;;:::i;:::-;;;;;;;;5822:4;5815:11;;5618:216;;;;:::o;5010:88::-;5065:7;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;5076:19;;5010:88;:::o;6075:404::-;6175:4;6200:25;6218:6;6200:17;:25::i;:::-;6192:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6295:17;6260:11;:19;6272:6;6260:19;;;;;;;;;;;;;;;:31;6280:10;6260:31;;;;;;;;;;;;;;;;:52;6257:157;;6396:6;6362:11;:19;6374:6;6362:19;;;;;;;;;;;;;;;:31;6382:10;6362:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6328:11;:19;6340:6;6328:19;;;;;;;;;;;;;;;:31;6348:10;6328:31;;;;;;;;;;;;;;;:74;;;;6257:157;6431:40;6445:6;6453:9;6464:6;6431:13;:40::i;:::-;6424:47;;6075:404;;;;;:::o;11648:86::-;11689:5;11714:12;;;;;;;;;;;11707:19;;11648:86;:::o;15954:567::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4093:4:::1;4080:10;;:17;;;;;;;;;;;;;;;;;;16092:3:::2;16072:16;:23;;;;16064:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16137:20;16206:3;16187:16;16160:43;;:9;:24;16178:4;16160:24;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:49;;;;:::i;:::-;16137:72;;2362:2;16239;:15;;;;:::i;:::-;16224:12;:30;16220:97;;;16271:34;16292:12;16271:20;:34::i;:::-;16220:97;16331:7;16327:187;;;16356:18;16377:21;16356:42;;16434:1;16421:10;:14;16413:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;16461:40;16479:21;16461:17;:40::i;:::-;16340:174;16327:187;16053:468;4135:5:::1;4122:10;;:18;;;;;;;;;;;;;;;;;;15954:567:::0;;:::o;5104:80::-;5156:5;2362:2;5165:16;;5104:80;:::o;13277:462::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13383:16:::1;13449:1;13442:4;13417:22;13402:37;;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;13402:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;13383:67;;13481:12;;13469:8;:24;;13461:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13534:8;13519:12;:23;;;;13553:20;13618:1;13611:4;13591:17;13576:32;;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;13576:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;13553:66;;13654:16;;13638:12;:32;;13630:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13719:12;13700:16;:31;;;;13372:367;;13277:462:::0;;:::o;13083:90::-;13127:7;13154:11;;13147:18;;13083:90;:::o;11558:84::-;11598:5;11623:11;;;;;;;;;;;11616:18;;11558:84;:::o;13179:90::-;13223:7;13250:11;;13243:18;;13179:90;:::o;11883:183::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11975:2:::1;11967:4;11961:3;:10;;;;:::i;:::-;:16;;;;11953:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12025:3;12011:11;;:17;;;;;;;;;;;;;;;;;;12054:4;12039:12;;:19;;;;;;;;;;;;;;;;;;11883:183:::0;;:::o;11300:250::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11397:8:::1;:18;;;;11409:6;11397:18;11393:72;;;11428:5;:13;11434:6;11428:13;;;;;;;;;;;;;;;;;;;;;;;;;11427:14;11419:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11393:72;11495:6;11475:7;:17;11484:6;11475:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11534:8;11512:9;:19;11523:6;11512:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11300:250:::0;;;:::o;11062:110::-;11125:4;11149:7;:15;11157:6;11149:15;;;;;;;;;;;;;;;;;;;;;;;;;11142:22;;11062:110;;;:::o;11742:135::-;11785:16;11803:9;11835:19;;;;;;;;;;11856:12;;;;;;;;;;;11826:43;;;;11742:135;;:::o;5366:105::-;5432:7;5450:9;:18;5460:7;5450:18;;;;;;;;;;;;;;;;5443:25;;5366:105;;;:::o;2081:137::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2158:1:::1;2141:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2177:32;2206:1;2177:32;;;;;;:::i;:::-;;;;;;;;2081:137::o:0;12418:101::-;12468:7;12495:16;;;;;;;;;;;12488:23;;12418:101;:::o;11179:114::-;11244:4;11268:9;:17;11278:6;11268:17;;;;;;;;;;;;;;;;;;;;;;;;;11261:24;;11179:114;;;:::o;1831:81::-;1869:7;1897:6;;;;;;;;;;;1890:13;;1831:81;:::o;5190:84::-;5240:13;5264:7;;;;;;;;;;;;;;;;;5257:14;;5190:84;:::o;13747:436::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13909:10:::1;13883:36;;13898:8;13883:23;;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;13883:23;;;;:::i;:::-;:36;;;;:::i;:::-;13869:11;:50;;;;13970:10;13944:36;;13959:8;13944:23;;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;13944:23;;;;:::i;:::-;:36;;;;:::i;:::-;13930:11;:50;;;;14012:11;;13999;;:24;;13991:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14087:6;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;14072;;;;:::i;:::-;14060:11;;:33;14052:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14155:3;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;14140:18;;;;:::i;:::-;14128:11;;:30;14120:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13747:436:::0;;;;:::o;5842:225::-;5922:4;5947:29;5965:10;5947:17;:29::i;:::-;5939:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6015:44;6029:10;6041:9;6052:6;6015:13;:44::i;:::-;6008:51;;5842:225;;;;:::o;12979:96::-;13028:7;13055:12;;13048:19;;12979:96;:::o;5477:133::-;5561:7;5579:11;:19;5591:6;5579:19;;;;;;;;;;;;;;;:28;5599:7;5579:28;;;;;;;;;;;;;;;;5572:35;;5477:133;;;;:::o;6812:805::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4093:4:::1;4080:10;;:17;;;;;;;;;;;;;;;;;;6916:1:::2;6894:24;;:10;;;;;;;;;;;:24;;;6886:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6952:12;;;;;;;;;;;6951:13;6943:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7015:1;7003:9;:13;:40;;;;7042:1;7020:21;:23;7003:40;6995:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7121:1;7096:9;:24;7114:4;7096:24;;;;;;;;;;;;;;;;:26;7088:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7190:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7172:58;;;7239:4;7246:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7172:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7159:10;;:113;;;;;;;;;;;;;;;;;;7283:69;7297:9;:24;7315:4;7297:24;;;;;;;;;;;;;;;;7323:21;7346:5;7283:13;:69::i;:::-;7388:10;;7363:9;:21;7373:10;;;;;;;;;;;7363:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;7410:17;7432:10;;;;;;;;;;;:15;;7448:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7432:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7409:73;;;7501:12;7493:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7572:12;7552:5;:17;7558:10;;;;;;;;;;;7552:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7595:14;:12;:14::i;:::-;6875:742;4135:5:::1;4122:10;;:18;;;;;;;;;;;;;;;;;;6812:805::o:0;12527:343::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12626:5:::1;:16;12632:9;12626:16;;;;;;;;;;;;;;;;;;;;;;;;;12625:17;:37;;;;;12647:5;:15;12653:8;12647:15;;;;;;;;;;;;;;;;;;;;;;;;;12646:16;12625:37;12617:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12738:9;12711:16;;:37;;;;;;;;;;;;;;;;;;12770:8;12759;;:19;;;;;;;;;;;;;;;;;;12820:4;12799:7;:18;12807:9;12799:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;12858:4;12835:9;:20;12845:9;12835:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12527:343:::0;;:::o;1918:157::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2011:8:::1;2002:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2036:30;2057:8;2036:30;;;;;;:::i;:::-;;;;;;;;1918:157:::0;:::o;12074:336::-;1768:6;;;;;;;;;;1754:20;;:10;:20;;;1746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12170:18:::1;12206:15;12191:12;:30;;;;:::i;:::-;12170:51;;12255:1;12241:11;:15;;;12232:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12302:12;12287;;:27;;;;;;;;;;;;;;;;;;12347:15;12325:19;::::0;:37:::1;;;;;;;;;;;;;;;;;;12391:11;12373:15;;:29;;;;;;;;;;;;;;;;;;12159:251;12074:336:::0;;:::o;12878:95::-;12922:7;12949:16;;12942:23;;12878:95;:::o;9918:279::-;9983:4;9999:16;10018:5;9999:24;;10039:12;;;;;;;;;;;10034:124;;;10070:4;10056:18;;10034:124;;;10097:7;:15;10105:6;10097:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10116:9;:17;10126:6;10116:17;;;;;;;;;;;;;;;;;;;;;;;;;10097:36;10093:65;;;10151:4;10137:18;;10093:65;10034:124;10178:11;10171:18;;;9918:279;;;:::o;8333:1074::-;8425:4;8468:1;8450:20;;:6;:20;;;8442:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8520:12;;;;;;;;;;;8515:89;;8544:7;:15;8552:6;8544:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8563:9;:17;8573:6;8563:17;;;;;;;;;;;;;;;;;;;;;;;;;8544:36;8536:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8515:89;8620:10;;;;;;;;;;;8619:11;:31;;;;;8634:5;:16;8640:9;8634:16;;;;;;;;;;;;;;;;;;;;;;;;;8619:31;8614:64;;;8655:20;:18;:20::i;:::-;8614:64;8708:13;;8693:12;:28;:60;;;;;8741:12;;8725;:28;;8693:60;:77;;;;;8757:5;:13;8763:6;8757:13;;;;;;;;;;;;;;;;;;;;;;;;;8693:77;8688:158;;;8809:9;8796:22;;:9;:22;;;8788:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8688:158;8879:4;8861:23;;:6;:23;;;;:53;;;;;8909:4;8888:26;;:9;:26;;;;8861:53;:73;;;;;8928:6;;;;;;;;;;8918:16;;:6;:16;;;;8861:73;8856:179;;;8961:39;8974:6;8982:9;8993:6;8961:12;:39::i;:::-;8953:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;8856:179;9045:18;9066:40;9080:6;9088:9;9099:6;9066:13;:40::i;:::-;9045:61;;9117:23;9152:10;9143:6;:19;;;;:::i;:::-;9117:45;;9213:6;9193:9;:17;9203:6;9193:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9173:9;:17;9183:6;9173:17;;;;;;;;;;;;;;;:46;;;;9244:10;9230;;:24;;;;;;;:::i;:::-;;;;;;;;9311:15;9288:9;:20;9298:9;9288:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9265:9;:20;9275:9;9265:20;;;;;;;;;;;;;;;:61;;;;9359:9;9342:35;;9351:6;9342:35;;;9370:6;9342:35;;;;;;:::i;:::-;;;;;;;;9395:4;9388:11;;;;8333:1074;;;;;:::o;15469:366::-;15539:27;15554:11;15539:14;:27::i;:::-;15577:21;15615:1;15601:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15577:40;;15646:4;15628;15633:1;15628:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15672:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15662:4;15667:1;15662:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;15708:18;;;;;;;;;;;:69;;;15778:11;15790:1;15792:4;15805;15811:15;15708:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15528:307;15469:366;:::o;15843:103::-;15905:16;;;;;;;;;;;:25;;:33;15931:6;15905:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15843:103;:::o;7625:385::-;7728:24;7755:8;;;;;;;;;;;7728:35;;7779:8;7774:50;;;7819:1;7792:29;;7774:50;7834:28;7849:12;7834:14;:28::i;:::-;7873:18;;;;;;;;;;;:34;;;7915:13;7940:4;7947:12;7961:1;7964;7967:16;7985:15;7873:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7717:293;7625:385;;;:::o;8018:307::-;8100:3;8096:1;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;8081:16;;;;:::i;:::-;:22;;;;:::i;:::-;8062:12;:41;;;;8153:3;8149:1;2362:2;2418;:13;;;;:::i;:::-;2411:3;:21;;;;:::i;:::-;8134:16;;;;:::i;:::-;:22;;;;:::i;:::-;8115:16;:41;;;;8182:4;8167:12;;:19;;;;;;;;;;;;;;;;;;8212:12;8197;:27;;;;8301:16;;;;;;;;;;;8251:66;;8282:16;;;;;;;;;;;8251:47;;8267:12;;8251:13;;:28;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;8235:13;:82;;;;8018:307::o;14193:1268::-;4093:4;4080:10;;:17;;;;;;;;;;;;;;;;;;14254:27:::1;14284:10;;14254:40;;14333:11;;14310:19;:34;;:50;;;;;14348:12;;;;;;;;;;;14310:50;14305:1149;;;14406:11;;14383:19;:34;14378:80;;14444:11;;14422:33;;14378:80;14472:20;14550:1;14532:15:::0;::::1;;;;;;;;;;14495:52;;14517:12;;;;;;;;;;;14495:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;14472:79;;14580:21;14626:12;14604:19;:34;;;;:::i;:::-;14580:58;;2362:2;14673;:13;;;;:::i;:::-;14657;:29;14653:639;;;14708:19;14730:21;14708:43;;14798:19;14770:9;:24;14788:4;14770:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;14836:35;14857:13;14836:20;:35::i;:::-;14904:19;14890:10;;:33;;;;;;;:::i;:::-;;;;;;;;14942:19;14988:11;14964:21;:35;;;;:::i;:::-;14942:57;;15038:1;15023:12;;;;;;;;;;;:16;;;15018:259;;;15065:21;15118:15;;;;;;;;;;;15089:44;;15103:12;;;;;;;;;;;15089:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;15065:68;;15157:28;15172:12;15157:14;:28::i;:::-;15208:49;15222:12;15236:13;15251:5;15208:13;:49::i;:::-;15042:235;15018:259;14689:603;;14653:639;15306:27;15336:21;15306:51;;15397:1;15375:19;:23;15372:71;;;15402:38;15420:19;15402:17;:38::i;:::-;15372:71;14363:1091;;;14305:1149;14243:1218;4135:5:::0;4122:10;;:18;;;;;;;;;;;;;;;;;;14193:1268::o;9415:495::-;9519:4;9536:21;9560:4;9536:28;;9580:12;;;;;;;;;;;:34;;;;;9597:9;:17;9607:6;9597:17;;;;;;;;;;;;;;;;;;;;;;;;;9596:18;9580:34;:59;;;;;9619:9;:20;9629:9;9619:20;;;;;;;;;;;;;;;;;;;;;;;;;9618:21;9580:59;9575:294;;;9679:12;;9662:14;:29;9657:201;;;9715:5;9696:24;;9657:201;;;9748:5;:16;9754:9;9748:16;;;;;;;;;;;;;;;;;;;;;;;;;9747:17;:79;;;;;9809:16;;9792:14;9769:9;:20;9779:9;9769:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;9747:79;9742:116;;;9850:5;9831:24;;9742:116;9657:201;9575:294;9886:16;9879:23;;;9415:495;;;;;:::o;10205:847::-;10302:7;10322:17;10366:12;;;;;;;;;;;10365:13;:32;;;;10382:7;:15;10390:6;10382:15;;;;;;;;;;;;;;;;;;;;;;;;;10365:32;:54;;;;10401:7;:18;10409:9;10401:18;;;;;;;;;;;;;;;;;;;;;;;;;10365:54;10360:656;;;10450:1;10438:13;;10360:656;;;10475:5;:13;10481:6;10475:13;;;;;;;;;;;;;;;;;;;;;;;;;10470:546;;;10562:16;;;;;;;;;;;10528:50;;10543:16;;;;;;;;;;;10528:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;10512:12;:66;10507:400;;10635:3;10621:11;;;;;;;;;;;10612:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10600:38;;10507:400;;;10697:16;;;;;;;;;;;10682:31;;:12;;:31;;;;:::i;:::-;10666:12;:47;10661:246;;10772:3;10756:13;;;;;;;;;;;10747:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10735:40;;10661:246;;;10818:12;;10802;:28;10797:110;;10888:3;10872:13;;;;;;;;;;;10863:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10851:40;;10797:110;10661:246;10507:400;10470:546;;;10929:5;:16;10935:9;10929:16;;;;;;;;;;;;;;;;;;;;;;;;;10924:92;;;11000:3;10985:12;;;;;;;;;;;10976:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10964:39;;10924:92;10470:546;10360:656;11035:9;11028:16;;;10205:847;;;;;:::o;6487:317::-;6607:12;6558:11;:26;6578:4;6558:26;;;;;;;;;;;;;;;:46;3751:42;6558:46;;;;;;;;;;;;;;;;:61;6553:244;;;6686:17;6637:11;:26;6657:4;6637:26;;;;;;;;;;;;;;;:46;3751:42;6637:46;;;;;;;;;;;;;;;:66;;;;3751:42;6723:62;;6740:4;6723:62;;;6767:17;6723:62;;;;;;:::i;:::-;;;;;;;;6553:244;6487:317;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4924:22;4940:5;4924:22;:::i;:::-;4917:5;4914:33;4904:61;;4961:1;4958;4951:12;4904:61;4853:118;:::o;4977:135::-;5021:5;5059:6;5046:20;5037:29;;5075:31;5100:5;5075:31;:::i;:::-;4977:135;;;;:::o;5118:116::-;5188:21;5203:5;5188:21;:::i;:::-;5181:5;5178:32;5168:60;;5224:1;5221;5214:12;5168:60;5118:116;:::o;5240:133::-;5283:5;5321:6;5308:20;5299:29;;5337:30;5361:5;5337:30;:::i;:::-;5240:133;;;;:::o;5379:464::-;5442:6;5450;5499:2;5487:9;5478:7;5474:23;5470:32;5467:119;;;5505:79;;:::i;:::-;5467:119;5625:1;5650:51;5693:7;5684:6;5673:9;5669:22;5650:51;:::i;:::-;5640:61;;5596:115;5750:2;5776:50;5818:7;5809:6;5798:9;5794:22;5776:50;:::i;:::-;5766:60;;5721:115;5379:464;;;;;:::o;5849:89::-;5885:7;5925:6;5918:5;5914:18;5903:29;;5849:89;;;:::o;5944:120::-;6016:23;6033:5;6016:23;:::i;:::-;6009:5;6006:34;5996:62;;6054:1;6051;6044:12;5996:62;5944:120;:::o;6070:137::-;6115:5;6153:6;6140:20;6131:29;;6169:32;6195:5;6169:32;:::i;:::-;6070:137;;;;:::o;6213:470::-;6279:6;6287;6336:2;6324:9;6315:7;6311:23;6307:32;6304:119;;;6342:79;;:::i;:::-;6304:119;6462:1;6487:52;6531:7;6522:6;6511:9;6507:22;6487:52;:::i;:::-;6477:62;;6433:116;6588:2;6614:52;6658:7;6649:6;6638:9;6634:22;6614:52;:::i;:::-;6604:62;;6559:117;6213:470;;;;;:::o;6689:466::-;6753:6;6761;6810:2;6798:9;6789:7;6785:23;6781:32;6778:119;;;6816:79;;:::i;:::-;6778:119;6936:1;6961:51;7004:7;6995:6;6984:9;6980:22;6961:51;:::i;:::-;6951:61;;6907:115;7061:2;7087:51;7130:7;7121:6;7110:9;7106:22;7087:51;:::i;:::-;7077:61;;7032:116;6689:466;;;;;:::o;7161:607::-;7232:6;7240;7248;7297:2;7285:9;7276:7;7272:23;7268:32;7265:119;;;7303:79;;:::i;:::-;7265:119;7423:1;7448:53;7493:7;7484:6;7473:9;7469:22;7448:53;:::i;:::-;7438:63;;7394:117;7550:2;7576:50;7618:7;7609:6;7598:9;7594:22;7576:50;:::i;:::-;7566:60;;7521:115;7675:2;7701:50;7743:7;7734:6;7723:9;7719:22;7701:50;:::i;:::-;7691:60;;7646:115;7161:607;;;;;:::o;7774:329::-;7833:6;7882:2;7870:9;7861:7;7857:23;7853:32;7850:119;;;7888:79;;:::i;:::-;7850:119;8008:1;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7979:117;7774:329;;;;:::o;8109:115::-;8194:23;8211:5;8194:23;:::i;:::-;8189:3;8182:36;8109:115;;:::o;8230:324::-;8347:4;8385:2;8374:9;8370:18;8362:26;;8398:69;8464:1;8453:9;8449:17;8440:6;8398:69;:::i;:::-;8477:70;8543:2;8532:9;8528:18;8519:6;8477:70;:::i;:::-;8230:324;;;;;:::o;8560:118::-;8647:24;8665:5;8647:24;:::i;:::-;8642:3;8635:37;8560:118;;:::o;8684:222::-;8777:4;8815:2;8804:9;8800:18;8792:26;;8828:71;8896:1;8885:9;8881:17;8872:6;8828:71;:::i;:::-;8684:222;;;;:::o;8912:93::-;8948:7;8988:10;8981:5;8977:22;8966:33;;8912:93;;;:::o;9011:120::-;9083:23;9100:5;9083:23;:::i;:::-;9076:5;9073:34;9063:62;;9121:1;9118;9111:12;9063:62;9011:120;:::o;9137:137::-;9182:5;9220:6;9207:20;9198:29;;9236:32;9262:5;9236:32;:::i;:::-;9137:137;;;;:::o;9280:757::-;9362:6;9370;9378;9386;9435:3;9423:9;9414:7;9410:23;9406:33;9403:120;;;9442:79;;:::i;:::-;9403:120;9562:1;9587:52;9631:7;9622:6;9611:9;9607:22;9587:52;:::i;:::-;9577:62;;9533:116;9688:2;9714:52;9758:7;9749:6;9738:9;9734:22;9714:52;:::i;:::-;9704:62;;9659:117;9815:2;9841:52;9885:7;9876:6;9865:9;9861:22;9841:52;:::i;:::-;9831:62;;9786:117;9942:2;9968:52;10012:7;10003:6;9992:9;9988:22;9968:52;:::i;:::-;9958:62;;9913:117;9280:757;;;;;;;:::o;10043:474::-;10111:6;10119;10168:2;10156:9;10147:7;10143:23;10139:32;10136:119;;;10174:79;;:::i;:::-;10136:119;10294:1;10319:53;10364:7;10355:6;10344:9;10340:22;10319:53;:::i;:::-;10309:63;;10265:117;10421:2;10447:53;10492:7;10483:6;10472:9;10468:22;10447:53;:::i;:::-;10437:63;;10392:118;10043:474;;;;;:::o;10523:104::-;10568:7;10597:24;10615:5;10597:24;:::i;:::-;10586:35;;10523:104;;;:::o;10633:138::-;10714:32;10740:5;10714:32;:::i;:::-;10707:5;10704:43;10694:71;;10761:1;10758;10751:12;10694:71;10633:138;:::o;10777:155::-;10831:5;10869:6;10856:20;10847:29;;10885:41;10920:5;10885:41;:::i;:::-;10777:155;;;;:::o;10938:345::-;11005:6;11054:2;11042:9;11033:7;11029:23;11025:32;11022:119;;;11060:79;;:::i;:::-;11022:119;11180:1;11205:61;11258:7;11249:6;11238:9;11234:22;11205:61;:::i;:::-;11195:71;;11151:125;10938:345;;;;:::o;11289:180::-;11337:77;11334:1;11327:88;11434:4;11431:1;11424:15;11458:4;11455:1;11448:15;11475:102;11517:8;11564:5;11561:1;11557:13;11536:34;;11475:102;;;:::o;11583:848::-;11644:5;11651:4;11675:6;11666:15;;11699:5;11690:14;;11713:712;11734:1;11724:8;11721:15;11713:712;;;11829:4;11824:3;11820:14;11814:4;11811:24;11808:50;;;11838:18;;:::i;:::-;11808:50;11888:1;11878:8;11874:16;11871:451;;;12303:4;12296:5;12292:16;12283:25;;11871:451;12353:4;12347;12343:15;12335:23;;12383:32;12406:8;12383:32;:::i;:::-;12371:44;;11713:712;;;11583:848;;;;;;;:::o;12437:1073::-;12491:5;12682:8;12672:40;;12703:1;12694:10;;12705:5;;12672:40;12731:4;12721:36;;12748:1;12739:10;;12750:5;;12721:36;12817:4;12865:1;12860:27;;;;12901:1;12896:191;;;;12810:277;;12860:27;12878:1;12869:10;;12880:5;;;12896:191;12941:3;12931:8;12928:17;12925:43;;;12948:18;;:::i;:::-;12925:43;12997:8;12994:1;12990:16;12981:25;;13032:3;13025:5;13022:14;13019:40;;;13039:18;;:::i;:::-;13019:40;13072:5;;;12810:277;;13196:2;13186:8;13183:16;13177:3;13171:4;13168:13;13164:36;13146:2;13136:8;13133:16;13128:2;13122:4;13119:12;13115:35;13099:111;13096:246;;;13252:8;13246:4;13242:19;13233:28;;13287:3;13280:5;13277:14;13274:40;;;13294:18;;:::i;:::-;13274:40;13327:5;;13096:246;13367:42;13405:3;13395:8;13389:4;13386:1;13367:42;:::i;:::-;13352:57;;;;13441:4;13436:3;13432:14;13425:5;13422:25;13419:51;;;13450:18;;:::i;:::-;13419:51;13499:4;13492:5;13488:16;13479:25;;12437:1073;;;;;;:::o;13516:281::-;13574:5;13598:23;13616:4;13598:23;:::i;:::-;13590:31;;13642:25;13658:8;13642:25;:::i;:::-;13630:37;;13686:104;13723:66;13713:8;13707:4;13686:104;:::i;:::-;13677:113;;13516:281;;;;:::o;13803:410::-;13843:7;13866:20;13884:1;13866:20;:::i;:::-;13861:25;;13900:20;13918:1;13900:20;:::i;:::-;13895:25;;13955:1;13952;13948:9;13977:30;13995:11;13977:30;:::i;:::-;13966:41;;14156:1;14147:7;14143:15;14140:1;14137:22;14117:1;14110:9;14090:83;14067:139;;14186:18;;:::i;:::-;14067:139;13851:362;13803:410;;;;:::o;14219:166::-;14359:18;14355:1;14347:6;14343:14;14336:42;14219:166;:::o;14391:366::-;14533:3;14554:67;14618:2;14613:3;14554:67;:::i;:::-;14547:74;;14630:93;14719:3;14630:93;:::i;:::-;14748:2;14743:3;14739:12;14732:19;;14391:366;;;:::o;14763:419::-;14929:4;14967:2;14956:9;14952:18;14944:26;;15016:9;15010:4;15006:20;15002:1;14991:9;14987:17;14980:47;15044:131;15170:4;15044:131;:::i;:::-;15036:139;;14763:419;;;:::o;15188:194::-;15228:4;15248:20;15266:1;15248:20;:::i;:::-;15243:25;;15282:20;15300:1;15282:20;:::i;:::-;15277:25;;15326:1;15323;15319:9;15311:17;;15350:1;15344:4;15341:11;15338:37;;;15355:18;;:::i;:::-;15338:37;15188:194;;;;:::o;15388:174::-;15528:26;15524:1;15516:6;15512:14;15505:50;15388:174;:::o;15568:366::-;15710:3;15731:67;15795:2;15790:3;15731:67;:::i;:::-;15724:74;;15807:93;15896:3;15807:93;:::i;:::-;15925:2;15920:3;15916:12;15909:19;;15568:366;;;:::o;15940:419::-;16106:4;16144:2;16133:9;16129:18;16121:26;;16193:9;16187:4;16183:20;16179:1;16168:9;16164:17;16157:47;16221:131;16347:4;16221:131;:::i;:::-;16213:139;;15940:419;;;:::o;16365:176::-;16505:28;16501:1;16493:6;16489:14;16482:52;16365:176;:::o;16547:366::-;16689:3;16710:67;16774:2;16769:3;16710:67;:::i;:::-;16703:74;;16786:93;16875:3;16786:93;:::i;:::-;16904:2;16899:3;16895:12;16888:19;;16547:366;;;:::o;16919:419::-;17085:4;17123:2;17112:9;17108:18;17100:26;;17172:9;17166:4;17162:20;17158:1;17147:9;17143:17;17136:47;17200:131;17326:4;17200:131;:::i;:::-;17192:139;;16919:419;;;:::o;17344:180::-;17392:77;17389:1;17382:88;17489:4;17486:1;17479:15;17513:4;17510:1;17503:15;17530:185;17570:1;17587:20;17605:1;17587:20;:::i;:::-;17582:25;;17621:20;17639:1;17621:20;:::i;:::-;17616:25;;17660:1;17650:35;;17665:18;;:::i;:::-;17650:35;17707:1;17704;17700:9;17695:14;;17530:185;;;;:::o;17721:156::-;17861:8;17857:1;17849:6;17845:14;17838:32;17721:156;:::o;17883:365::-;18025:3;18046:66;18110:1;18105:3;18046:66;:::i;:::-;18039:73;;18121:93;18210:3;18121:93;:::i;:::-;18239:2;18234:3;18230:12;18223:19;;17883:365;;;:::o;18254:419::-;18420:4;18458:2;18447:9;18443:18;18435:26;;18507:9;18501:4;18497:20;18493:1;18482:9;18478:17;18471:47;18535:131;18661:4;18535:131;:::i;:::-;18527:139;;18254:419;;;:::o;18679:191::-;18719:3;18738:20;18756:1;18738:20;:::i;:::-;18733:25;;18772:20;18790:1;18772:20;:::i;:::-;18767:25;;18815:1;18812;18808:9;18801:16;;18836:3;18833:1;18830:10;18827:36;;;18843:18;;:::i;:::-;18827:36;18679:191;;;;:::o;18876:160::-;19016:12;19012:1;19004:6;19000:14;18993:36;18876:160;:::o;19042:366::-;19184:3;19205:67;19269:2;19264:3;19205:67;:::i;:::-;19198:74;;19281:93;19370:3;19281:93;:::i;:::-;19399:2;19394:3;19390:12;19383:19;;19042:366;;;:::o;19414:419::-;19580:4;19618:2;19607:9;19603:18;19595:26;;19667:9;19661:4;19657:20;19653:1;19642:9;19638:17;19631:47;19695:131;19821:4;19695:131;:::i;:::-;19687:139;;19414:419;;;:::o;19839:164::-;19979:16;19975:1;19967:6;19963:14;19956:40;19839:164;:::o;20009:366::-;20151:3;20172:67;20236:2;20231:3;20172:67;:::i;:::-;20165:74;;20248:93;20337:3;20248:93;:::i;:::-;20366:2;20361:3;20357:12;20350:19;;20009:366;;;:::o;20381:419::-;20547:4;20585:2;20574:9;20570:18;20562:26;;20634:9;20628:4;20624:20;20620:1;20609:9;20605:17;20598:47;20662:131;20788:4;20662:131;:::i;:::-;20654:139;;20381:419;;;:::o;20806:188::-;20844:3;20863:18;20879:1;20863:18;:::i;:::-;20858:23;;20895:18;20911:1;20895:18;:::i;:::-;20890:23;;20936:1;20933;20929:9;20922:16;;20959:4;20954:3;20951:13;20948:39;;;20967:18;;:::i;:::-;20948:39;20806:188;;;;:::o;21000:168::-;21140:20;21136:1;21128:6;21124:14;21117:44;21000:168;:::o;21174:366::-;21316:3;21337:67;21401:2;21396:3;21337:67;:::i;:::-;21330:74;;21413:93;21502:3;21413:93;:::i;:::-;21531:2;21526:3;21522:12;21515:19;;21174:366;;;:::o;21546:419::-;21712:4;21750:2;21739:9;21735:18;21727:26;;21799:9;21793:4;21789:20;21785:1;21774:9;21770:17;21763:47;21827:131;21953:4;21827:131;:::i;:::-;21819:139;;21546:419;;;:::o;21971:166::-;22111:18;22107:1;22099:6;22095:14;22088:42;21971:166;:::o;22143:366::-;22285:3;22306:67;22370:2;22365:3;22306:67;:::i;:::-;22299:74;;22382:93;22471:3;22382:93;:::i;:::-;22500:2;22495:3;22491:12;22484:19;;22143:366;;;:::o;22515:419::-;22681:4;22719:2;22708:9;22704:18;22696:26;;22768:9;22762:4;22758:20;22754:1;22743:9;22739:17;22732:47;22796:131;22922:4;22796:131;:::i;:::-;22788:139;;22515:419;;;:::o;22940:163::-;23080:15;23076:1;23068:6;23064:14;23057:39;22940:163;:::o;23109:366::-;23251:3;23272:67;23336:2;23331:3;23272:67;:::i;:::-;23265:74;;23348:93;23437:3;23348:93;:::i;:::-;23466:2;23461:3;23457:12;23450:19;;23109:366;;;:::o;23481:419::-;23647:4;23685:2;23674:9;23670:18;23662:26;;23734:9;23728:4;23724:20;23720:1;23709:9;23705:17;23698:47;23762:131;23888:4;23762:131;:::i;:::-;23754:139;;23481:419;;;:::o;23906:161::-;24046:13;24042:1;24034:6;24030:14;24023:37;23906:161;:::o;24073:366::-;24215:3;24236:67;24300:2;24295:3;24236:67;:::i;:::-;24229:74;;24312:93;24401:3;24312:93;:::i;:::-;24430:2;24425:3;24421:12;24414:19;;24073:366;;;:::o;24445:419::-;24611:4;24649:2;24638:9;24634:18;24626:26;;24698:9;24692:4;24688:20;24684:1;24673:9;24669:17;24662:47;24726:131;24852:4;24726:131;:::i;:::-;24718:139;;24445:419;;;:::o;24870:162::-;25010:14;25006:1;24998:6;24994:14;24987:38;24870:162;:::o;25038:366::-;25180:3;25201:67;25265:2;25260:3;25201:67;:::i;:::-;25194:74;;25277:93;25366:3;25277:93;:::i;:::-;25395:2;25390:3;25386:12;25379:19;;25038:366;;;:::o;25410:419::-;25576:4;25614:2;25603:9;25599:18;25591:26;;25663:9;25657:4;25653:20;25649:1;25638:9;25634:17;25627:47;25691:131;25817:4;25691:131;:::i;:::-;25683:139;;25410:419;;;:::o;25835:159::-;25975:11;25971:1;25963:6;25959:14;25952:35;25835:159;:::o;26000:365::-;26142:3;26163:66;26227:1;26222:3;26163:66;:::i;:::-;26156:73;;26238:93;26327:3;26238:93;:::i;:::-;26356:2;26351:3;26347:12;26340:19;;26000:365;;;:::o;26371:419::-;26537:4;26575:2;26564:9;26560:18;26552:26;;26624:9;26618:4;26614:20;26610:1;26599:9;26595:17;26588:47;26652:131;26778:4;26652:131;:::i;:::-;26644:139;;26371:419;;;:::o;26796:165::-;26936:17;26932:1;26924:6;26920:14;26913:41;26796:165;:::o;26967:366::-;27109:3;27130:67;27194:2;27189:3;27130:67;:::i;:::-;27123:74;;27206:93;27295:3;27206:93;:::i;:::-;27324:2;27319:3;27315:12;27308:19;;26967:366;;;:::o;27339:419::-;27505:4;27543:2;27532:9;27528:18;27520:26;;27592:9;27586:4;27582:20;27578:1;27567:9;27563:17;27556:47;27620:131;27746:4;27620:131;:::i;:::-;27612:139;;27339:419;;;:::o;27764:179::-;27904:31;27900:1;27892:6;27888:14;27881:55;27764:179;:::o;27949:366::-;28091:3;28112:67;28176:2;28171:3;28112:67;:::i;:::-;28105:74;;28188:93;28277:3;28188:93;:::i;:::-;28306:2;28301:3;28297:12;28290:19;;27949:366;;;:::o;28321:419::-;28487:4;28525:2;28514:9;28510:18;28502:26;;28574:9;28568:4;28564:20;28560:1;28549:9;28545:17;28538:47;28602:131;28728:4;28602:131;:::i;:::-;28594:139;;28321:419;;;:::o;28746:171::-;28886:23;28882:1;28874:6;28870:14;28863:47;28746:171;:::o;28923:366::-;29065:3;29086:67;29150:2;29145:3;29086:67;:::i;:::-;29079:74;;29162:93;29251:3;29162:93;:::i;:::-;29280:2;29275:3;29271:12;29264:19;;28923:366;;;:::o;29295:419::-;29461:4;29499:2;29488:9;29484:18;29476:26;;29548:9;29542:4;29538:20;29534:1;29523:9;29519:17;29512:47;29576:131;29702:4;29576:131;:::i;:::-;29568:139;;29295:419;;;:::o;29720:143::-;29777:5;29808:6;29802:13;29793:22;;29824:33;29851:5;29824:33;:::i;:::-;29720:143;;;;:::o;29869:351::-;29939:6;29988:2;29976:9;29967:7;29963:23;29959:32;29956:119;;;29994:79;;:::i;:::-;29956:119;30114:1;30139:64;30195:7;30186:6;30175:9;30171:22;30139:64;:::i;:::-;30129:74;;30085:128;29869:351;;;;:::o;30226:332::-;30347:4;30385:2;30374:9;30370:18;30362:26;;30398:71;30466:1;30455:9;30451:17;30442:6;30398:71;:::i;:::-;30479:72;30547:2;30536:9;30532:18;30523:6;30479:72;:::i;:::-;30226:332;;;;;:::o;30564:98::-;30615:6;30649:5;30643:12;30633:22;;30564:98;;;:::o;30668:147::-;30769:11;30806:3;30791:18;;30668:147;;;;:::o;30821:386::-;30925:3;30953:38;30985:5;30953:38;:::i;:::-;31007:88;31088:6;31083:3;31007:88;:::i;:::-;31000:95;;31104:65;31162:6;31157:3;31150:4;31143:5;31139:16;31104:65;:::i;:::-;31194:6;31189:3;31185:16;31178:23;;30929:278;30821:386;;;;:::o;31213:271::-;31343:3;31365:93;31454:3;31445:6;31365:93;:::i;:::-;31358:100;;31475:3;31468:10;;31213:271;;;;:::o;31490:173::-;31630:25;31626:1;31618:6;31614:14;31607:49;31490:173;:::o;31669:366::-;31811:3;31832:67;31896:2;31891:3;31832:67;:::i;:::-;31825:74;;31908:93;31997:3;31908:93;:::i;:::-;32026:2;32021:3;32017:12;32010:19;;31669:366;;;:::o;32041:419::-;32207:4;32245:2;32234:9;32230:18;32222:26;;32294:9;32288:4;32284:20;32280:1;32269:9;32265:17;32258:47;32322:131;32448:4;32322:131;:::i;:::-;32314:139;;32041:419;;;:::o;32466:173::-;32606:25;32602:1;32594:6;32590:14;32583:49;32466:173;:::o;32645:366::-;32787:3;32808:67;32872:2;32867:3;32808:67;:::i;:::-;32801:74;;32884:93;32973:3;32884:93;:::i;:::-;33002:2;32997:3;32993:12;32986:19;;32645:366;;;:::o;33017:419::-;33183:4;33221:2;33210:9;33206:18;33198:26;;33270:9;33264:4;33260:20;33256:1;33245:9;33241:17;33234:47;33298:131;33424:4;33298:131;:::i;:::-;33290:139;;33017:419;;;:::o;33442:60::-;33470:3;33491:5;33484:12;;33442:60;;;:::o;33508:142::-;33558:9;33591:53;33609:34;33618:24;33636:5;33618:24;:::i;:::-;33609:34;:::i;:::-;33591:53;:::i;:::-;33578:66;;33508:142;;;:::o;33656:126::-;33706:9;33739:37;33770:5;33739:37;:::i;:::-;33726:50;;33656:126;;;:::o;33788:134::-;33846:9;33879:37;33910:5;33879:37;:::i;:::-;33866:50;;33788:134;;;:::o;33928:147::-;34023:45;34062:5;34023:45;:::i;:::-;34018:3;34011:58;33928:147;;:::o;34081:238::-;34182:4;34220:2;34209:9;34205:18;34197:26;;34233:79;34309:1;34298:9;34294:17;34285:6;34233:79;:::i;:::-;34081:238;;;;:::o;34325:193::-;34364:3;34383:19;34400:1;34383:19;:::i;:::-;34378:24;;34416:19;34433:1;34416:19;:::i;:::-;34411:24;;34458:1;34455;34451:9;34444:16;;34481:6;34476:3;34473:15;34470:41;;;34491:18;;:::i;:::-;34470:41;34325:193;;;;:::o;34524:165::-;34664:17;34660:1;34652:6;34648:14;34641:41;34524:165;:::o;34695:366::-;34837:3;34858:67;34922:2;34917:3;34858:67;:::i;:::-;34851:74;;34934:93;35023:3;34934:93;:::i;:::-;35052:2;35047:3;35043:12;35036:19;;34695:366;;;:::o;35067:419::-;35233:4;35271:2;35260:9;35256:18;35248:26;;35320:9;35314:4;35310:20;35306:1;35295:9;35291:17;35284:47;35348:131;35474:4;35348:131;:::i;:::-;35340:139;;35067:419;;;:::o;35492:179::-;35632:31;35628:1;35620:6;35616:14;35609:55;35492:179;:::o;35677:366::-;35819:3;35840:67;35904:2;35899:3;35840:67;:::i;:::-;35833:74;;35916:93;36005:3;35916:93;:::i;:::-;36034:2;36029:3;36025:12;36018:19;;35677:366;;;:::o;36049:419::-;36215:4;36253:2;36242:9;36238:18;36230:26;;36302:9;36296:4;36292:20;36288:1;36277:9;36273:17;36266:47;36330:131;36456:4;36330:131;:::i;:::-;36322:139;;36049:419;;;:::o;36474:161::-;36614:13;36610:1;36602:6;36598:14;36591:37;36474:161;:::o;36641:366::-;36783:3;36804:67;36868:2;36863:3;36804:67;:::i;:::-;36797:74;;36880:93;36969:3;36880:93;:::i;:::-;36998:2;36993:3;36989:12;36982:19;;36641:366;;;:::o;37013:419::-;37179:4;37217:2;37206:9;37202:18;37194:26;;37266:9;37260:4;37256:20;37252:1;37241:9;37237:17;37230:47;37294:131;37420:4;37294:131;:::i;:::-;37286:139;;37013:419;;;:::o;37438:167::-;37578:19;37574:1;37566:6;37562:14;37555:43;37438:167;:::o;37611:366::-;37753:3;37774:67;37838:2;37833:3;37774:67;:::i;:::-;37767:74;;37850:93;37939:3;37850:93;:::i;:::-;37968:2;37963:3;37959:12;37952:19;;37611:366;;;:::o;37983:419::-;38149:4;38187:2;38176:9;38172:18;38164:26;;38236:9;38230:4;38226:20;38222:1;38211:9;38207:17;38200:47;38264:131;38390:4;38264:131;:::i;:::-;38256:139;;37983:419;;;:::o;38408:180::-;38456:77;38453:1;38446:88;38553:4;38550:1;38543:15;38577:4;38574:1;38567:15;38594:180;38642:77;38639:1;38632:88;38739:4;38736:1;38729:15;38763:4;38760:1;38753:15;38780:85;38825:7;38854:5;38843:16;;38780:85;;;:::o;38871:158::-;38929:9;38962:61;38980:42;38989:32;39015:5;38989:32;:::i;:::-;38980:42;:::i;:::-;38962:61;:::i;:::-;38949:74;;38871:158;;;:::o;39035:147::-;39130:45;39169:5;39130:45;:::i;:::-;39125:3;39118:58;39035:147;;:::o;39188:114::-;39255:6;39289:5;39283:12;39273:22;;39188:114;;;:::o;39308:184::-;39407:11;39441:6;39436:3;39429:19;39481:4;39476:3;39472:14;39457:29;;39308:184;;;;:::o;39498:132::-;39565:4;39588:3;39580:11;;39618:4;39613:3;39609:14;39601:22;;39498:132;;;:::o;39636:108::-;39713:24;39731:5;39713:24;:::i;:::-;39708:3;39701:37;39636:108;;:::o;39750:179::-;39819:10;39840:46;39882:3;39874:6;39840:46;:::i;:::-;39918:4;39913:3;39909:14;39895:28;;39750:179;;;;:::o;39935:113::-;40005:4;40037;40032:3;40028:14;40020:22;;39935:113;;;:::o;40084:732::-;40203:3;40232:54;40280:5;40232:54;:::i;:::-;40302:86;40381:6;40376:3;40302:86;:::i;:::-;40295:93;;40412:56;40462:5;40412:56;:::i;:::-;40491:7;40522:1;40507:284;40532:6;40529:1;40526:13;40507:284;;;40608:6;40602:13;40635:63;40694:3;40679:13;40635:63;:::i;:::-;40628:70;;40721:60;40774:6;40721:60;:::i;:::-;40711:70;;40567:224;40554:1;40551;40547:9;40542:14;;40507:284;;;40511:14;40807:3;40800:10;;40208:608;;;40084:732;;;;:::o;40822:831::-;41085:4;41123:3;41112:9;41108:19;41100:27;;41137:71;41205:1;41194:9;41190:17;41181:6;41137:71;:::i;:::-;41218:80;41294:2;41283:9;41279:18;41270:6;41218:80;:::i;:::-;41345:9;41339:4;41335:20;41330:2;41319:9;41315:18;41308:48;41373:108;41476:4;41467:6;41373:108;:::i;:::-;41365:116;;41491:72;41559:2;41548:9;41544:18;41535:6;41491:72;:::i;:::-;41573:73;41641:3;41630:9;41626:19;41617:6;41573:73;:::i;:::-;40822:831;;;;;;;;:::o;41659:807::-;41908:4;41946:3;41935:9;41931:19;41923:27;;41960:71;42028:1;42017:9;42013:17;42004:6;41960:71;:::i;:::-;42041:72;42109:2;42098:9;42094:18;42085:6;42041:72;:::i;:::-;42123:80;42199:2;42188:9;42184:18;42175:6;42123:80;:::i;:::-;42213;42289:2;42278:9;42274:18;42265:6;42213:80;:::i;:::-;42303:73;42371:3;42360:9;42356:19;42347:6;42303:73;:::i;:::-;42386;42454:3;42443:9;42439:19;42430:6;42386:73;:::i;:::-;41659:807;;;;;;;;;:::o;42472:143::-;42529:5;42560:6;42554:13;42545:22;;42576:33;42603:5;42576:33;:::i;:::-;42472:143;;;;:::o;42621:663::-;42709:6;42717;42725;42774:2;42762:9;42753:7;42749:23;42745:32;42742:119;;;42780:79;;:::i;:::-;42742:119;42900:1;42925:64;42981:7;42972:6;42961:9;42957:22;42925:64;:::i;:::-;42915:74;;42871:128;43038:2;43064:64;43120:7;43111:6;43100:9;43096:22;43064:64;:::i;:::-;43054:74;;43009:129;43177:2;43203:64;43259:7;43250:6;43239:9;43235:22;43203:64;:::i;:::-;43193:74;;43148:129;42621:663;;;;;:::o
Swarm Source
ipfs://6d43844e4f49453f98cc9931955b7050ad0b1d0c3ca929656890225a739013a6
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.