ERC-20
Overview
Max Total Supply
1,000,000,000 KYD
Holders
629
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.309708322 KYDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KnowYourDevERC
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-18 */ /* Web: https://knowyourdev.com/ Twitter: https://twitter.com/KnowYourDevERC TG: https://t.me/KnowYourDevERC20 KYD bot: t.me/KYDERC20Bot */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract KnowYourDevERC is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "KnowYourDev"; string private constant _symbol = "KYD"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 25; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 30; //Original Fee uint256 private _redisFee = 0; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable public _developmentAddress; address payable public _marketingAddress; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 10000000 * 10**9; uint256 public _maxWalletSize = 10000000 * 10**9; uint256 public _swapTokensAtAmount = 2000000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _developmentAddress = payable(owner()); _marketingAddress = payable(owner()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _swapTokensAtAmount) { contractTokenBalance = _swapTokensAtAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function TradeOpen() public onlyOwner { tradingOpen = true; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function BlacklistWallets(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unBlacklistWallet(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function updateTaxes(uint256 _buyTaxes, uint256 _sellTaxes) public onlyOwner { _taxFeeOnBuy = _buyTaxes; _taxFeeOnSell = _sellTaxes; } function _setSwapbackThreshold(uint256 _amount) public onlyOwner { _swapTokensAtAmount = _amount * 10**9; } function _toggleSwapback(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } function _excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } function _setMaxTx(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function _setMaxWallet(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function removeLimits() public onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; } function _changeWallets(address _marketing,address _development) public onlyOwner{ _marketingAddress = payable(_marketing); _developmentAddress = payable(_development); } }
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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"BlacklistWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TradeOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"_changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"_excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_setSwapbackThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"_toggleSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unBlacklistWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTaxes","type":"uint256"},{"internalType":"uint256","name":"_sellTaxes","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006000196200001c919062000704565b6000196200002b91906200076b565b600655600060085560196009556000600a55601e600b556000600c55600b54600d55600c54600e55600d54600f5560006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550662386f26fc10000601655662386f26fc1000060175566071afd498d0000601855348015620000bc57600080fd5b506000620000cf6200069a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620001846200069a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000268573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028e919062000810565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031c919062000810565b6040518363ffffffff1660e01b81526004016200033b92919062000853565b6020604051808303816000875af11580156200035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000381919062000810565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003d1620006a260201b60201c565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000421620006a260201b60201c565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000477620006a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006246200069a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200068b919062000891565b60405180910390a350620008ae565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071182620006cb565b91506200071e83620006cb565b925082620007315762000730620006d5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200077882620006cb565b91506200078583620006cb565b9250828203905081811115620007a0576200079f6200073c565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007d882620007ab565b9050919050565b620007ea81620007cb565b8114620007f657600080fd5b50565b6000815190506200080a81620007df565b92915050565b600060208284031215620008295762000828620007a6565b5b60006200083984828501620007f9565b91505092915050565b6200084d81620007cb565b82525050565b60006040820190506200086a600083018562000842565b62000879602083018462000842565b9392505050565b6200088b81620006cb565b82525050565b6000602082019050620008a8600083018462000880565b92915050565b61406280620008be6000396000f3fe6080604052600436106101fd5760003560e01c8063715018a61161010d57806395d89b41116100a0578063c3c8cd801161006f578063c3c8cd80146106f4578063caac79341461070b578063dd62ed3e14610736578063f2fde38b14610773578063f7159d421461079c57610204565b806395d89b4114610626578063a9059cbb14610651578063b7dbb12e1461068e578063bfd79284146106b757610204565b80637f2feddc116100dc5780637f2feddc1461057c57806388375563146105b95780638da5cb5b146105d05780638f9a55c0146105fb57610204565b8063715018a6146104fa578063751039fc146105115780637d1db4a5146105285780637e479a7b1461055357610204565b80632fd689e311610190578063522bed111161015f578063522bed111461042b5780635c67d12d14610454578063613c22c91461047d5780636fc3eaec146104a657806370a08231146104bd57610204565b80632fd689e31461037f578063313ce567146103aa5780633d6a9afe146103d557806349bd5a5e1461040057610204565b806318160ddd116101cc57806318160ddd146102c557806322e0ee33146102f057806323b872dd146103195780632f10cfb11461035657610204565b806306fdde0314610209578063095ea7b3146102345780631006ee0c146102715780631694505e1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107c5565b60405161022b9190612ee2565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612fac565b610802565b6040516102689190613007565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190613022565b610820565b005b3480156102a657600080fd5b506102af6108c7565b6040516102bc91906130c1565b60405180910390f35b3480156102d157600080fd5b506102da6108ed565b6040516102e791906130eb565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613106565b6108fd565b005b34801561032557600080fd5b50610340600480360381019061033b9190613133565b6109ab565b60405161034d9190613007565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190613217565b610a84565b005b34801561038b57600080fd5b50610394610bbe565b6040516103a191906130eb565b60405180910390f35b3480156103b657600080fd5b506103bf610bc4565b6040516103cc9190613293565b60405180910390f35b3480156103e157600080fd5b506103ea610bcd565b6040516103f791906132cf565b60405180910390f35b34801561040c57600080fd5b50610415610bf3565b60405161042291906132f9565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613314565b610c19565b005b34801561046057600080fd5b5061047b60048036038101906104769190613341565b610d09565b005b34801561048957600080fd5b506104a4600480360381019061049f9190613106565b610dbb565b005b3480156104b257600080fd5b506104bb610e5a565b005b3480156104c957600080fd5b506104e460048036038101906104df9190613314565b610f2b565b6040516104f191906130eb565b60405180910390f35b34801561050657600080fd5b5061050f610f7c565b005b34801561051d57600080fd5b506105266110cf565b005b34801561053457600080fd5b5061053d611184565b60405161054a91906130eb565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190613106565b61118a565b005b34801561058857600080fd5b506105a3600480360381019061059e9190613314565b611229565b6040516105b091906130eb565b60405180910390f35b3480156105c557600080fd5b506105ce611241565b005b3480156105dc57600080fd5b506105e56112f3565b6040516105f291906132f9565b60405180910390f35b34801561060757600080fd5b5061061061131c565b60405161061d91906130eb565b60405180910390f35b34801561063257600080fd5b5061063b611322565b6040516106489190612ee2565b60405180910390f35b34801561065d57600080fd5b5061067860048036038101906106739190612fac565b61135f565b6040516106859190613007565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b0919061336e565b61137d565b005b3480156106c357600080fd5b506106de60048036038101906106d99190613314565b611498565b6040516106eb9190613007565b60405180910390f35b34801561070057600080fd5b506107096114b8565b005b34801561071757600080fd5b50610720611591565b60405161072d91906132cf565b60405180910390f35b34801561074257600080fd5b5061075d6004803603810190610758919061336e565b6115b7565b60405161076a91906130eb565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190613314565b61163e565b005b3480156107a857600080fd5b506107c360048036038101906107be91906134ec565b6117ff565b005b60606040518060400160405280600b81526020017f4b6e6f77596f7572446576000000000000000000000000000000000000000000815250905090565b600061081661080f611929565b8484611931565b6001905092915050565b610828611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac90613581565b60405180910390fd5b8160098190555080600b819055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b610905611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098990613581565b60405180910390fd5b633b9aca00816109a291906135d0565b60188190555050565b60006109b8848484611afa565b610a79846109c4611929565b610a748560405180606001604052806028815260200161400560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a2a611929565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237d9092919063ffffffff16565b611931565b600190509392505050565b610a8c611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090613581565b60405180910390fd5b60005b83839050811015610bb8578160056000868685818110610b3f57610b3e613612565b5b9050602002016020810190610b549190613314565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bb090613641565b915050610b1c565b50505050565b60185481565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c21611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca590613581565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d11611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590613581565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610dc3611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4790613581565b60405180910390fd5b8060178190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e9b611929565b73ffffffffffffffffffffffffffffffffffffffff161480610f115750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef9611929565b73ffffffffffffffffffffffffffffffffffffffff16145b610f1a57600080fd5b6000479050610f28816123e1565b50565b6000610f75600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244d565b9050919050565b610f84611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890613581565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110d7611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90613581565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b611192611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121690613581565b60405180910390fd5b8060168190555050565b60116020528060005260406000206000915090505481565b611249611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90613581565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f4b59440000000000000000000000000000000000000000000000000000000000815250905090565b600061137361136c611929565b8484611afa565b6001905092915050565b611385611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990613581565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f9611929565b73ffffffffffffffffffffffffffffffffffffffff16148061156f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611557611929565b73ffffffffffffffffffffffffffffffffffffffff16145b61157857600080fd5b600061158330610f2b565b905061158e816124bb565b50565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611646611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613581565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906136fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611807611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b90613581565b60405180910390fd5b60005b8151811015611925576001601060008484815181106118b9576118b8613612565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061191d90613641565b915050611897565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119979061378d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a069061381f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611aed91906130eb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b60906138b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf90613943565b60405180910390fd5b60008111611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c12906139d5565b60405180910390fd5b611c236112f3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c915750611c616112f3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561207c57601560149054906101000a900460ff16611d2057611cb26112f3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690613a67565b60405180910390fd5b5b601654811115611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613ad3565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e095750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3f90613b65565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ef55760175481611eaa84610f2b565b611eb49190613b85565b10611ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eeb90613c2b565b60405180910390fd5b5b6000611f0030610f2b565b9050600060185482101590506018548210611f1b5760185491505b808015611f33575060158054906101000a900460ff16155b8015611f8d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611fa55750601560169054906101000a900460ff165b8015611ffb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120515750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120795761205f826124bb565b6000479050600081111561207757612076476123e1565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121235750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121d65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121d55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121e4576000905061236b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561228f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122a757600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123525750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561236a57600a54600c81905550600b54600d819055505b5b61237784848484612732565b50505050565b60008383111582906123c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bc9190612ee2565b60405180910390fd5b50600083856123d49190613c4b565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612449573d6000803e3d6000fd5b5050565b6000600654821115612494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248b90613cf1565b60405180910390fd5b600061249e61275f565b90506124b3818461278a90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124f2576124f16133ae565b5b6040519080825280602002602001820160405280156125205781602001602082028036833780820191505090505b509050308160008151811061253857612537613612565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126039190613d26565b8160018151811061261757612616613612565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061267e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611931565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126e2959493929190613e4c565b600060405180830381600087803b1580156126fc57600080fd5b505af1158015612710573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806127405761273f6127d4565b5b61274b848484612811565b80612759576127586129dc565b5b50505050565b600080600061276c6129f0565b91509150612783818361278a90919063ffffffff16565b9250505090565b60006127cc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a4f565b905092915050565b6000600c541480156127e857506000600d54145b61280f57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061282387612ab2565b95509550955095509550955061288186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061291685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061296281612bc2565b61296c8483612c7f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129c991906130eb565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612a24670de0b6b3a764000060065461278a90919063ffffffff16565b821015612a4257600654670de0b6b3a7640000935093505050612a4b565b81819350935050505b9091565b60008083118290612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d9190612ee2565b60405180910390fd5b5060008385612aa59190613ed5565b9050809150509392505050565b6000806000806000806000806000612acf8a600c54600d54612cb9565b9250925092506000612adf61275f565b90506000806000612af28e878787612d4f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b5c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061237d565b905092915050565b6000808284612b739190613b85565b905083811015612bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baf90613f52565b60405180910390fd5b8091505092915050565b6000612bcc61275f565b90506000612be38284612dd890919063ffffffff16565b9050612c3781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c9482600654612b1a90919063ffffffff16565b600681905550612caf81600754612b6490919063ffffffff16565b6007819055505050565b600080600080612ce56064612cd7888a612dd890919063ffffffff16565b61278a90919063ffffffff16565b90506000612d0f6064612d01888b612dd890919063ffffffff16565b61278a90919063ffffffff16565b90506000612d3882612d2a858c612b1a90919063ffffffff16565b612b1a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d688589612dd890919063ffffffff16565b90506000612d7f8689612dd890919063ffffffff16565b90506000612d968789612dd890919063ffffffff16565b90506000612dbf82612db18587612b1a90919063ffffffff16565b612b1a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612dea5760009050612e4c565b60008284612df891906135d0565b9050828482612e079190613ed5565b14612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e90613fe4565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e8c578082015181840152602081019050612e71565b60008484015250505050565b6000601f19601f8301169050919050565b6000612eb482612e52565b612ebe8185612e5d565b9350612ece818560208601612e6e565b612ed781612e98565b840191505092915050565b60006020820190508181036000830152612efc8184612ea9565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f4382612f18565b9050919050565b612f5381612f38565b8114612f5e57600080fd5b50565b600081359050612f7081612f4a565b92915050565b6000819050919050565b612f8981612f76565b8114612f9457600080fd5b50565b600081359050612fa681612f80565b92915050565b60008060408385031215612fc357612fc2612f0e565b5b6000612fd185828601612f61565b9250506020612fe285828601612f97565b9150509250929050565b60008115159050919050565b61300181612fec565b82525050565b600060208201905061301c6000830184612ff8565b92915050565b6000806040838503121561303957613038612f0e565b5b600061304785828601612f97565b925050602061305885828601612f97565b9150509250929050565b6000819050919050565b600061308761308261307d84612f18565b613062565b612f18565b9050919050565b60006130998261306c565b9050919050565b60006130ab8261308e565b9050919050565b6130bb816130a0565b82525050565b60006020820190506130d660008301846130b2565b92915050565b6130e581612f76565b82525050565b600060208201905061310060008301846130dc565b92915050565b60006020828403121561311c5761311b612f0e565b5b600061312a84828501612f97565b91505092915050565b60008060006060848603121561314c5761314b612f0e565b5b600061315a86828701612f61565b935050602061316b86828701612f61565b925050604061317c86828701612f97565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126131ab576131aa613186565b5b8235905067ffffffffffffffff8111156131c8576131c761318b565b5b6020830191508360208202830111156131e4576131e3613190565b5b9250929050565b6131f481612fec565b81146131ff57600080fd5b50565b600081359050613211816131eb565b92915050565b6000806000604084860312156132305761322f612f0e565b5b600084013567ffffffffffffffff81111561324e5761324d612f13565b5b61325a86828701613195565b9350935050602061326d86828701613202565b9150509250925092565b600060ff82169050919050565b61328d81613277565b82525050565b60006020820190506132a86000830184613284565b92915050565b60006132b982612f18565b9050919050565b6132c9816132ae565b82525050565b60006020820190506132e460008301846132c0565b92915050565b6132f381612f38565b82525050565b600060208201905061330e60008301846132ea565b92915050565b60006020828403121561332a57613329612f0e565b5b600061333884828501612f61565b91505092915050565b60006020828403121561335757613356612f0e565b5b600061336584828501613202565b91505092915050565b6000806040838503121561338557613384612f0e565b5b600061339385828601612f61565b92505060206133a485828601612f61565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133e682612e98565b810181811067ffffffffffffffff82111715613405576134046133ae565b5b80604052505050565b6000613418612f04565b905061342482826133dd565b919050565b600067ffffffffffffffff821115613444576134436133ae565b5b602082029050602081019050919050565b600061346861346384613429565b61340e565b9050808382526020820190506020840283018581111561348b5761348a613190565b5b835b818110156134b457806134a08882612f61565b84526020840193505060208101905061348d565b5050509392505050565b600082601f8301126134d3576134d2613186565b5b81356134e3848260208601613455565b91505092915050565b60006020828403121561350257613501612f0e565b5b600082013567ffffffffffffffff8111156135205761351f612f13565b5b61352c848285016134be565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061356b602083612e5d565b915061357682613535565b602082019050919050565b6000602082019050818103600083015261359a8161355e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135db82612f76565b91506135e683612f76565b92508282026135f481612f76565b9150828204841483151761360b5761360a6135a1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061364c82612f76565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361367e5761367d6135a1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136e5602683612e5d565b91506136f082613689565b604082019050919050565b60006020820190508181036000830152613714816136d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613777602483612e5d565b91506137828261371b565b604082019050919050565b600060208201905081810360008301526137a68161376a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613809602283612e5d565b9150613814826137ad565b604082019050919050565b60006020820190508181036000830152613838816137fc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061389b602583612e5d565b91506138a68261383f565b604082019050919050565b600060208201905081810360008301526138ca8161388e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061392d602383612e5d565b9150613938826138d1565b604082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006139bf602983612e5d565b91506139ca82613963565b604082019050919050565b600060208201905081810360008301526139ee816139b2565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613a51603f83612e5d565b9150613a5c826139f5565b604082019050919050565b60006020820190508181036000830152613a8081613a44565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613abd601c83612e5d565b9150613ac882613a87565b602082019050919050565b60006020820190508181036000830152613aec81613ab0565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613b4f602383612e5d565b9150613b5a82613af3565b604082019050919050565b60006020820190508181036000830152613b7e81613b42565b9050919050565b6000613b9082612f76565b9150613b9b83612f76565b9250828201905080821115613bb357613bb26135a1565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c15602383612e5d565b9150613c2082613bb9565b604082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b6000613c5682612f76565b9150613c6183612f76565b9250828203905081811115613c7957613c786135a1565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613cdb602a83612e5d565b9150613ce682613c7f565b604082019050919050565b60006020820190508181036000830152613d0a81613cce565b9050919050565b600081519050613d2081612f4a565b92915050565b600060208284031215613d3c57613d3b612f0e565b5b6000613d4a84828501613d11565b91505092915050565b6000819050919050565b6000613d78613d73613d6e84613d53565b613062565b612f76565b9050919050565b613d8881613d5d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dc381612f38565b82525050565b6000613dd58383613dba565b60208301905092915050565b6000602082019050919050565b6000613df982613d8e565b613e038185613d99565b9350613e0e83613daa565b8060005b83811015613e3f578151613e268882613dc9565b9750613e3183613de1565b925050600181019050613e12565b5085935050505092915050565b600060a082019050613e6160008301886130dc565b613e6e6020830187613d7f565b8181036040830152613e808186613dee565b9050613e8f60608301856132ea565b613e9c60808301846130dc565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ee082612f76565b9150613eeb83612f76565b925082613efb57613efa613ea6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f3c601b83612e5d565b9150613f4782613f06565b602082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fce602183612e5d565b9150613fd982613f72565b604082019050919050565b60006020820190508181036000830152613ffd81613fc1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122091cafdd695dbee2699d644a0411f9b6643189441ad4cf75f472fc1988ec5caf664736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c8063715018a61161010d57806395d89b41116100a0578063c3c8cd801161006f578063c3c8cd80146106f4578063caac79341461070b578063dd62ed3e14610736578063f2fde38b14610773578063f7159d421461079c57610204565b806395d89b4114610626578063a9059cbb14610651578063b7dbb12e1461068e578063bfd79284146106b757610204565b80637f2feddc116100dc5780637f2feddc1461057c57806388375563146105b95780638da5cb5b146105d05780638f9a55c0146105fb57610204565b8063715018a6146104fa578063751039fc146105115780637d1db4a5146105285780637e479a7b1461055357610204565b80632fd689e311610190578063522bed111161015f578063522bed111461042b5780635c67d12d14610454578063613c22c91461047d5780636fc3eaec146104a657806370a08231146104bd57610204565b80632fd689e31461037f578063313ce567146103aa5780633d6a9afe146103d557806349bd5a5e1461040057610204565b806318160ddd116101cc57806318160ddd146102c557806322e0ee33146102f057806323b872dd146103195780632f10cfb11461035657610204565b806306fdde0314610209578063095ea7b3146102345780631006ee0c146102715780631694505e1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107c5565b60405161022b9190612ee2565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612fac565b610802565b6040516102689190613007565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190613022565b610820565b005b3480156102a657600080fd5b506102af6108c7565b6040516102bc91906130c1565b60405180910390f35b3480156102d157600080fd5b506102da6108ed565b6040516102e791906130eb565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613106565b6108fd565b005b34801561032557600080fd5b50610340600480360381019061033b9190613133565b6109ab565b60405161034d9190613007565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190613217565b610a84565b005b34801561038b57600080fd5b50610394610bbe565b6040516103a191906130eb565b60405180910390f35b3480156103b657600080fd5b506103bf610bc4565b6040516103cc9190613293565b60405180910390f35b3480156103e157600080fd5b506103ea610bcd565b6040516103f791906132cf565b60405180910390f35b34801561040c57600080fd5b50610415610bf3565b60405161042291906132f9565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613314565b610c19565b005b34801561046057600080fd5b5061047b60048036038101906104769190613341565b610d09565b005b34801561048957600080fd5b506104a4600480360381019061049f9190613106565b610dbb565b005b3480156104b257600080fd5b506104bb610e5a565b005b3480156104c957600080fd5b506104e460048036038101906104df9190613314565b610f2b565b6040516104f191906130eb565b60405180910390f35b34801561050657600080fd5b5061050f610f7c565b005b34801561051d57600080fd5b506105266110cf565b005b34801561053457600080fd5b5061053d611184565b60405161054a91906130eb565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190613106565b61118a565b005b34801561058857600080fd5b506105a3600480360381019061059e9190613314565b611229565b6040516105b091906130eb565b60405180910390f35b3480156105c557600080fd5b506105ce611241565b005b3480156105dc57600080fd5b506105e56112f3565b6040516105f291906132f9565b60405180910390f35b34801561060757600080fd5b5061061061131c565b60405161061d91906130eb565b60405180910390f35b34801561063257600080fd5b5061063b611322565b6040516106489190612ee2565b60405180910390f35b34801561065d57600080fd5b5061067860048036038101906106739190612fac565b61135f565b6040516106859190613007565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b0919061336e565b61137d565b005b3480156106c357600080fd5b506106de60048036038101906106d99190613314565b611498565b6040516106eb9190613007565b60405180910390f35b34801561070057600080fd5b506107096114b8565b005b34801561071757600080fd5b50610720611591565b60405161072d91906132cf565b60405180910390f35b34801561074257600080fd5b5061075d6004803603810190610758919061336e565b6115b7565b60405161076a91906130eb565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190613314565b61163e565b005b3480156107a857600080fd5b506107c360048036038101906107be91906134ec565b6117ff565b005b60606040518060400160405280600b81526020017f4b6e6f77596f7572446576000000000000000000000000000000000000000000815250905090565b600061081661080f611929565b8484611931565b6001905092915050565b610828611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac90613581565b60405180910390fd5b8160098190555080600b819055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b610905611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098990613581565b60405180910390fd5b633b9aca00816109a291906135d0565b60188190555050565b60006109b8848484611afa565b610a79846109c4611929565b610a748560405180606001604052806028815260200161400560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a2a611929565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237d9092919063ffffffff16565b611931565b600190509392505050565b610a8c611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090613581565b60405180910390fd5b60005b83839050811015610bb8578160056000868685818110610b3f57610b3e613612565b5b9050602002016020810190610b549190613314565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bb090613641565b915050610b1c565b50505050565b60185481565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c21611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca590613581565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d11611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590613581565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610dc3611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4790613581565b60405180910390fd5b8060178190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e9b611929565b73ffffffffffffffffffffffffffffffffffffffff161480610f115750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef9611929565b73ffffffffffffffffffffffffffffffffffffffff16145b610f1a57600080fd5b6000479050610f28816123e1565b50565b6000610f75600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244d565b9050919050565b610f84611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890613581565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110d7611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90613581565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b611192611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121690613581565b60405180910390fd5b8060168190555050565b60116020528060005260406000206000915090505481565b611249611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90613581565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f4b59440000000000000000000000000000000000000000000000000000000000815250905090565b600061137361136c611929565b8484611afa565b6001905092915050565b611385611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990613581565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f9611929565b73ffffffffffffffffffffffffffffffffffffffff16148061156f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611557611929565b73ffffffffffffffffffffffffffffffffffffffff16145b61157857600080fd5b600061158330610f2b565b905061158e816124bb565b50565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611646611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613581565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906136fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611807611929565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b90613581565b60405180910390fd5b60005b8151811015611925576001601060008484815181106118b9576118b8613612565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061191d90613641565b915050611897565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119979061378d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a069061381f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611aed91906130eb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b60906138b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf90613943565b60405180910390fd5b60008111611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c12906139d5565b60405180910390fd5b611c236112f3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c915750611c616112f3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561207c57601560149054906101000a900460ff16611d2057611cb26112f3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690613a67565b60405180910390fd5b5b601654811115611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613ad3565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e095750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3f90613b65565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ef55760175481611eaa84610f2b565b611eb49190613b85565b10611ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eeb90613c2b565b60405180910390fd5b5b6000611f0030610f2b565b9050600060185482101590506018548210611f1b5760185491505b808015611f33575060158054906101000a900460ff16155b8015611f8d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611fa55750601560169054906101000a900460ff165b8015611ffb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120515750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120795761205f826124bb565b6000479050600081111561207757612076476123e1565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121235750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121d65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121d55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121e4576000905061236b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561228f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122a757600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123525750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561236a57600a54600c81905550600b54600d819055505b5b61237784848484612732565b50505050565b60008383111582906123c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bc9190612ee2565b60405180910390fd5b50600083856123d49190613c4b565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612449573d6000803e3d6000fd5b5050565b6000600654821115612494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248b90613cf1565b60405180910390fd5b600061249e61275f565b90506124b3818461278a90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124f2576124f16133ae565b5b6040519080825280602002602001820160405280156125205781602001602082028036833780820191505090505b509050308160008151811061253857612537613612565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126039190613d26565b8160018151811061261757612616613612565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061267e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611931565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126e2959493929190613e4c565b600060405180830381600087803b1580156126fc57600080fd5b505af1158015612710573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806127405761273f6127d4565b5b61274b848484612811565b80612759576127586129dc565b5b50505050565b600080600061276c6129f0565b91509150612783818361278a90919063ffffffff16565b9250505090565b60006127cc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a4f565b905092915050565b6000600c541480156127e857506000600d54145b61280f57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061282387612ab2565b95509550955095509550955061288186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061291685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061296281612bc2565b61296c8483612c7f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129c991906130eb565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612a24670de0b6b3a764000060065461278a90919063ffffffff16565b821015612a4257600654670de0b6b3a7640000935093505050612a4b565b81819350935050505b9091565b60008083118290612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d9190612ee2565b60405180910390fd5b5060008385612aa59190613ed5565b9050809150509392505050565b6000806000806000806000806000612acf8a600c54600d54612cb9565b9250925092506000612adf61275f565b90506000806000612af28e878787612d4f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b5c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061237d565b905092915050565b6000808284612b739190613b85565b905083811015612bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baf90613f52565b60405180910390fd5b8091505092915050565b6000612bcc61275f565b90506000612be38284612dd890919063ffffffff16565b9050612c3781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c9482600654612b1a90919063ffffffff16565b600681905550612caf81600754612b6490919063ffffffff16565b6007819055505050565b600080600080612ce56064612cd7888a612dd890919063ffffffff16565b61278a90919063ffffffff16565b90506000612d0f6064612d01888b612dd890919063ffffffff16565b61278a90919063ffffffff16565b90506000612d3882612d2a858c612b1a90919063ffffffff16565b612b1a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d688589612dd890919063ffffffff16565b90506000612d7f8689612dd890919063ffffffff16565b90506000612d968789612dd890919063ffffffff16565b90506000612dbf82612db18587612b1a90919063ffffffff16565b612b1a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612dea5760009050612e4c565b60008284612df891906135d0565b9050828482612e079190613ed5565b14612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e90613fe4565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e8c578082015181840152602081019050612e71565b60008484015250505050565b6000601f19601f8301169050919050565b6000612eb482612e52565b612ebe8185612e5d565b9350612ece818560208601612e6e565b612ed781612e98565b840191505092915050565b60006020820190508181036000830152612efc8184612ea9565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f4382612f18565b9050919050565b612f5381612f38565b8114612f5e57600080fd5b50565b600081359050612f7081612f4a565b92915050565b6000819050919050565b612f8981612f76565b8114612f9457600080fd5b50565b600081359050612fa681612f80565b92915050565b60008060408385031215612fc357612fc2612f0e565b5b6000612fd185828601612f61565b9250506020612fe285828601612f97565b9150509250929050565b60008115159050919050565b61300181612fec565b82525050565b600060208201905061301c6000830184612ff8565b92915050565b6000806040838503121561303957613038612f0e565b5b600061304785828601612f97565b925050602061305885828601612f97565b9150509250929050565b6000819050919050565b600061308761308261307d84612f18565b613062565b612f18565b9050919050565b60006130998261306c565b9050919050565b60006130ab8261308e565b9050919050565b6130bb816130a0565b82525050565b60006020820190506130d660008301846130b2565b92915050565b6130e581612f76565b82525050565b600060208201905061310060008301846130dc565b92915050565b60006020828403121561311c5761311b612f0e565b5b600061312a84828501612f97565b91505092915050565b60008060006060848603121561314c5761314b612f0e565b5b600061315a86828701612f61565b935050602061316b86828701612f61565b925050604061317c86828701612f97565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126131ab576131aa613186565b5b8235905067ffffffffffffffff8111156131c8576131c761318b565b5b6020830191508360208202830111156131e4576131e3613190565b5b9250929050565b6131f481612fec565b81146131ff57600080fd5b50565b600081359050613211816131eb565b92915050565b6000806000604084860312156132305761322f612f0e565b5b600084013567ffffffffffffffff81111561324e5761324d612f13565b5b61325a86828701613195565b9350935050602061326d86828701613202565b9150509250925092565b600060ff82169050919050565b61328d81613277565b82525050565b60006020820190506132a86000830184613284565b92915050565b60006132b982612f18565b9050919050565b6132c9816132ae565b82525050565b60006020820190506132e460008301846132c0565b92915050565b6132f381612f38565b82525050565b600060208201905061330e60008301846132ea565b92915050565b60006020828403121561332a57613329612f0e565b5b600061333884828501612f61565b91505092915050565b60006020828403121561335757613356612f0e565b5b600061336584828501613202565b91505092915050565b6000806040838503121561338557613384612f0e565b5b600061339385828601612f61565b92505060206133a485828601612f61565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133e682612e98565b810181811067ffffffffffffffff82111715613405576134046133ae565b5b80604052505050565b6000613418612f04565b905061342482826133dd565b919050565b600067ffffffffffffffff821115613444576134436133ae565b5b602082029050602081019050919050565b600061346861346384613429565b61340e565b9050808382526020820190506020840283018581111561348b5761348a613190565b5b835b818110156134b457806134a08882612f61565b84526020840193505060208101905061348d565b5050509392505050565b600082601f8301126134d3576134d2613186565b5b81356134e3848260208601613455565b91505092915050565b60006020828403121561350257613501612f0e565b5b600082013567ffffffffffffffff8111156135205761351f612f13565b5b61352c848285016134be565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061356b602083612e5d565b915061357682613535565b602082019050919050565b6000602082019050818103600083015261359a8161355e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135db82612f76565b91506135e683612f76565b92508282026135f481612f76565b9150828204841483151761360b5761360a6135a1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061364c82612f76565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361367e5761367d6135a1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136e5602683612e5d565b91506136f082613689565b604082019050919050565b60006020820190508181036000830152613714816136d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613777602483612e5d565b91506137828261371b565b604082019050919050565b600060208201905081810360008301526137a68161376a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613809602283612e5d565b9150613814826137ad565b604082019050919050565b60006020820190508181036000830152613838816137fc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061389b602583612e5d565b91506138a68261383f565b604082019050919050565b600060208201905081810360008301526138ca8161388e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061392d602383612e5d565b9150613938826138d1565b604082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006139bf602983612e5d565b91506139ca82613963565b604082019050919050565b600060208201905081810360008301526139ee816139b2565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613a51603f83612e5d565b9150613a5c826139f5565b604082019050919050565b60006020820190508181036000830152613a8081613a44565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613abd601c83612e5d565b9150613ac882613a87565b602082019050919050565b60006020820190508181036000830152613aec81613ab0565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613b4f602383612e5d565b9150613b5a82613af3565b604082019050919050565b60006020820190508181036000830152613b7e81613b42565b9050919050565b6000613b9082612f76565b9150613b9b83612f76565b9250828201905080821115613bb357613bb26135a1565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c15602383612e5d565b9150613c2082613bb9565b604082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b6000613c5682612f76565b9150613c6183612f76565b9250828203905081811115613c7957613c786135a1565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613cdb602a83612e5d565b9150613ce682613c7f565b604082019050919050565b60006020820190508181036000830152613d0a81613cce565b9050919050565b600081519050613d2081612f4a565b92915050565b600060208284031215613d3c57613d3b612f0e565b5b6000613d4a84828501613d11565b91505092915050565b6000819050919050565b6000613d78613d73613d6e84613d53565b613062565b612f76565b9050919050565b613d8881613d5d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dc381612f38565b82525050565b6000613dd58383613dba565b60208301905092915050565b6000602082019050919050565b6000613df982613d8e565b613e038185613d99565b9350613e0e83613daa565b8060005b83811015613e3f578151613e268882613dc9565b9750613e3183613de1565b925050600181019050613e12565b5085935050505092915050565b600060a082019050613e6160008301886130dc565b613e6e6020830187613d7f565b8181036040830152613e808186613dee565b9050613e8f60608301856132ea565b613e9c60808301846130dc565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ee082612f76565b9150613eeb83612f76565b925082613efb57613efa613ea6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f3c601b83612e5d565b9150613f4782613f06565b602082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fce602183612e5d565b9150613fd982613f72565b604082019050919050565b60006020820190508181036000830152613ffd81613fc1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122091cafdd695dbee2699d644a0411f9b6643189441ad4cf75f472fc1988ec5caf664736f6c63430008120033
Deployed Bytecode Sourcemap
4180:13569:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6666:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7598:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16551:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5413:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6946:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16714:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7800:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16953:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5715:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6854:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5313:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5461:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13038:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16841:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17312:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12612:235;;;;;;;;;;;;;:::i;:::-;;7050:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1692:148;;;;;;;;;;;;;:::i;:::-;;17430:117;;;;;;;;;;;;;:::i;:::-;;5605:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17194:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5262:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12285:75;;;;;;;;;;;;;:::i;:::-;;1482:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5659:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6758:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7197:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17553:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5224:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12367:236;;;;;;;;;;;;;:::i;:::-;;5362:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7405:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1849:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12856:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6666:83;6703:13;6736:5;;;;;;;;;;;;;;;;;6729:12;;6666:83;:::o;7598:193::-;7700:4;7722:39;7731:12;:10;:12::i;:::-;7745:7;7754:6;7722:8;:39::i;:::-;7779:4;7772:11;;7598:193;;;;:::o;16551:157::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16654:9:::1;16639:12;:24;;;;16690:10;16674:13;:26;;;;16551:157:::0;;:::o;5413:41::-;;;;;;;;;;;;;:::o;6946:95::-;6999:7;4729:18;7019:14;;6946:95;:::o;16714:121::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16822:5:::1;16812:7;:15;;;;:::i;:::-;16790:19;:37;;;;16714:121:::0;:::o;7800:446::-;7932:4;7949:36;7959:6;7967:9;7978:6;7949:9;:36::i;:::-;7996:220;8019:6;8040:12;:10;:12::i;:::-;8067:138;8123:6;8067:138;;;;;;;;;;;;;;;;;:11;:19;8079:6;8067:19;;;;;;;;;;;;;;;:33;8087:12;:10;:12::i;:::-;8067:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7996:8;:220::i;:::-;8234:4;8227:11;;7800:446;;;;;:::o;16953:235::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17071:9:::1;17067:114;17090:8;;:15;;17086:1;:19;17067:114;;;17161:8;17127:18;:31;17146:8;;17155:1;17146:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17127:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17107:3;;;;;:::i;:::-;;;;17067:114;;;;16953:235:::0;;;:::o;5715:52::-;;;;:::o;6854:83::-;6895:5;4405:1;6913:16;;6854:83;:::o;5313:42::-;;;;;;;;;;;;;:::o;5461:28::-;;;;;;;;;;;;;:::o;13038:99::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13124:5:::1;13109:4;:12;13114:6;13109:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13038:99:::0;:::o;16841:106::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16927:12:::1;16913:11;;:26;;;;;;;;;;;;;;;;;;16841:106:::0;:::o;17312:112::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17403:13:::1;17386:14;:30;;;;17312:112:::0;:::o;12612:235::-;12678:19;;;;;;;;;;;12662:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12717:17;;;;;;;;;;;12701:33;;:12;:10;:12::i;:::-;:33;;;12662:72;12654:81;;;;;;12746:26;12775:21;12746:50;;12807:32;12820:18;12807:12;:32::i;:::-;12643:204;12612:235::o;7050:138::-;7116:7;7143:37;7163:7;:16;7171:7;7163:16;;;;;;;;;;;;;;;;7143:19;:37::i;:::-;7136:44;;7050:138;;;:::o;1692:148::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1799:1:::1;1762:40;;1783:6;::::0;::::1;;;;;;;;1762:40;;;;;;;;;;;;1830:1;1813:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1692:148::o:0;17430:117::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4729:18:::1;17482:12;:22;;;;4729:18;17515:14;:24;;;;17430:117::o:0;5605:46::-;;;;:::o;17194:112::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17280:11:::1;17265:12;:26;;;;17194:112:::0;:::o;5262:43::-;;;;;;;;;;;;;;;;;:::o;12285:75::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12348:4:::1;12334:11;;:18;;;;;;;;;;;;;;;;;;12285:75::o:0;1482:79::-;1520:7;1547:6;;;;;;;;;;;1540:13;;1482:79;:::o;5659:48::-;;;;:::o;6758:87::-;6797:13;6830:7;;;;;;;;;;;;;;;;;6823:14;;6758:87;:::o;7197:199::-;7302:4;7324:42;7334:12;:10;:12::i;:::-;7348:9;7359:6;7324:9;:42::i;:::-;7384:4;7377:11;;7197:199;;;;:::o;17553:193::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17673:10:::1;17645:17;;:39;;;;;;;;;;;;;;;;;;17725:12;17695:19;;:43;;;;;;;;;;;;;;;;;;17553:193:::0;;:::o;5224:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12367:236::-;12433:19;;;;;;;;;;;12417:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12472:17;;;;;;;;;;;12456:33;;:12;:10;:12::i;:::-;:33;;;12417:72;12409:81;;;;;;12501:23;12527:24;12545:4;12527:9;:24::i;:::-;12501:50;;12562:33;12579:15;12562:16;:33::i;:::-;12398:205;12367:236::o;5362:41::-;;;;;;;;;;;;;:::o;7405:184::-;7522:7;7554:11;:18;7566:5;7554:18;;;;;;;;;;;;;;;:27;7573:7;7554:27;;;;;;;;;;;;;;;;7547:34;;7405:184;;;;:::o;1849:244::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1958:1:::1;1938:22;;:8;:22;;::::0;1930:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2048:8;2019:38;;2040:6;::::0;::::1;;;;;;;;2019:38;;;;;;;;;;;;2077:8;2068:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1849:244:::0;:::o;12856:176::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12939:9:::1;12934:91;12958:5;:12;12954:1;:16;12934:91;;;13009:4;12992;:14;12997:5;13003:1;12997:8;;;;;;;;:::i;:::-;;;;;;;;12992:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12972:3;;;;;:::i;:::-;;;;12934:91;;;;12856:176:::0;:::o;261:98::-;314:7;341:10;334:17;;261:98;:::o;8943:369::-;9087:1;9070:19;;:5;:19;;;9062:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9168:1;9149:21;;:7;:21;;;9141:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9250:6;9220:11;:18;9232:5;9220:18;;;;;;;;;;;;;;;:27;9239:7;9220:27;;;;;;;;;;;;;;;:36;;;;9288:7;9272:32;;9281:5;9272:32;;;9297:6;9272:32;;;;;;:::i;:::-;;;;;;;;8943:369;;;:::o;9321:2357::-;9459:1;9443:18;;:4;:18;;;9435:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9536:1;9522:16;;:2;:16;;;9514:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9606:1;9597:6;:10;9589:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9679:7;:5;:7::i;:::-;9671:15;;:4;:15;;;;:32;;;;;9696:7;:5;:7::i;:::-;9690:13;;:2;:13;;;;9671:32;9667:1279;;;9761:11;;;;;;;;;;;9756:144;;9809:7;:5;:7::i;:::-;9801:15;;:4;:15;;;9793:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9756:144;9935:12;;9925:6;:22;;9917:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10004:4;:10;10009:4;10004:10;;;;;;;;;;;;;;;;;;;;;;;;;10003:11;:24;;;;;10019:4;:8;10024:2;10019:8;;;;;;;;;;;;;;;;;;;;;;;;;10018:9;10003:24;9995:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10094:13;;;;;;;;;;;10088:19;;:2;:19;;;10085:146;;10161:14;;10152:6;10136:13;10146:2;10136:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10128:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10085:146;10248:28;10279:24;10297:4;10279:9;:24::i;:::-;10248:55;;10318:12;10357:19;;10333:20;:43;;10318:58;;10421:19;;10397:20;:43;10394:138;;10497:19;;10474:42;;10394:138;10553:7;:18;;;;;10565:6;;;;;;;;;;10564:7;10553:18;:43;;;;;10583:13;;;;;;;;;;;10575:21;;:4;:21;;;;10553:43;:58;;;;;10600:11;;;;;;;;;;;10553:58;:87;;;;;10616:18;:24;10635:4;10616:24;;;;;;;;;;;;;;;;;;;;;;;;;10615:25;10553:87;:114;;;;;10645:18;:22;10664:2;10645:22;;;;;;;;;;;;;;;;;;;;;;;;;10644:23;10553:114;10549:386;;;10688:38;10705:20;10688:16;:38::i;:::-;10745:26;10774:21;10745:50;;10839:1;10818:18;:22;10814:106;;;10865:35;10878:21;10865:12;:35::i;:::-;10814:106;10669:266;10549:386;9705:1241;;9667:1279;10959:12;10974:4;10959:19;;11024:18;:24;11043:4;11024:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11052:18;:22;11071:2;11052:22;;;;;;;;;;;;;;;;;;;;;;;;;11024:50;11023:102;;;;11088:13;;;;;;;;;;;11080:21;;:4;:21;;;;:44;;;;;11111:13;;;;;;;;;;;11105:19;;:2;:19;;;;11080:44;11023:102;11019:597;;;11152:5;11142:15;;11019:597;;;11236:13;;;;;;;;;;;11228:21;;:4;:21;;;:55;;;;;11267:15;;;;;;;;;;;11253:30;;:2;:30;;;;11228:55;11225:162;;;11316:14;;11304:9;:26;;;;11359:12;;11349:7;:22;;;;11225:162;11447:13;;;;;;;;;;;11441:19;;:2;:19;;;:55;;;;;11480:15;;;;;;;;;;;11464:32;;:4;:32;;;;11441:55;11437:165;;;11529:15;;11517:9;:27;;;;11573:13;;11563:7;:23;;;;11437:165;11019:597;11629:41;11644:4;11650:2;11654:6;11662:7;11629:14;:41::i;:::-;9424:2254;9321:2357;;;:::o;2449:224::-;2569:7;2602:1;2597;:6;;2605:12;2589:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2629:9;2645:1;2641;:5;;;;:::i;:::-;2629:17;;2664:1;2657:8;;;2449:224;;;;;:::o;12179:99::-;12236:17;;;;;;;;;;;:26;;:34;12263:6;12236:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12179:99;:::o;8255:323::-;8350:7;8408;;8397;:18;;8375:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8496:19;8518:10;:8;:10::i;:::-;8496:32;;8546:24;8558:11;8546:7;:11;;:24;;;;:::i;:::-;8539:31;;;8255:323;;;:::o;11687:483::-;5871:4;5862:6;;:13;;;;;;;;;;;;;;;;;;11765:21:::1;11803:1;11789:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11765:40;;11834:4;11816;11821:1;11816:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11860:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11850:4;11855:1;11850:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11893:62;11910:4;11925:15;;;;;;;;;;;11943:11;11893:8;:62::i;:::-;11966:15;;;;;;;;;;;:66;;;12047:11;12073:1;12089:4;12116;12136:15;11966:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11754:416;5907:5:::0;5898:6;;:14;;;;;;;;;;;;;;;;;;11687:483;:::o;13143:282::-;13299:7;13294:28;;13308:14;:12;:14::i;:::-;13294:28;13333:44;13351:6;13359:9;13370:6;13333:17;:44::i;:::-;13393:7;13388:29;;13402:15;:13;:15::i;:::-;13388:29;13143:282;;;;:::o;16112:164::-;16154:7;16175:15;16192;16211:19;:17;:19::i;:::-;16174:56;;;;16248:20;16260:7;16248;:11;;:20;;;;:::i;:::-;16241:27;;;;16112:164;:::o;2931:132::-;2989:7;3016:39;3020:1;3023;3016:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3009:46;;2931:132;;;;:::o;8587:221::-;8647:1;8634:9;;:14;:30;;;;;8663:1;8652:7;;:12;8634:30;8666:7;8630:43;8706:9;;8686:17;:29;;;;8744:7;;8726:15;:25;;;;8777:1;8765:9;:13;;;;8799:1;8789:7;:11;;;;8587:221;:::o;13434:610::-;13581:15;13611:23;13649:12;13676:23;13714:12;13741:13;13768:19;13779:7;13768:10;:19::i;:::-;13566:221;;;;;;;;;;;;13816:28;13836:7;13816;:15;13824:6;13816:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13798:7;:15;13806:6;13798:15;;;;;;;;;;;;;;;:46;;;;13876:39;13899:15;13876:7;:18;13884:9;13876:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13855:7;:18;13863:9;13855:18;;;;;;;;;;;;;;;:60;;;;13926:16;13936:5;13926:9;:16::i;:::-;13953:23;13965:4;13971;13953:11;:23::i;:::-;14009:9;13992:44;;14001:6;13992:44;;;14020:15;13992:44;;;;;;:::i;:::-;;;;;;;;13555:489;;;;;;13434:610;;;:::o;8817:117::-;8873:17;;8861:9;:29;;;;8911:15;;8901:7;:25;;;;8817:117::o;16285:257::-;16336:7;16345;16365:15;16383:7;;16365:25;;16401:15;4729:18;16401:25;;16451:20;4729:18;16451:7;;:11;;:20;;;;:::i;:::-;16441:7;:30;16437:61;;;16481:7;;4729:18;16473:25;;;;;;;;16437:61;16517:7;16526;16509:25;;;;;;16285:257;;;:::o;3069:223::-;3189:7;3221:1;3217;:5;3224:12;3209:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3248:9;3264:1;3260;:5;;;;:::i;:::-;3248:17;;3283:1;3276:8;;;3069:223;;;;;:::o;14467:615::-;14567:7;14589;14611;14633;14655;14677;14713:23;14738:12;14752:13;14782:40;14794:7;14803:9;;14814:7;;14782:11;:40::i;:::-;14712:110;;;;;;14833:19;14855:10;:8;:10::i;:::-;14833:32;;14877:15;14894:23;14919:12;14948:46;14960:7;14969:4;14975:5;14982:11;14948;:46::i;:::-;14876:118;;;;;;15013:7;15022:15;15039:4;15045:15;15062:4;15068:5;15005:69;;;;;;;;;;;;;;;;;;;14467:615;;;;;;;:::o;2307:136::-;2365:7;2392:43;2396:1;2399;2392:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2385:50;;2307:136;;;;:::o;2122:179::-;2180:7;2200:9;2216:1;2212;:5;;;;:::i;:::-;2200:17;;2241:1;2236;:6;;2228:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2292:1;2285:8;;;2122:179;;;;:::o;14053:211::-;14106:19;14128:10;:8;:10::i;:::-;14106:32;;14149:13;14165:22;14175:11;14165:5;:9;;:22;;;;:::i;:::-;14149:38;;14223:33;14250:5;14223:7;:22;14239:4;14223:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14198:7;:22;14214:4;14198:22;;;;;;;;;;;;;;;:58;;;;14095:169;;14053:211;:::o;14273:147::-;14351:17;14363:4;14351:7;;:11;;:17;;;;:::i;:::-;14341:7;:27;;;;14392:20;14407:4;14392:10;;:14;;:20;;;;:::i;:::-;14379:10;:33;;;;14273:147;;:::o;15091:469::-;15260:7;15282;15304;15339:12;15354:30;15380:3;15354:21;15366:8;15354:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15339:45;;15395:13;15411:28;15435:3;15411:19;15423:6;15411:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15395:44;;15450:23;15476:28;15498:5;15476:17;15488:4;15476:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15450:54;;15523:15;15540:4;15546:5;15515:37;;;;;;;;;15091:469;;;;;;;:::o;15569:534::-;15763:7;15785;15807;15842:15;15860:24;15872:11;15860:7;:11;;:24;;;;:::i;:::-;15842:42;;15895:12;15910:21;15919:11;15910:4;:8;;:21;;;;:::i;:::-;15895:36;;15942:13;15958:22;15968:11;15958:5;:9;;:22;;;;:::i;:::-;15942:38;;15991:23;16017:28;16039:5;16017:17;16029:4;16017:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15991:54;;16064:7;16073:15;16090:4;16056:39;;;;;;;;;;15569:534;;;;;;;;:::o;2679:246::-;2737:7;2766:1;2761;:6;2757:47;;2791:1;2784:8;;;;2757:47;2814:9;2830:1;2826;:5;;;;:::i;:::-;2814:17;;2859:1;2854;2850;:5;;;;:::i;:::-;:10;2842:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2916:1;2909:8;;;2679:246;;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:152::-;4348:9;4381:37;4412:5;4381:37;:::i;:::-;4368:50;;4272:152;;;:::o;4430:183::-;4543:63;4600:5;4543:63;:::i;:::-;4538:3;4531:76;4430:183;;:::o;4619:274::-;4738:4;4776:2;4765:9;4761:18;4753:26;;4789:97;4883:1;4872:9;4868:17;4859:6;4789:97;:::i;:::-;4619:274;;;;:::o;4899:118::-;4986:24;5004:5;4986:24;:::i;:::-;4981:3;4974:37;4899:118;;:::o;5023:222::-;5116:4;5154:2;5143:9;5139:18;5131:26;;5167:71;5235:1;5224:9;5220:17;5211:6;5167:71;:::i;:::-;5023:222;;;;:::o;5251:329::-;5310:6;5359:2;5347:9;5338:7;5334:23;5330:32;5327:119;;;5365:79;;:::i;:::-;5327:119;5485:1;5510:53;5555:7;5546:6;5535:9;5531:22;5510:53;:::i;:::-;5500:63;;5456:117;5251:329;;;;:::o;5586:619::-;5663:6;5671;5679;5728:2;5716:9;5707:7;5703:23;5699:32;5696:119;;;5734:79;;:::i;:::-;5696:119;5854:1;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5825:117;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5586:619;;;;;:::o;6211:117::-;6320:1;6317;6310:12;6334:117;6443:1;6440;6433:12;6457:117;6566:1;6563;6556:12;6597:568;6670:8;6680:6;6730:3;6723:4;6715:6;6711:17;6707:27;6697:122;;6738:79;;:::i;:::-;6697:122;6851:6;6838:20;6828:30;;6881:18;6873:6;6870:30;6867:117;;;6903:79;;:::i;:::-;6867:117;7017:4;7009:6;7005:17;6993:29;;7071:3;7063:4;7055:6;7051:17;7041:8;7037:32;7034:41;7031:128;;;7078:79;;:::i;:::-;7031:128;6597:568;;;;;:::o;7171:116::-;7241:21;7256:5;7241:21;:::i;:::-;7234:5;7231:32;7221:60;;7277:1;7274;7267:12;7221:60;7171:116;:::o;7293:133::-;7336:5;7374:6;7361:20;7352:29;;7390:30;7414:5;7390:30;:::i;:::-;7293:133;;;;:::o;7432:698::-;7524:6;7532;7540;7589:2;7577:9;7568:7;7564:23;7560:32;7557:119;;;7595:79;;:::i;:::-;7557:119;7743:1;7732:9;7728:17;7715:31;7773:18;7765:6;7762:30;7759:117;;;7795:79;;:::i;:::-;7759:117;7908:80;7980:7;7971:6;7960:9;7956:22;7908:80;:::i;:::-;7890:98;;;;7686:312;8037:2;8063:50;8105:7;8096:6;8085:9;8081:22;8063:50;:::i;:::-;8053:60;;8008:115;7432:698;;;;;:::o;8136:86::-;8171:7;8211:4;8204:5;8200:16;8189:27;;8136:86;;;:::o;8228:112::-;8311:22;8327:5;8311:22;:::i;:::-;8306:3;8299:35;8228:112;;:::o;8346:214::-;8435:4;8473:2;8462:9;8458:18;8450:26;;8486:67;8550:1;8539:9;8535:17;8526:6;8486:67;:::i;:::-;8346:214;;;;:::o;8566:104::-;8611:7;8640:24;8658:5;8640:24;:::i;:::-;8629:35;;8566:104;;;:::o;8676:142::-;8779:32;8805:5;8779:32;:::i;:::-;8774:3;8767:45;8676:142;;:::o;8824:254::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:87;9068:1;9057:9;9053:17;9044:6;8984:87;:::i;:::-;8824:254;;;;:::o;9084:118::-;9171:24;9189:5;9171:24;:::i;:::-;9166:3;9159:37;9084:118;;:::o;9208:222::-;9301:4;9339:2;9328:9;9324:18;9316:26;;9352:71;9420:1;9409:9;9405:17;9396:6;9352:71;:::i;:::-;9208:222;;;;:::o;9436:329::-;9495:6;9544:2;9532:9;9523:7;9519:23;9515:32;9512:119;;;9550:79;;:::i;:::-;9512:119;9670:1;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9641:117;9436:329;;;;:::o;9771:323::-;9827:6;9876:2;9864:9;9855:7;9851:23;9847:32;9844:119;;;9882:79;;:::i;:::-;9844:119;10002:1;10027:50;10069:7;10060:6;10049:9;10045:22;10027:50;:::i;:::-;10017:60;;9973:114;9771:323;;;;:::o;10100:474::-;10168:6;10176;10225:2;10213:9;10204:7;10200:23;10196:32;10193:119;;;10231:79;;:::i;:::-;10193:119;10351:1;10376:53;10421:7;10412:6;10401:9;10397:22;10376:53;:::i;:::-;10366:63;;10322:117;10478:2;10504:53;10549:7;10540:6;10529:9;10525:22;10504:53;:::i;:::-;10494:63;;10449:118;10100:474;;;;;:::o;10580:180::-;10628:77;10625:1;10618:88;10725:4;10722:1;10715:15;10749:4;10746:1;10739:15;10766:281;10849:27;10871:4;10849:27;:::i;:::-;10841:6;10837:40;10979:6;10967:10;10964:22;10943:18;10931:10;10928:34;10925:62;10922:88;;;10990:18;;:::i;:::-;10922:88;11030:10;11026:2;11019:22;10809:238;10766:281;;:::o;11053:129::-;11087:6;11114:20;;:::i;:::-;11104:30;;11143:33;11171:4;11163:6;11143:33;:::i;:::-;11053:129;;;:::o;11188:311::-;11265:4;11355:18;11347:6;11344:30;11341:56;;;11377:18;;:::i;:::-;11341:56;11427:4;11419:6;11415:17;11407:25;;11487:4;11481;11477:15;11469:23;;11188:311;;;:::o;11522:710::-;11618:5;11643:81;11659:64;11716:6;11659:64;:::i;:::-;11643:81;:::i;:::-;11634:90;;11744:5;11773:6;11766:5;11759:21;11807:4;11800:5;11796:16;11789:23;;11860:4;11852:6;11848:17;11840:6;11836:30;11889:3;11881:6;11878:15;11875:122;;;11908:79;;:::i;:::-;11875:122;12023:6;12006:220;12040:6;12035:3;12032:15;12006:220;;;12115:3;12144:37;12177:3;12165:10;12144:37;:::i;:::-;12139:3;12132:50;12211:4;12206:3;12202:14;12195:21;;12082:144;12066:4;12061:3;12057:14;12050:21;;12006:220;;;12010:21;11624:608;;11522:710;;;;;:::o;12255:370::-;12326:5;12375:3;12368:4;12360:6;12356:17;12352:27;12342:122;;12383:79;;:::i;:::-;12342:122;12500:6;12487:20;12525:94;12615:3;12607:6;12600:4;12592:6;12588:17;12525:94;:::i;:::-;12516:103;;12332:293;12255:370;;;;:::o;12631:539::-;12715:6;12764:2;12752:9;12743:7;12739:23;12735:32;12732:119;;;12770:79;;:::i;:::-;12732:119;12918:1;12907:9;12903:17;12890:31;12948:18;12940:6;12937:30;12934:117;;;12970:79;;:::i;:::-;12934:117;13075:78;13145:7;13136:6;13125:9;13121:22;13075:78;:::i;:::-;13065:88;;12861:302;12631:539;;;;:::o;13176:182::-;13316:34;13312:1;13304:6;13300:14;13293:58;13176:182;:::o;13364:366::-;13506:3;13527:67;13591:2;13586:3;13527:67;:::i;:::-;13520:74;;13603:93;13692:3;13603:93;:::i;:::-;13721:2;13716:3;13712:12;13705:19;;13364:366;;;:::o;13736:419::-;13902:4;13940:2;13929:9;13925:18;13917:26;;13989:9;13983:4;13979:20;13975:1;13964:9;13960:17;13953:47;14017:131;14143:4;14017:131;:::i;:::-;14009:139;;13736:419;;;:::o;14161:180::-;14209:77;14206:1;14199:88;14306:4;14303:1;14296:15;14330:4;14327:1;14320:15;14347:410;14387:7;14410:20;14428:1;14410:20;:::i;:::-;14405:25;;14444:20;14462:1;14444:20;:::i;:::-;14439:25;;14499:1;14496;14492:9;14521:30;14539:11;14521:30;:::i;:::-;14510:41;;14700:1;14691:7;14687:15;14684:1;14681:22;14661:1;14654:9;14634:83;14611:139;;14730:18;;:::i;:::-;14611:139;14395:362;14347:410;;;;:::o;14763:180::-;14811:77;14808:1;14801:88;14908:4;14905:1;14898:15;14932:4;14929:1;14922:15;14949:233;14988:3;15011:24;15029:5;15011:24;:::i;:::-;15002:33;;15057:66;15050:5;15047:77;15044:103;;15127:18;;:::i;:::-;15044:103;15174:1;15167:5;15163:13;15156:20;;14949:233;;;:::o;15188:225::-;15328:34;15324:1;15316:6;15312:14;15305:58;15397:8;15392:2;15384:6;15380:15;15373:33;15188:225;:::o;15419:366::-;15561:3;15582:67;15646:2;15641:3;15582:67;:::i;:::-;15575:74;;15658:93;15747:3;15658:93;:::i;:::-;15776:2;15771:3;15767:12;15760:19;;15419:366;;;:::o;15791:419::-;15957:4;15995:2;15984:9;15980:18;15972:26;;16044:9;16038:4;16034:20;16030:1;16019:9;16015:17;16008:47;16072:131;16198:4;16072:131;:::i;:::-;16064:139;;15791:419;;;:::o;16216:223::-;16356:34;16352:1;16344:6;16340:14;16333:58;16425:6;16420:2;16412:6;16408:15;16401:31;16216:223;:::o;16445:366::-;16587:3;16608:67;16672:2;16667:3;16608:67;:::i;:::-;16601:74;;16684:93;16773:3;16684:93;:::i;:::-;16802:2;16797:3;16793:12;16786:19;;16445:366;;;:::o;16817:419::-;16983:4;17021:2;17010:9;17006:18;16998:26;;17070:9;17064:4;17060:20;17056:1;17045:9;17041:17;17034:47;17098:131;17224:4;17098:131;:::i;:::-;17090:139;;16817:419;;;:::o;17242:221::-;17382:34;17378:1;17370:6;17366:14;17359:58;17451:4;17446:2;17438:6;17434:15;17427:29;17242:221;:::o;17469:366::-;17611:3;17632:67;17696:2;17691:3;17632:67;:::i;:::-;17625:74;;17708:93;17797:3;17708:93;:::i;:::-;17826:2;17821:3;17817:12;17810:19;;17469:366;;;:::o;17841:419::-;18007:4;18045:2;18034:9;18030:18;18022:26;;18094:9;18088:4;18084:20;18080:1;18069:9;18065:17;18058:47;18122:131;18248:4;18122:131;:::i;:::-;18114:139;;17841:419;;;:::o;18266:224::-;18406:34;18402:1;18394:6;18390:14;18383:58;18475:7;18470:2;18462:6;18458:15;18451:32;18266:224;:::o;18496:366::-;18638:3;18659:67;18723:2;18718:3;18659:67;:::i;:::-;18652:74;;18735:93;18824:3;18735:93;:::i;:::-;18853:2;18848:3;18844:12;18837:19;;18496:366;;;:::o;18868:419::-;19034:4;19072:2;19061:9;19057:18;19049:26;;19121:9;19115:4;19111:20;19107:1;19096:9;19092:17;19085:47;19149:131;19275:4;19149:131;:::i;:::-;19141:139;;18868:419;;;:::o;19293:222::-;19433:34;19429:1;19421:6;19417:14;19410:58;19502:5;19497:2;19489:6;19485:15;19478:30;19293:222;:::o;19521:366::-;19663:3;19684:67;19748:2;19743:3;19684:67;:::i;:::-;19677:74;;19760:93;19849:3;19760:93;:::i;:::-;19878:2;19873:3;19869:12;19862:19;;19521:366;;;:::o;19893:419::-;20059:4;20097:2;20086:9;20082:18;20074:26;;20146:9;20140:4;20136:20;20132:1;20121:9;20117:17;20110:47;20174:131;20300:4;20174:131;:::i;:::-;20166:139;;19893:419;;;:::o;20318:228::-;20458:34;20454:1;20446:6;20442:14;20435:58;20527:11;20522:2;20514:6;20510:15;20503:36;20318:228;:::o;20552:366::-;20694:3;20715:67;20779:2;20774:3;20715:67;:::i;:::-;20708:74;;20791:93;20880:3;20791:93;:::i;:::-;20909:2;20904:3;20900:12;20893:19;;20552:366;;;:::o;20924:419::-;21090:4;21128:2;21117:9;21113:18;21105:26;;21177:9;21171:4;21167:20;21163:1;21152:9;21148:17;21141:47;21205:131;21331:4;21205:131;:::i;:::-;21197:139;;20924:419;;;:::o;21349:250::-;21489:34;21485:1;21477:6;21473:14;21466:58;21558:33;21553:2;21545:6;21541:15;21534:58;21349:250;:::o;21605:366::-;21747:3;21768:67;21832:2;21827:3;21768:67;:::i;:::-;21761:74;;21844:93;21933:3;21844:93;:::i;:::-;21962:2;21957:3;21953:12;21946:19;;21605:366;;;:::o;21977:419::-;22143:4;22181:2;22170:9;22166:18;22158:26;;22230:9;22224:4;22220:20;22216:1;22205:9;22201:17;22194:47;22258:131;22384:4;22258:131;:::i;:::-;22250:139;;21977:419;;;:::o;22402:178::-;22542:30;22538:1;22530:6;22526:14;22519:54;22402:178;:::o;22586:366::-;22728:3;22749:67;22813:2;22808:3;22749:67;:::i;:::-;22742:74;;22825:93;22914:3;22825:93;:::i;:::-;22943:2;22938:3;22934:12;22927:19;;22586:366;;;:::o;22958:419::-;23124:4;23162:2;23151:9;23147:18;23139:26;;23211:9;23205:4;23201:20;23197:1;23186:9;23182:17;23175:47;23239:131;23365:4;23239:131;:::i;:::-;23231:139;;22958:419;;;:::o;23383:222::-;23523:34;23519:1;23511:6;23507:14;23500:58;23592:5;23587:2;23579:6;23575:15;23568:30;23383:222;:::o;23611:366::-;23753:3;23774:67;23838:2;23833:3;23774:67;:::i;:::-;23767:74;;23850:93;23939:3;23850:93;:::i;:::-;23968:2;23963:3;23959:12;23952:19;;23611:366;;;:::o;23983:419::-;24149:4;24187:2;24176:9;24172:18;24164:26;;24236:9;24230:4;24226:20;24222:1;24211:9;24207:17;24200:47;24264:131;24390:4;24264:131;:::i;:::-;24256:139;;23983:419;;;:::o;24408:191::-;24448:3;24467:20;24485:1;24467:20;:::i;:::-;24462:25;;24501:20;24519:1;24501:20;:::i;:::-;24496:25;;24544:1;24541;24537:9;24530:16;;24565:3;24562:1;24559:10;24556:36;;;24572:18;;:::i;:::-;24556:36;24408:191;;;;:::o;24605:222::-;24745:34;24741:1;24733:6;24729:14;24722:58;24814:5;24809:2;24801:6;24797:15;24790:30;24605:222;:::o;24833:366::-;24975:3;24996:67;25060:2;25055:3;24996:67;:::i;:::-;24989:74;;25072:93;25161:3;25072:93;:::i;:::-;25190:2;25185:3;25181:12;25174:19;;24833:366;;;:::o;25205:419::-;25371:4;25409:2;25398:9;25394:18;25386:26;;25458:9;25452:4;25448:20;25444:1;25433:9;25429:17;25422:47;25486:131;25612:4;25486:131;:::i;:::-;25478:139;;25205:419;;;:::o;25630:194::-;25670:4;25690:20;25708:1;25690:20;:::i;:::-;25685:25;;25724:20;25742:1;25724:20;:::i;:::-;25719:25;;25768:1;25765;25761:9;25753:17;;25792:1;25786:4;25783:11;25780:37;;;25797:18;;:::i;:::-;25780:37;25630:194;;;;:::o;25830:229::-;25970:34;25966:1;25958:6;25954:14;25947:58;26039:12;26034:2;26026:6;26022:15;26015:37;25830:229;:::o;26065:366::-;26207:3;26228:67;26292:2;26287:3;26228:67;:::i;:::-;26221:74;;26304:93;26393:3;26304:93;:::i;:::-;26422:2;26417:3;26413:12;26406:19;;26065:366;;;:::o;26437:419::-;26603:4;26641:2;26630:9;26626:18;26618:26;;26690:9;26684:4;26680:20;26676:1;26665:9;26661:17;26654:47;26718:131;26844:4;26718:131;:::i;:::-;26710:139;;26437:419;;;:::o;26862:143::-;26919:5;26950:6;26944:13;26935:22;;26966:33;26993:5;26966:33;:::i;:::-;26862:143;;;;:::o;27011:351::-;27081:6;27130:2;27118:9;27109:7;27105:23;27101:32;27098:119;;;27136:79;;:::i;:::-;27098:119;27256:1;27281:64;27337:7;27328:6;27317:9;27313:22;27281:64;:::i;:::-;27271:74;;27227:128;27011:351;;;;:::o;27368:85::-;27413:7;27442:5;27431:16;;27368:85;;;:::o;27459:158::-;27517:9;27550:61;27568:42;27577:32;27603:5;27577:32;:::i;:::-;27568:42;:::i;:::-;27550:61;:::i;:::-;27537:74;;27459:158;;;:::o;27623:147::-;27718:45;27757:5;27718:45;:::i;:::-;27713:3;27706:58;27623:147;;:::o;27776:114::-;27843:6;27877:5;27871:12;27861:22;;27776:114;;;:::o;27896:184::-;27995:11;28029:6;28024:3;28017:19;28069:4;28064:3;28060:14;28045:29;;27896:184;;;;:::o;28086:132::-;28153:4;28176:3;28168:11;;28206:4;28201:3;28197:14;28189:22;;28086:132;;;:::o;28224:108::-;28301:24;28319:5;28301:24;:::i;:::-;28296:3;28289:37;28224:108;;:::o;28338:179::-;28407:10;28428:46;28470:3;28462:6;28428:46;:::i;:::-;28506:4;28501:3;28497:14;28483:28;;28338:179;;;;:::o;28523:113::-;28593:4;28625;28620:3;28616:14;28608:22;;28523:113;;;:::o;28672:732::-;28791:3;28820:54;28868:5;28820:54;:::i;:::-;28890:86;28969:6;28964:3;28890:86;:::i;:::-;28883:93;;29000:56;29050:5;29000:56;:::i;:::-;29079:7;29110:1;29095:284;29120:6;29117:1;29114:13;29095:284;;;29196:6;29190:13;29223:63;29282:3;29267:13;29223:63;:::i;:::-;29216:70;;29309:60;29362:6;29309:60;:::i;:::-;29299:70;;29155:224;29142:1;29139;29135:9;29130:14;;29095:284;;;29099:14;29395:3;29388:10;;28796:608;;;28672:732;;;;:::o;29410:831::-;29673:4;29711:3;29700:9;29696:19;29688:27;;29725:71;29793:1;29782:9;29778:17;29769:6;29725:71;:::i;:::-;29806:80;29882:2;29871:9;29867:18;29858:6;29806:80;:::i;:::-;29933:9;29927:4;29923:20;29918:2;29907:9;29903:18;29896:48;29961:108;30064:4;30055:6;29961:108;:::i;:::-;29953:116;;30079:72;30147:2;30136:9;30132:18;30123:6;30079:72;:::i;:::-;30161:73;30229:3;30218:9;30214:19;30205:6;30161:73;:::i;:::-;29410:831;;;;;;;;:::o;30247:180::-;30295:77;30292:1;30285:88;30392:4;30389:1;30382:15;30416:4;30413:1;30406:15;30433:185;30473:1;30490:20;30508:1;30490:20;:::i;:::-;30485:25;;30524:20;30542:1;30524:20;:::i;:::-;30519:25;;30563:1;30553:35;;30568:18;;:::i;:::-;30553:35;30610:1;30607;30603:9;30598:14;;30433:185;;;;:::o;30624:177::-;30764:29;30760:1;30752:6;30748:14;30741:53;30624:177;:::o;30807:366::-;30949:3;30970:67;31034:2;31029:3;30970:67;:::i;:::-;30963:74;;31046:93;31135:3;31046:93;:::i;:::-;31164:2;31159:3;31155:12;31148:19;;30807:366;;;:::o;31179:419::-;31345:4;31383:2;31372:9;31368:18;31360:26;;31432:9;31426:4;31422:20;31418:1;31407:9;31403:17;31396:47;31460:131;31586:4;31460:131;:::i;:::-;31452:139;;31179:419;;;:::o;31604:220::-;31744:34;31740:1;31732:6;31728:14;31721:58;31813:3;31808:2;31800:6;31796:15;31789:28;31604:220;:::o;31830:366::-;31972:3;31993:67;32057:2;32052:3;31993:67;:::i;:::-;31986:74;;32069:93;32158:3;32069:93;:::i;:::-;32187:2;32182:3;32178:12;32171:19;;31830:366;;;:::o;32202:419::-;32368:4;32406:2;32395:9;32391:18;32383:26;;32455:9;32449:4;32445:20;32441:1;32430:9;32426:17;32419:47;32483:131;32609:4;32483:131;:::i;:::-;32475:139;;32202:419;;;:::o
Swarm Source
ipfs://91cafdd695dbee2699d644a0411f9b6643189441ad4cf75f472fc1988ec5caf6
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.