Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 Frog
Holders
19
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.72773035 FrogValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Frog
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-01 */ /** https://medium.com/@mcfrogerc20/mcfrog-ribbit-f3d3a15971ab */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; 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 Frog is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "McFrog"; string private constant _symbol = "Frog"; 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 = 10; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 20; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x06F8C549192902B532E7d6Fe1F2E2ED245306C37); address payable private _marketingAddress = payable(0x06F8C549192902B532E7d6Fe1F2E2ED245306C37); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000 * 10**9; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 10000 * 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()); _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 buytax() public view returns (uint256) { return _taxFeeOnBuy; } 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 removeFee() 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 >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } 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 enableTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualSwap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualclaim() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockAllBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockAllBots(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeFee(); _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 setnewTax(uint256 redisBuy, uint256 redisSell, uint256 taxBuy, uint256 taxSell) public onlyOwner { _redisFeeOnBuy = redisBuy; _redisFeeOnSell = redisSell; _taxFeeOnBuy = taxBuy; _taxFeeOnSell = taxSell; } //Set minimum tokens required to swap. function setminSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setmaxtx(uint256 maxtx,uint256 maxw) public onlyOwner { _maxTxAmount = maxtx; _maxWalletSize = maxw; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockAllBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualclaim","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxtx","type":"uint256"},{"internalType":"uint256","name":"maxw","type":"uint256"}],"name":"setmaxtx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setminSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisBuy","type":"uint256"},{"internalType":"uint256","name":"redisSell","type":"uint256"},{"internalType":"uint256","name":"taxBuy","type":"uint256"},{"internalType":"uint256","name":"taxSell","type":"uint256"}],"name":"setnewTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":"unblockAllBots","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b6006556000600855600a6009556000600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f557306f8c549192902b532e7d6fe1f2e2ed245306c37601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507306f8c549192902b532e7d6fe1f2e2ed245306c37601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613d9680620009136000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e1461065f578063ec49f2931461069c578063f275f64b146106c5578063f2fde38b146106ee576101d8565b8063a9059cbb146105a5578063b360711d146105e2578063bfd79284146105f9578063c492f04614610636576101d8565b80637f2feddc116100d15780637f2feddc146104e75780638da5cb5b146105245780638f9a55c01461054f57806395d89b411461057a576101d8565b806370a0823114610468578063715018a6146104a55780637d1db4a5146104bc576101d8565b8063303517751161016f5780634a1263f31161013e5780634a1263f3146103d457806351bc3c85146103ff578063685fb737146104165780636d8aa8f81461043f576101d8565b8063303517751461032c578063313ce567146103555780633ee0f5f51461038057806349bd5a5e146103a9576101d8565b806318160ddd116101ab57806318160ddd146102705780631c1a480b1461029b57806323b872dd146102c45780632fd689e314610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612bb0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7a565b610754565b60405161023c9190612cd5565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612d4f565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612d79565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d94565b6107a8565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612dc1565b610898565b6040516102f89190612cd5565b60405180910390f35b34801561030d57600080fd5b50610316610971565b6040516103239190612d79565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190612f5c565b610977565b005b34801561036157600080fd5b5061036a610aa1565b6040516103779190612fc1565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612fdc565b610aaa565b005b3480156103b557600080fd5b506103be610b49565b6040516103cb9190613018565b60405180910390f35b3480156103e057600080fd5b506103e9610b6f565b6040516103f69190612d79565b60405180910390f35b34801561040b57600080fd5b50610414610b79565b005b34801561042257600080fd5b5061043d60048036038101906104389190613033565b610c52565b005b34801561044b57600080fd5b506104666004803603810190610461919061309f565b610cf9565b005b34801561047457600080fd5b5061048f600480360381019061048a9190612d94565b610dab565b60405161049c9190612d79565b60405180910390f35b3480156104b157600080fd5b506104ba610dfc565b005b3480156104c857600080fd5b506104d1610f4f565b6040516104de9190612d79565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190612d94565b610f55565b60405161051b9190612d79565b60405180910390f35b34801561053057600080fd5b50610539610f6d565b6040516105469190613018565b60405180910390f35b34801561055b57600080fd5b50610564610f96565b6040516105719190612d79565b60405180910390f35b34801561058657600080fd5b5061058f610f9c565b60405161059c9190612bb0565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c79190612c7a565b610fd9565b6040516105d99190612cd5565b60405180910390f35b3480156105ee57600080fd5b506105f7610ff7565b005b34801561060557600080fd5b50610620600480360381019061061b9190612d94565b6110c8565b60405161062d9190612cd5565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190613127565b6110e8565b005b34801561066b57600080fd5b5061068660048036038101906106819190613187565b611222565b6040516106939190612d79565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be91906131c7565b6112a9565b005b3480156106d157600080fd5b506106ec60048036038101906106e7919061309f565b611360565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612d94565b611412565b005b60606040518060400160405280600681526020017f4d6346726f670000000000000000000000000000000000000000000000000000815250905090565b60006107686107616115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6107b06115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108349061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006108a58484846117a7565b610966846108b16115d4565b61096185604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109176115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b60185481565b61097f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a039061327a565b60405180910390fd5b60005b8151811015610a9d57600160106000848481518110610a3157610a3061329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a95906132f8565b915050610a0f565b5050565b60006009905090565b610ab26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b369061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bba6115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610c305750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c186115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610c3957600080fd5b6000610c4430610dab565b9050610c4f81612090565b50565b610c5a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde9061327a565b60405180910390fd5b81601681905550806017819055505050565b610d016115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d859061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610df5600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610e046115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e889061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f46726f6700000000000000000000000000000000000000000000000000000000815250905090565b6000610fed610fe66115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110386115d4565b73ffffffffffffffffffffffffffffffffffffffff1614806110ae5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110966115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b6110b757600080fd5b60004790506110c581612384565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b6110f06115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111749061327a565b60405180910390fd5b60005b8383905081101561121c5781600560008686858181106111a3576111a261329a565b5b90506020020160208101906111b89190612d94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611214906132f8565b915050611180565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112b16115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113359061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6113686115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec9061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610f6d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610f6d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610f6d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610dab565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610dab565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612bb0565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6612e19565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612bb0565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b51578082015181840152602081019050612b36565b83811115612b60576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b8282612b17565b612b8c8185612b22565b9350612b9c818560208601612b33565b612ba581612b66565b840191505092915050565b60006020820190508181036000830152612bca8184612b77565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612bdc565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b600060208284031215612daa57612da9612bdc565b5b6000612db884828501612c2f565b91505092915050565b600080600060608486031215612dda57612dd9612bdc565b5b6000612de886828701612c2f565b9350506020612df986828701612c2f565b9250506040612e0a86828701612c65565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e5182612b66565b810181811067ffffffffffffffff82111715612e7057612e6f612e19565b5b80604052505050565b6000612e83612bd2565b9050612e8f8282612e48565b919050565b600067ffffffffffffffff821115612eaf57612eae612e19565b5b602082029050602081019050919050565b600080fd5b6000612ed8612ed384612e94565b612e79565b90508083825260208201905060208402830185811115612efb57612efa612ec0565b5b835b81811015612f245780612f108882612c2f565b845260208401935050602081019050612efd565b5050509392505050565b600082601f830112612f4357612f42612e14565b5b8135612f53848260208601612ec5565b91505092915050565b600060208284031215612f7257612f71612bdc565b5b600082013567ffffffffffffffff811115612f9057612f8f612be1565b5b612f9c84828501612f2e565b91505092915050565b600060ff82169050919050565b612fbb81612fa5565b82525050565b6000602082019050612fd66000830184612fb2565b92915050565b600060208284031215612ff257612ff1612bdc565b5b600061300084828501612c65565b91505092915050565b61301281612c06565b82525050565b600060208201905061302d6000830184613009565b92915050565b6000806040838503121561304a57613049612bdc565b5b600061305885828601612c65565b925050602061306985828601612c65565b9150509250929050565b61307c81612cba565b811461308757600080fd5b50565b60008135905061309981613073565b92915050565b6000602082840312156130b5576130b4612bdc565b5b60006130c38482850161308a565b91505092915050565b600080fd5b60008083601f8401126130e7576130e6612e14565b5b8235905067ffffffffffffffff811115613104576131036130cc565b5b6020830191508360208202830111156131205761311f612ec0565b5b9250929050565b6000806000604084860312156131405761313f612bdc565b5b600084013567ffffffffffffffff81111561315e5761315d612be1565b5b61316a868287016130d1565b9350935050602061317d8682870161308a565b9150509250925092565b6000806040838503121561319e5761319d612bdc565b5b60006131ac85828601612c2f565b92505060206131bd85828601612c2f565b9150509250929050565b600080600080608085870312156131e1576131e0612bdc565b5b60006131ef87828801612c65565b945050602061320087828801612c65565b935050604061321187828801612c65565b925050606061322287828801612c65565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b22565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612c44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b22565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b22565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b22565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b22565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b22565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b22565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b22565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b22565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b22565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612c44565b915061385383612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b22565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612c44565b915061393b83612c44565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c18565b92915050565b60006020828403121561398457613983612bdc565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612cf0565b612c44565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c06565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612d6a565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185613009565b613ae46080830184612d6a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b22565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612c44565b9150613bc583612c44565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b22565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612c44565b9150613c6283612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b22565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200aa075e6b0e25b905f288bd33c7a905a5acc2913a0dd1a91d376ef37496fb17d64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e1461065f578063ec49f2931461069c578063f275f64b146106c5578063f2fde38b146106ee576101d8565b8063a9059cbb146105a5578063b360711d146105e2578063bfd79284146105f9578063c492f04614610636576101d8565b80637f2feddc116100d15780637f2feddc146104e75780638da5cb5b146105245780638f9a55c01461054f57806395d89b411461057a576101d8565b806370a0823114610468578063715018a6146104a55780637d1db4a5146104bc576101d8565b8063303517751161016f5780634a1263f31161013e5780634a1263f3146103d457806351bc3c85146103ff578063685fb737146104165780636d8aa8f81461043f576101d8565b8063303517751461032c578063313ce567146103555780633ee0f5f51461038057806349bd5a5e146103a9576101d8565b806318160ddd116101ab57806318160ddd146102705780631c1a480b1461029b57806323b872dd146102c45780632fd689e314610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612bb0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7a565b610754565b60405161023c9190612cd5565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612d4f565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612d79565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d94565b6107a8565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612dc1565b610898565b6040516102f89190612cd5565b60405180910390f35b34801561030d57600080fd5b50610316610971565b6040516103239190612d79565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190612f5c565b610977565b005b34801561036157600080fd5b5061036a610aa1565b6040516103779190612fc1565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612fdc565b610aaa565b005b3480156103b557600080fd5b506103be610b49565b6040516103cb9190613018565b60405180910390f35b3480156103e057600080fd5b506103e9610b6f565b6040516103f69190612d79565b60405180910390f35b34801561040b57600080fd5b50610414610b79565b005b34801561042257600080fd5b5061043d60048036038101906104389190613033565b610c52565b005b34801561044b57600080fd5b506104666004803603810190610461919061309f565b610cf9565b005b34801561047457600080fd5b5061048f600480360381019061048a9190612d94565b610dab565b60405161049c9190612d79565b60405180910390f35b3480156104b157600080fd5b506104ba610dfc565b005b3480156104c857600080fd5b506104d1610f4f565b6040516104de9190612d79565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190612d94565b610f55565b60405161051b9190612d79565b60405180910390f35b34801561053057600080fd5b50610539610f6d565b6040516105469190613018565b60405180910390f35b34801561055b57600080fd5b50610564610f96565b6040516105719190612d79565b60405180910390f35b34801561058657600080fd5b5061058f610f9c565b60405161059c9190612bb0565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c79190612c7a565b610fd9565b6040516105d99190612cd5565b60405180910390f35b3480156105ee57600080fd5b506105f7610ff7565b005b34801561060557600080fd5b50610620600480360381019061061b9190612d94565b6110c8565b60405161062d9190612cd5565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190613127565b6110e8565b005b34801561066b57600080fd5b5061068660048036038101906106819190613187565b611222565b6040516106939190612d79565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be91906131c7565b6112a9565b005b3480156106d157600080fd5b506106ec60048036038101906106e7919061309f565b611360565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612d94565b611412565b005b60606040518060400160405280600681526020017f4d6346726f670000000000000000000000000000000000000000000000000000815250905090565b60006107686107616115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6107b06115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108349061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006108a58484846117a7565b610966846108b16115d4565b61096185604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109176115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b60185481565b61097f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a039061327a565b60405180910390fd5b60005b8151811015610a9d57600160106000848481518110610a3157610a3061329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a95906132f8565b915050610a0f565b5050565b60006009905090565b610ab26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b369061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bba6115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610c305750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c186115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610c3957600080fd5b6000610c4430610dab565b9050610c4f81612090565b50565b610c5a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde9061327a565b60405180910390fd5b81601681905550806017819055505050565b610d016115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d859061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610df5600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610e046115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e889061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f46726f6700000000000000000000000000000000000000000000000000000000815250905090565b6000610fed610fe66115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110386115d4565b73ffffffffffffffffffffffffffffffffffffffff1614806110ae5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110966115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b6110b757600080fd5b60004790506110c581612384565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b6110f06115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111749061327a565b60405180910390fd5b60005b8383905081101561121c5781600560008686858181106111a3576111a261329a565b5b90506020020160208101906111b89190612d94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611214906132f8565b915050611180565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112b16115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113359061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6113686115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec9061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610f6d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610f6d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610f6d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610dab565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610dab565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612bb0565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6612e19565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612bb0565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b51578082015181840152602081019050612b36565b83811115612b60576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b8282612b17565b612b8c8185612b22565b9350612b9c818560208601612b33565b612ba581612b66565b840191505092915050565b60006020820190508181036000830152612bca8184612b77565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612bdc565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b600060208284031215612daa57612da9612bdc565b5b6000612db884828501612c2f565b91505092915050565b600080600060608486031215612dda57612dd9612bdc565b5b6000612de886828701612c2f565b9350506020612df986828701612c2f565b9250506040612e0a86828701612c65565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e5182612b66565b810181811067ffffffffffffffff82111715612e7057612e6f612e19565b5b80604052505050565b6000612e83612bd2565b9050612e8f8282612e48565b919050565b600067ffffffffffffffff821115612eaf57612eae612e19565b5b602082029050602081019050919050565b600080fd5b6000612ed8612ed384612e94565b612e79565b90508083825260208201905060208402830185811115612efb57612efa612ec0565b5b835b81811015612f245780612f108882612c2f565b845260208401935050602081019050612efd565b5050509392505050565b600082601f830112612f4357612f42612e14565b5b8135612f53848260208601612ec5565b91505092915050565b600060208284031215612f7257612f71612bdc565b5b600082013567ffffffffffffffff811115612f9057612f8f612be1565b5b612f9c84828501612f2e565b91505092915050565b600060ff82169050919050565b612fbb81612fa5565b82525050565b6000602082019050612fd66000830184612fb2565b92915050565b600060208284031215612ff257612ff1612bdc565b5b600061300084828501612c65565b91505092915050565b61301281612c06565b82525050565b600060208201905061302d6000830184613009565b92915050565b6000806040838503121561304a57613049612bdc565b5b600061305885828601612c65565b925050602061306985828601612c65565b9150509250929050565b61307c81612cba565b811461308757600080fd5b50565b60008135905061309981613073565b92915050565b6000602082840312156130b5576130b4612bdc565b5b60006130c38482850161308a565b91505092915050565b600080fd5b60008083601f8401126130e7576130e6612e14565b5b8235905067ffffffffffffffff811115613104576131036130cc565b5b6020830191508360208202830111156131205761311f612ec0565b5b9250929050565b6000806000604084860312156131405761313f612bdc565b5b600084013567ffffffffffffffff81111561315e5761315d612be1565b5b61316a868287016130d1565b9350935050602061317d8682870161308a565b9150509250925092565b6000806040838503121561319e5761319d612bdc565b5b60006131ac85828601612c2f565b92505060206131bd85828601612c2f565b9150509250929050565b600080600080608085870312156131e1576131e0612bdc565b5b60006131ef87828801612c65565b945050602061320087828801612c65565b935050604061321187828801612c65565b925050606061322287828801612c65565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b22565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612c44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b22565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b22565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b22565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b22565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b22565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b22565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b22565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b22565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b22565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612c44565b915061385383612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b22565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612c44565b915061393b83612c44565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c18565b92915050565b60006020828403121561398457613983612bdc565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612cf0565b612c44565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c06565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612d6a565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185613009565b613ae46080830184612d6a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b22565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612c44565b9150613bc583612c44565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b22565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612c44565b9150613c6283612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b22565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200aa075e6b0e25b905f288bd33c7a905a5acc2913a0dd1a91d376ef37496fb17d64736f6c63430008090033
Deployed Bytecode Sourcemap
4139:13478:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6633:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7654:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7006:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13082:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7855:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5781:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12902:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6819:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16887:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5524:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6911:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12414:236;;;;;;;;;;;;;:::i;:::-;;17226:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17078:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7109:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1626:148;;;;;;;;;;;;;:::i;:::-;;5673:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5218:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1412:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5726:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6724:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7255:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12658:236;;;;;;;;;;;;;:::i;:::-;;5180:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17378:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7462:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16581:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12302:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1782:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6633:83;6670:13;6703:5;;;;;;;;;;;;;;;;;6696:12;;6633:83;:::o;7654:193::-;7756:4;7778:39;7787:12;:10;:12::i;:::-;7801:7;7810:6;7778:8;:39::i;:::-;7835:4;7828:11;;7654:193;;;;:::o;5476:41::-;;;;;;;;;;;;;:::o;7006:95::-;7059:7;4680:18;7079:14;;7006:95;:::o;13082:96::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13165:5:::1;13150:4;:12;13155:6;13150:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13082:96:::0;:::o;7855:446::-;7987:4;8004:36;8014:6;8022:9;8033:6;8004:9;:36::i;:::-;8051:220;8074:6;8095:12;:10;:12::i;:::-;8122:138;8178:6;8122:138;;;;;;;;;;;;;;;;;:11;:19;8134:6;8122:19;;;;;;;;;;;;;;;:33;8142:12;:10;:12::i;:::-;8122:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8051:8;:220::i;:::-;8289:4;8282:11;;7855:446;;;;;:::o;5781:50::-;;;;:::o;12902:172::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12981:9:::1;12976:91;13000:5;:12;12996:1;:16;12976:91;;;13051:4;13034;:14;13039:5;13045:1;13039:8;;;;;;;;:::i;:::-;;;;;;;;13034:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13014:3;;;;;:::i;:::-;;;;12976:91;;;;12902:172:::0;:::o;6819:83::-;6860:5;4354:1;6878:16;;6819:83;:::o;16887:139::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17000:18:::1;16978:19;:40;;;;16887:139:::0;:::o;5524:28::-;;;;;;;;;;;;;:::o;6911:87::-;6951:7;6978:12;;6971:19;;6911:87;:::o;12414:236::-;12480:19;;;;;;;;;;;12464:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12519:17;;;;;;;;;;;12503:33;;:12;:10;:12::i;:::-;:33;;;12464:72;12456:81;;;;;;12548:23;12574:24;12592:4;12574:9;:24::i;:::-;12548:50;;12609:33;12626:15;12609:16;:33::i;:::-;12445:205;12414:236::o;17226:144::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17315:5:::1;17300:12;:20;;;;17348:4;17331:14;:21;;;;17226:144:::0;;:::o;17078:101::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17159:12:::1;17145:11;;:26;;;;;;;;;;;;;;;;;;17078:101:::0;:::o;7109:138::-;7175:7;7202:37;7222:7;:16;7230:7;7222:16;;;;;;;;;;;;;;;;7202:19;:37::i;:::-;7195:44;;7109:138;;;:::o;1626:148::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1733:1:::1;1696:40;;1717:6;::::0;::::1;;;;;;;;1696:40;;;;;;;;;;;;1764:1;1747:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1626:148::o:0;5673:46::-;;;;:::o;5218:43::-;;;;;;;;;;;;;;;;;:::o;1412:79::-;1450:7;1477:6;;;;;;;;;;;1470:13;;1412:79;:::o;5726:48::-;;;;:::o;6724:87::-;6763:13;6796:7;;;;;;;;;;;;;;;;;6789:14;;6724:87;:::o;7255:199::-;7360:4;7382:42;7392:12;:10;:12::i;:::-;7406:9;7417:6;7382:9;:42::i;:::-;7442:4;7435:11;;7255:199;;;;:::o;12658:236::-;12725:19;;;;;;;;;;;12709:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12764:17;;;;;;;;;;;12748:33;;:12;:10;:12::i;:::-;:33;;;12709:72;12701:81;;;;;;12793:26;12822:21;12793:50;;12854:32;12867:18;12854:12;:32::i;:::-;12690:204;12658:236::o;5180:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17378:234::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17495:9:::1;17491:114;17514:8;;:15;;17510:1;:19;17491:114;;;17585:8;17551:18;:31;17570:8;;17579:1;17570:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17551:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17531:3;;;;;:::i;:::-;;;;17491:114;;;;17378:234:::0;;;:::o;7462:184::-;7579:7;7611:11;:18;7623:5;7611:18;;;;;;;;;;;;;;;:27;7630:7;7611:27;;;;;;;;;;;;;;;;7604:34;;7462:184;;;;:::o;16581:254::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16715:8:::1;16698:14;:25;;;;16752:9;16734:15;:27;;;;16787:6;16772:12;:21;;;;16820:7;16804:13;:23;;;;16581:254:::0;;;;:::o;12302:104::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12386:12:::1;12372:11;;:26;;;;;;;;;;;;;;;;;;12302:104:::0;:::o;1782:244::-;1549:12;:10;:12::i;:::-;1539:22;;:6;;;;;;;;;;:22;;;1531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1891:1:::1;1871:22;;:8;:22;;;;1863:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1981:8;1952:38;;1973:6;::::0;::::1;;;;;;;;1952:38;;;;;;;;;;;;2010:8;2001:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1782:244:::0;:::o;171:98::-;224:7;251:10;244:17;;171:98;:::o;8989:369::-;9133:1;9116:19;;:5;:19;;;;9108:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9214:1;9195:21;;:7;:21;;;;9187:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9296:6;9266:11;:18;9278:5;9266:18;;;;;;;;;;;;;;;:27;9285:7;9266:27;;;;;;;;;;;;;;;:36;;;;9334:7;9318:32;;9327:5;9318:32;;;9343:6;9318:32;;;;;;:::i;:::-;;;;;;;;8989:369;;;:::o;9366:2330::-;9504:1;9488:18;;:4;:18;;;;9480:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9581:1;9567:16;;:2;:16;;;;9559:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9651:1;9642:6;:10;9634:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9723:7;:5;:7::i;:::-;9715:15;;:4;:15;;;;:32;;;;;9740:7;:5;:7::i;:::-;9734:13;;:2;:13;;;;9715:32;9711:1259;;;9804:11;;;;;;;;;;;9799:144;;9852:7;:5;:7::i;:::-;9844:15;;:4;:15;;;9836:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9799:144;9977:12;;9967:6;:22;;9959:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10046:4;:10;10051:4;10046:10;;;;;;;;;;;;;;;;;;;;;;;;;10045:11;:24;;;;;10061:4;:8;10066:2;10061:8;;;;;;;;;;;;;;;;;;;;;;;;;10060:9;10045:24;10037:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10135:13;;;;;;;;;;;10129:19;;:2;:19;;;10126:146;;10202:14;;10193:6;10177:13;10187:2;10177:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10169:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10126:146;10288:28;10319:24;10337:4;10319:9;:24::i;:::-;10288:55;;10358:12;10397:19;;10373:20;:43;;10358:58;;10460:12;;10436:20;:36;10433:124;;10529:12;;10506:35;;10433:124;10577:7;:18;;;;;10589:6;;;;;;;;;;10588:7;10577:18;:43;;;;;10607:13;;;;;;;;;;;10599:21;;:4;:21;;;;10577:43;:58;;;;;10624:11;;;;;;;;;;;10577:58;:87;;;;;10640:18;:24;10659:4;10640:24;;;;;;;;;;;;;;;;;;;;;;;;;10639:25;10577:87;:114;;;;;10669:18;:22;10688:2;10669:22;;;;;;;;;;;;;;;;;;;;;;;;;10668:23;10577:114;10573:386;;;10712:38;10729:20;10712:16;:38::i;:::-;10769:26;10798:21;10769:50;;10863:1;10842:18;:22;10838:106;;;10889:35;10902:21;10889:12;:35::i;:::-;10838:106;10693:266;10573:386;9749:1221;;9711:1259;10982:12;10997:4;10982:19;;11046:18;:24;11065:4;11046:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11074:18;:22;11093:2;11074:22;;;;;;;;;;;;;;;;;;;;;;;;;11046:50;11045:102;;;;11110:13;;;;;;;;;;;11102:21;;:4;:21;;;;:44;;;;;11133:13;;;;;;;;;;;11127:19;;:2;:19;;;;11102:44;11045:102;11041:594;;;11174:5;11164:15;;11041:594;;;11257:13;;;;;;;;;;;11249:21;;:4;:21;;;:55;;;;;11288:15;;;;;;;;;;;11274:30;;:2;:30;;;;11249:55;11246:162;;;11337:14;;11325:9;:26;;;;11380:12;;11370:7;:22;;;;11246:162;11467:13;;;;;;;;;;;11461:19;;:2;:19;;;:55;;;;;11500:15;;;;;;;;;;;11484:32;;:4;:32;;;;11461:55;11457:165;;;11549:15;;11537:9;:27;;;;11593:13;;11583:7;:23;;;;11457:165;11041:594;11647:41;11662:4;11668:2;11672:6;11680:7;11647:14;:41::i;:::-;9469:2227;9366:2330;;;:::o;2390:224::-;2510:7;2543:1;2538;:6;;2546:12;2530:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2570:9;2586:1;2582;:5;;;;:::i;:::-;2570:17;;2605:1;2598:8;;;2390:224;;;;;:::o;11704:483::-;5934:4;5925:6;;:13;;;;;;;;;;;;;;;;;;11782:21:::1;11820:1;11806:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11782:40;;11851:4;11833;11838:1;11833:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11877:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11867:4;11872:1;11867:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11910:62;11927:4;11942:15;;;;;;;;;;;11960:11;11910:8;:62::i;:::-;11983:15;;;;;;;;;;;:66;;;12064:11;12090:1;12106:4;12133;12153:15;11983:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11771:416;5970:5:::0;5961:6;;:14;;;;;;;;;;;;;;;;;;11704:483;:::o;8309:323::-;8404:7;8462;;8451;:18;;8429:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8550:19;8572:10;:8;:10::i;:::-;8550:32;;8600:24;8612:11;8600:7;:11;;:24;;;;:::i;:::-;8593:31;;;8309:323;;;:::o;12195:99::-;12252:17;;;;;;;;;;;:26;;:34;12279:6;12252:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12195:99;:::o;13186:279::-;13342:7;13337:25;;13351:11;:9;:11::i;:::-;13337:25;13373:44;13391:6;13399:9;13410:6;13373:17;:44::i;:::-;13433:7;13428:29;;13442:15;:13;:15::i;:::-;13428:29;13186:279;;;;:::o;16144:164::-;16186:7;16207:15;16224;16243:19;:17;:19::i;:::-;16206:56;;;;16280:20;16292:7;16280;:11;;:20;;;;:::i;:::-;16273:27;;;;16144:164;:::o;2876:132::-;2934:7;2961:39;2965:1;2968;2961:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2954:46;;2876:132;;;;:::o;8640:216::-;8697:1;8684:9;;:14;:30;;;;;8713:1;8702:7;;:12;8684:30;8680:43;;;8716:7;;8680:43;8755:9;;8735:17;:29;;;;8793:7;;8775:15;:25;;;;8825:1;8813:9;:13;;;;8847:1;8837:7;:11;;;;8640:216;:::o;13473:610::-;13620:15;13650:23;13688:12;13715:23;13753:12;13780:13;13807:19;13818:7;13807:10;:19::i;:::-;13605:221;;;;;;;;;;;;13855:28;13875:7;13855;:15;13863:6;13855:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13837:7;:15;13845:6;13837:15;;;;;;;;;;;;;;;:46;;;;13915:39;13938:15;13915:7;:18;13923:9;13915:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13894:7;:18;13902:9;13894:18;;;;;;;;;;;;;;;:60;;;;13965:16;13975:5;13965:9;:16::i;:::-;13992:23;14004:4;14010;13992:11;:23::i;:::-;14048:9;14031:44;;14040:6;14031:44;;;14059:15;14031:44;;;;;;:::i;:::-;;;;;;;;13594:489;;;;;;13473:610;;;:::o;8864:117::-;8920:17;;8908:9;:29;;;;8958:15;;8948:7;:25;;;;8864:117::o;16316:257::-;16367:7;16376;16396:15;16414:7;;16396:25;;16432:15;4680:18;16432:25;;16482:20;4680:18;16482:7;;:11;;:20;;;;:::i;:::-;16472:7;:30;16468:61;;;16512:7;;4680:18;16504:25;;;;;;;;16468:61;16548:7;16557;16540:25;;;;;;16316:257;;;:::o;3016:223::-;3136:7;3168:1;3164;:5;3171:12;3156:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3195:9;3211:1;3207;:5;;;;:::i;:::-;3195:17;;3230:1;3223:8;;;3016:223;;;;;:::o;14502:615::-;14602:7;14624;14646;14668;14690;14712;14748:23;14773:12;14787:13;14817:40;14829:7;14838:9;;14849:7;;14817:11;:40::i;:::-;14747:110;;;;;;14868:19;14890:10;:8;:10::i;:::-;14868:32;;14912:15;14929:23;14954:12;14983:46;14995:7;15004:4;15010:5;15017:11;14983;:46::i;:::-;14911:118;;;;;;15048:7;15057:15;15074:4;15080:15;15097:4;15103:5;15040:69;;;;;;;;;;;;;;;;;;;14502:615;;;;;;;:::o;2246:136::-;2304:7;2331:43;2335:1;2338;2331:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2324:50;;2246:136;;;;:::o;2059:179::-;2117:7;2137:9;2153:1;2149;:5;;;;:::i;:::-;2137:17;;2178:1;2173;:6;;2165:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2229:1;2222:8;;;2059:179;;;;:::o;14091:211::-;14144:19;14166:10;:8;:10::i;:::-;14144:32;;14187:13;14203:22;14213:11;14203:5;:9;;:22;;;;:::i;:::-;14187:38;;14261:33;14288:5;14261:7;:22;14277:4;14261:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14236:7;:22;14252:4;14236:22;;;;;;;;;;;;;;;:58;;;;14133:169;;14091:211;:::o;14310:147::-;14388:17;14400:4;14388:7;;:11;;:17;;;;:::i;:::-;14378:7;:27;;;;14429:20;14444:4;14429:10;;:14;;:20;;;;:::i;:::-;14416:10;:33;;;;14310:147;;:::o;15125:469::-;15294:7;15316;15338;15373:12;15388:30;15414:3;15388:21;15400:8;15388:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15373:45;;15429:13;15445:28;15469:3;15445:19;15457:6;15445:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15429:44;;15484:23;15510:28;15532:5;15510:17;15522:4;15510:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15484:54;;15557:15;15574:4;15580:5;15549:37;;;;;;;;;15125:469;;;;;;;:::o;15602:534::-;15796:7;15818;15840;15875:15;15893:24;15905:11;15893:7;:11;;:24;;;;:::i;:::-;15875:42;;15928:12;15943:21;15952:11;15943:4;:8;;:21;;;;:::i;:::-;15928:36;;15975:13;15991:22;16001:11;15991:5;:9;;:22;;;;:::i;:::-;15975:38;;16024:23;16050:28;16072:5;16050:17;16062:4;16050:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16024:54;;16097:7;16106:15;16123:4;16089:39;;;;;;;;;;15602:534;;;;;;;;:::o;2622:246::-;2680:7;2709:1;2704;:6;2700:47;;;2734:1;2727:8;;;;2700:47;2757:9;2773:1;2769;:5;;;;:::i;:::-;2757:17;;2802:1;2797;2793;:5;;;;:::i;:::-;:10;2785:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2859:1;2852:8;;;2622: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:329::-;4878:6;4927:2;4915:9;4906:7;4902:23;4898:32;4895:119;;;4933:79;;:::i;:::-;4895:119;5053:1;5078:53;5123:7;5114:6;5103:9;5099:22;5078:53;:::i;:::-;5068:63;;5024:117;4819:329;;;;:::o;5154:619::-;5231:6;5239;5247;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5549:2;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5520:118;5677:2;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5648:118;5154:619;;;;;:::o;5779:117::-;5888:1;5885;5878:12;5902:180;5950:77;5947:1;5940:88;6047:4;6044:1;6037:15;6071:4;6068:1;6061:15;6088:281;6171:27;6193:4;6171:27;:::i;:::-;6163:6;6159:40;6301:6;6289:10;6286:22;6265:18;6253:10;6250:34;6247:62;6244:88;;;6312:18;;:::i;:::-;6244:88;6352:10;6348:2;6341:22;6131:238;6088:281;;:::o;6375:129::-;6409:6;6436:20;;:::i;:::-;6426:30;;6465:33;6493:4;6485:6;6465:33;:::i;:::-;6375:129;;;:::o;6510:311::-;6587:4;6677:18;6669:6;6666:30;6663:56;;;6699:18;;:::i;:::-;6663:56;6749:4;6741:6;6737:17;6729:25;;6809:4;6803;6799:15;6791:23;;6510:311;;;:::o;6827:117::-;6936:1;6933;6926:12;6967:710;7063:5;7088:81;7104:64;7161:6;7104:64;:::i;:::-;7088:81;:::i;:::-;7079:90;;7189:5;7218:6;7211:5;7204:21;7252:4;7245:5;7241:16;7234:23;;7305:4;7297:6;7293:17;7285:6;7281:30;7334:3;7326:6;7323:15;7320:122;;;7353:79;;:::i;:::-;7320:122;7468:6;7451:220;7485:6;7480:3;7477:15;7451:220;;;7560:3;7589:37;7622:3;7610:10;7589:37;:::i;:::-;7584:3;7577:50;7656:4;7651:3;7647:14;7640:21;;7527:144;7511:4;7506:3;7502:14;7495:21;;7451:220;;;7455:21;7069:608;;6967:710;;;;;:::o;7700:370::-;7771:5;7820:3;7813:4;7805:6;7801:17;7797:27;7787:122;;7828:79;;:::i;:::-;7787:122;7945:6;7932:20;7970:94;8060:3;8052:6;8045:4;8037:6;8033:17;7970:94;:::i;:::-;7961:103;;7777:293;7700:370;;;;:::o;8076:539::-;8160:6;8209:2;8197:9;8188:7;8184:23;8180:32;8177:119;;;8215:79;;:::i;:::-;8177:119;8363:1;8352:9;8348:17;8335:31;8393:18;8385:6;8382:30;8379:117;;;8415:79;;:::i;:::-;8379:117;8520:78;8590:7;8581:6;8570:9;8566:22;8520:78;:::i;:::-;8510:88;;8306:302;8076:539;;;;:::o;8621:86::-;8656:7;8696:4;8689:5;8685:16;8674:27;;8621:86;;;:::o;8713:112::-;8796:22;8812:5;8796:22;:::i;:::-;8791:3;8784:35;8713:112;;:::o;8831:214::-;8920:4;8958:2;8947:9;8943:18;8935:26;;8971:67;9035:1;9024:9;9020:17;9011:6;8971:67;:::i;:::-;8831:214;;;;:::o;9051:329::-;9110:6;9159:2;9147:9;9138:7;9134:23;9130:32;9127:119;;;9165:79;;:::i;:::-;9127:119;9285:1;9310:53;9355:7;9346:6;9335:9;9331:22;9310:53;:::i;:::-;9300:63;;9256:117;9051:329;;;;:::o;9386:118::-;9473:24;9491:5;9473:24;:::i;:::-;9468:3;9461:37;9386:118;;:::o;9510:222::-;9603:4;9641:2;9630:9;9626:18;9618:26;;9654:71;9722:1;9711:9;9707:17;9698:6;9654:71;:::i;:::-;9510:222;;;;:::o;9738:474::-;9806:6;9814;9863:2;9851:9;9842:7;9838:23;9834:32;9831:119;;;9869:79;;:::i;:::-;9831:119;9989:1;10014:53;10059:7;10050:6;10039:9;10035:22;10014:53;:::i;:::-;10004:63;;9960:117;10116:2;10142:53;10187:7;10178:6;10167:9;10163:22;10142:53;:::i;:::-;10132:63;;10087:118;9738:474;;;;;:::o;10218:116::-;10288:21;10303:5;10288:21;:::i;:::-;10281:5;10278:32;10268:60;;10324:1;10321;10314:12;10268:60;10218:116;:::o;10340:133::-;10383:5;10421:6;10408:20;10399:29;;10437:30;10461:5;10437:30;:::i;:::-;10340:133;;;;:::o;10479:323::-;10535:6;10584:2;10572:9;10563:7;10559:23;10555:32;10552:119;;;10590:79;;:::i;:::-;10552:119;10710:1;10735:50;10777:7;10768:6;10757:9;10753:22;10735:50;:::i;:::-;10725:60;;10681:114;10479:323;;;;:::o;10808:117::-;10917:1;10914;10907:12;10948:568;11021:8;11031:6;11081:3;11074:4;11066:6;11062:17;11058:27;11048:122;;11089:79;;:::i;:::-;11048:122;11202:6;11189:20;11179:30;;11232:18;11224:6;11221:30;11218:117;;;11254:79;;:::i;:::-;11218:117;11368:4;11360:6;11356:17;11344:29;;11422:3;11414:4;11406:6;11402:17;11392:8;11388:32;11385:41;11382:128;;;11429:79;;:::i;:::-;11382:128;10948:568;;;;;:::o;11522:698::-;11614:6;11622;11630;11679:2;11667:9;11658:7;11654:23;11650:32;11647:119;;;11685:79;;:::i;:::-;11647:119;11833:1;11822:9;11818:17;11805:31;11863:18;11855:6;11852:30;11849:117;;;11885:79;;:::i;:::-;11849:117;11998:80;12070:7;12061:6;12050:9;12046:22;11998:80;:::i;:::-;11980:98;;;;11776:312;12127:2;12153:50;12195:7;12186:6;12175:9;12171:22;12153:50;:::i;:::-;12143:60;;12098:115;11522:698;;;;;:::o;12226:474::-;12294:6;12302;12351:2;12339:9;12330:7;12326:23;12322:32;12319:119;;;12357:79;;:::i;:::-;12319:119;12477:1;12502:53;12547:7;12538:6;12527:9;12523:22;12502:53;:::i;:::-;12492:63;;12448:117;12604:2;12630:53;12675:7;12666:6;12655:9;12651:22;12630:53;:::i;:::-;12620:63;;12575:118;12226:474;;;;;:::o;12706:765::-;12792:6;12800;12808;12816;12865:3;12853:9;12844:7;12840:23;12836:33;12833:120;;;12872:79;;:::i;:::-;12833:120;12992:1;13017:53;13062:7;13053:6;13042:9;13038:22;13017:53;:::i;:::-;13007:63;;12963:117;13119:2;13145:53;13190:7;13181:6;13170:9;13166:22;13145:53;:::i;:::-;13135:63;;13090:118;13247:2;13273:53;13318:7;13309:6;13298:9;13294:22;13273:53;:::i;:::-;13263:63;;13218:118;13375:2;13401:53;13446:7;13437:6;13426:9;13422:22;13401:53;:::i;:::-;13391:63;;13346:118;12706:765;;;;;;;:::o;13477:182::-;13617:34;13613:1;13605:6;13601:14;13594:58;13477:182;:::o;13665:366::-;13807:3;13828:67;13892:2;13887:3;13828:67;:::i;:::-;13821:74;;13904:93;13993:3;13904:93;:::i;:::-;14022:2;14017:3;14013:12;14006:19;;13665:366;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14037:419;;;:::o;14462:180::-;14510:77;14507:1;14500:88;14607:4;14604:1;14597:15;14631:4;14628:1;14621:15;14648:180;14696:77;14693:1;14686:88;14793:4;14790:1;14783:15;14817:4;14814:1;14807:15;14834:233;14873:3;14896:24;14914:5;14896:24;:::i;:::-;14887:33;;14942:66;14935:5;14932:77;14929:103;;;15012:18;;:::i;:::-;14929:103;15059:1;15052:5;15048:13;15041:20;;14834:233;;;:::o;15073:225::-;15213:34;15209:1;15201:6;15197:14;15190:58;15282:8;15277:2;15269:6;15265:15;15258:33;15073:225;:::o;15304:366::-;15446:3;15467:67;15531:2;15526:3;15467:67;:::i;:::-;15460:74;;15543:93;15632:3;15543:93;:::i;:::-;15661:2;15656:3;15652:12;15645:19;;15304:366;;;:::o;15676:419::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15929:9;15923:4;15919:20;15915:1;15904:9;15900:17;15893:47;15957:131;16083:4;15957:131;:::i;:::-;15949:139;;15676:419;;;:::o;16101:223::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:6;16305:2;16297:6;16293:15;16286:31;16101:223;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:221::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:4;17331:2;17323:6;17319:15;17312:29;17127:221;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:224::-;18291:34;18287:1;18279:6;18275:14;18268:58;18360:7;18355:2;18347:6;18343:15;18336:32;18151:224;:::o;18381:366::-;18523:3;18544:67;18608:2;18603:3;18544:67;:::i;:::-;18537:74;;18620:93;18709:3;18620:93;:::i;:::-;18738:2;18733:3;18729:12;18722:19;;18381:366;;;:::o;18753:419::-;18919:4;18957:2;18946:9;18942:18;18934:26;;19006:9;19000:4;18996:20;18992:1;18981:9;18977:17;18970:47;19034:131;19160:4;19034:131;:::i;:::-;19026:139;;18753:419;;;:::o;19178:222::-;19318:34;19314:1;19306:6;19302:14;19295:58;19387:5;19382:2;19374:6;19370:15;19363:30;19178:222;:::o;19406:366::-;19548:3;19569:67;19633:2;19628:3;19569:67;:::i;:::-;19562:74;;19645:93;19734:3;19645:93;:::i;:::-;19763:2;19758:3;19754:12;19747:19;;19406:366;;;:::o;19778:419::-;19944:4;19982:2;19971:9;19967:18;19959:26;;20031:9;20025:4;20021:20;20017:1;20006:9;20002:17;19995:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19778:419;;;:::o;20203:228::-;20343:34;20339:1;20331:6;20327:14;20320:58;20412:11;20407:2;20399:6;20395:15;20388:36;20203:228;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:250::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:33;21438:2;21430:6;21426:15;21419:58;21234:250;:::o;21490:366::-;21632:3;21653:67;21717:2;21712:3;21653:67;:::i;:::-;21646:74;;21729:93;21818:3;21729:93;:::i;:::-;21847:2;21842:3;21838:12;21831:19;;21490:366;;;:::o;21862:419::-;22028:4;22066:2;22055:9;22051:18;22043:26;;22115:9;22109:4;22105:20;22101:1;22090:9;22086:17;22079:47;22143:131;22269:4;22143:131;:::i;:::-;22135:139;;21862:419;;;:::o;22287:178::-;22427:30;22423:1;22415:6;22411:14;22404:54;22287:178;:::o;22471:366::-;22613:3;22634:67;22698:2;22693:3;22634:67;:::i;:::-;22627:74;;22710:93;22799:3;22710:93;:::i;:::-;22828:2;22823:3;22819:12;22812:19;;22471:366;;;:::o;22843:419::-;23009:4;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;22843:419;;;:::o;23268:222::-;23408:34;23404:1;23396:6;23392:14;23385:58;23477:5;23472:2;23464:6;23460:15;23453:30;23268:222;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:305::-;24333:3;24352:20;24370:1;24352:20;:::i;:::-;24347:25;;24386:20;24404:1;24386:20;:::i;:::-;24381:25;;24540:1;24472:66;24468:74;24465:1;24462:81;24459:107;;;24546:18;;:::i;:::-;24459:107;24590:1;24587;24583:9;24576:16;;24293:305;;;;:::o;24604:222::-;24744:34;24740:1;24732:6;24728:14;24721:58;24813:5;24808:2;24800:6;24796:15;24789:30;24604:222;:::o;24832:366::-;24974:3;24995:67;25059:2;25054:3;24995:67;:::i;:::-;24988:74;;25071:93;25160:3;25071:93;:::i;:::-;25189:2;25184:3;25180:12;25173:19;;24832:366;;;:::o;25204:419::-;25370:4;25408:2;25397:9;25393:18;25385:26;;25457:9;25451:4;25447:20;25443:1;25432:9;25428:17;25421:47;25485:131;25611:4;25485:131;:::i;:::-;25477:139;;25204:419;;;:::o;25629:191::-;25669:4;25689:20;25707:1;25689:20;:::i;:::-;25684:25;;25723:20;25741:1;25723:20;:::i;:::-;25718:25;;25762:1;25759;25756:8;25753:34;;;25767:18;;:::i;:::-;25753:34;25812:1;25809;25805:9;25797:17;;25629:191;;;;:::o;25826:143::-;25883:5;25914:6;25908:13;25899:22;;25930:33;25957:5;25930:33;:::i;:::-;25826:143;;;;:::o;25975:351::-;26045:6;26094:2;26082:9;26073:7;26069:23;26065:32;26062:119;;;26100:79;;:::i;:::-;26062:119;26220:1;26245:64;26301:7;26292:6;26281:9;26277:22;26245:64;:::i;:::-;26235:74;;26191:128;25975:351;;;;:::o;26332:85::-;26377:7;26406:5;26395:16;;26332:85;;;:::o;26423:158::-;26481:9;26514:61;26532:42;26541:32;26567:5;26541:32;:::i;:::-;26532:42;:::i;:::-;26514:61;:::i;:::-;26501:74;;26423:158;;;:::o;26587:147::-;26682:45;26721:5;26682:45;:::i;:::-;26677:3;26670:58;26587:147;;:::o;26740:114::-;26807:6;26841:5;26835:12;26825:22;;26740:114;;;:::o;26860:184::-;26959:11;26993:6;26988:3;26981:19;27033:4;27028:3;27024:14;27009:29;;26860:184;;;;:::o;27050:132::-;27117:4;27140:3;27132:11;;27170:4;27165:3;27161:14;27153:22;;27050:132;;;:::o;27188:108::-;27265:24;27283:5;27265:24;:::i;:::-;27260:3;27253:37;27188:108;;:::o;27302:179::-;27371:10;27392:46;27434:3;27426:6;27392:46;:::i;:::-;27470:4;27465:3;27461:14;27447:28;;27302:179;;;;:::o;27487:113::-;27557:4;27589;27584:3;27580:14;27572:22;;27487:113;;;:::o;27636:732::-;27755:3;27784:54;27832:5;27784:54;:::i;:::-;27854:86;27933:6;27928:3;27854:86;:::i;:::-;27847:93;;27964:56;28014:5;27964:56;:::i;:::-;28043:7;28074:1;28059:284;28084:6;28081:1;28078:13;28059:284;;;28160:6;28154:13;28187:63;28246:3;28231:13;28187:63;:::i;:::-;28180:70;;28273:60;28326:6;28273:60;:::i;:::-;28263:70;;28119:224;28106:1;28103;28099:9;28094:14;;28059:284;;;28063:14;28359:3;28352:10;;27760:608;;;27636:732;;;;:::o;28374:831::-;28637:4;28675:3;28664:9;28660:19;28652:27;;28689:71;28757:1;28746:9;28742:17;28733:6;28689:71;:::i;:::-;28770:80;28846:2;28835:9;28831:18;28822:6;28770:80;:::i;:::-;28897:9;28891:4;28887:20;28882:2;28871:9;28867:18;28860:48;28925:108;29028:4;29019:6;28925:108;:::i;:::-;28917:116;;29043:72;29111:2;29100:9;29096:18;29087:6;29043:72;:::i;:::-;29125:73;29193:3;29182:9;29178:19;29169:6;29125:73;:::i;:::-;28374:831;;;;;;;;:::o;29211:229::-;29351:34;29347:1;29339:6;29335:14;29328:58;29420:12;29415:2;29407:6;29403:15;29396:37;29211:229;:::o;29446:366::-;29588:3;29609:67;29673:2;29668:3;29609:67;:::i;:::-;29602:74;;29685:93;29774:3;29685:93;:::i;:::-;29803:2;29798:3;29794:12;29787:19;;29446:366;;;:::o;29818:419::-;29984:4;30022:2;30011:9;30007:18;29999:26;;30071:9;30065:4;30061:20;30057:1;30046:9;30042:17;30035:47;30099:131;30225:4;30099:131;:::i;:::-;30091:139;;29818:419;;;:::o;30243:180::-;30291:77;30288:1;30281:88;30388:4;30385:1;30378:15;30412:4;30409:1;30402:15;30429:185;30469:1;30486:20;30504:1;30486:20;:::i;:::-;30481:25;;30520:20;30538:1;30520:20;:::i;:::-;30515:25;;30559:1;30549:35;;30564:18;;:::i;:::-;30549:35;30606:1;30603;30599:9;30594:14;;30429:185;;;;:::o;30620:177::-;30760:29;30756:1;30748:6;30744:14;30737:53;30620:177;:::o;30803:366::-;30945:3;30966:67;31030:2;31025:3;30966:67;:::i;:::-;30959:74;;31042:93;31131:3;31042:93;:::i;:::-;31160:2;31155:3;31151:12;31144:19;;30803:366;;;:::o;31175:419::-;31341:4;31379:2;31368:9;31364:18;31356:26;;31428:9;31422:4;31418:20;31414:1;31403:9;31399:17;31392:47;31456:131;31582:4;31456:131;:::i;:::-;31448:139;;31175:419;;;:::o;31600:348::-;31640:7;31663:20;31681:1;31663:20;:::i;:::-;31658:25;;31697:20;31715:1;31697:20;:::i;:::-;31692:25;;31885:1;31817:66;31813:74;31810:1;31807:81;31802:1;31795:9;31788:17;31784:105;31781:131;;;31892:18;;:::i;:::-;31781:131;31940:1;31937;31933:9;31922:20;;31600:348;;;;:::o;31954:220::-;32094:34;32090:1;32082:6;32078:14;32071:58;32163:3;32158:2;32150:6;32146:15;32139:28;31954:220;:::o;32180:366::-;32322:3;32343:67;32407:2;32402:3;32343:67;:::i;:::-;32336:74;;32419:93;32508:3;32419:93;:::i;:::-;32537:2;32532:3;32528:12;32521:19;;32180:366;;;:::o;32552:419::-;32718:4;32756:2;32745:9;32741:18;32733:26;;32805:9;32799:4;32795:20;32791:1;32780:9;32776:17;32769:47;32833:131;32959:4;32833:131;:::i;:::-;32825:139;;32552:419;;;:::o
Swarm Source
ipfs://0aa075e6b0e25b905f288bd33c7a905a5acc2913a0dd1a91d376ef37496fb17d
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.