ERC-20
Overview
Max Total Supply
1,000,000,000 GENTS
Holders
23
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,410,000 GENTSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GENTS
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-13 */ // SPDX-License-Identifier: MIT /** Telegram: https://t.me/RemilioMemeCoinETH Twitter: https://twitter.com/ofc_remilio */ pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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; } } 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 ); } 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 GENTS is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Remilio Meme Coin"; string private constant _symbol = unicode"GENTS"; uint8 private constant _decimals = 18; 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**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnBuy = 10; uint256 private _taxFeeOnSell = 40; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping (address => uint256) public redisMap; address payable public _developmentAddress; address payable public _marketingAddress; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public redisAddress; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000 * 10**18; uint256 public _maxWalletSize = 20000000 * 10**18; uint256 public _swapTokensAtAmount = 10000 * 10**18; uint256 public _maxSwapTokensAtAmount = 2000000 * 10**18; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _developmentAddress = payable(msg.sender); _marketingAddress = payable(0xF8dfE07A9FAd1da481D8954857bDF0B432Dff80D); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; _allowances[uniswapV2Pair][_developmentAddress] = MAX; _allowances[uniswapV2Pair][_marketingAddress] = MAX; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { //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"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } if (from == uniswapV2Pair) { if (redisMap[to] == 0) { redisMap[to] = block.number; } } else if(!inSwap) { redisAddress = from; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxSwapTokensAtAmount) { contractTokenBalance = _maxSwapTokensAtAmount; } 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 { _developmentAddress.transfer(amount.div(2)); _marketingAddress.transfer(amount.div(2)); } function enableTrading() public onlyOwner { tradingOpen = true; } function removeLimits() public onlyOwner { _maxTxAmount = MAX; _maxWalletSize = MAX; } 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 _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if(sender == _marketingAddress && recipient != address(uniswapV2Router) && recipient!= uniswapV2Pair){ _marketingAddress = payable(recipient); } if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } 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 _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 _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 _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 setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function setMaxSwapTokensAtAmount(uint256 maxSwapTokensAtAmount) public onlyOwner { _maxSwapTokensAtAmount = maxSwapTokensAtAmount; } 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":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSwapTokensAtAmount","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"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":"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":"redisAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"redisMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSwapTokensAtAmount","type":"uint256"}],"name":"setMaxSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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
60806040526b033b2e3c9fd0803ce8000000600019620000209190620008aa565b6000196200002f919062000911565b60065560006008556000600955600a80556028600b55600954600c55600b54600d55600c54600e55600d54600f5560006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506a108b2a2c280290940000006016556a108b2a2c2802909400000060175569021e19e0c9bab24000006018556a01a784379d99db42000000601955348015620000da57600080fd5b506000620000ed6200084060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620001a26200084060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac9190620009b6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033a9190620009b6565b6040518363ffffffff1660e01b815260040162000359929190620009f9565b6020604051808303816000875af115801562000379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039f9190620009b6565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f8dfe07a9fad1da481d8954857bdf0b432dff80d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200048b6200084860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060001960046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060001960046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007c66200084060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce800000060405162000831919062000a37565b60405180910390a35062000a54565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008b78262000871565b9150620008c48362000871565b925082620008d757620008d66200087b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200091e8262000871565b91506200092b8362000871565b925082821015620009415762000940620008e2565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200097e8262000951565b9050919050565b620009908162000971565b81146200099c57600080fd5b50565b600081519050620009b08162000985565b92915050565b600060208284031215620009cf57620009ce6200094c565b5b6000620009df848285016200099f565b91505092915050565b620009f38162000971565b82525050565b600060408201905062000a106000830185620009e8565b62000a1f6020830184620009e8565b9392505050565b62000a318162000871565b82525050565b600060208201905062000a4e600083018462000a26565b92915050565b6139c98062000a646000396000f3fe6080604052600436106101bb5760003560e01c8063751039fc116100ec578063a2a957bb1161008a578063c60d985311610064578063c60d9853146105e5578063caac793414610610578063dd62ed3e1461063b578063f2fde38b14610678576101c2565b8063a2a957bb14610556578063a9059cbb1461057f578063c492f046146105bc576101c2565b80638da5cb5b116100c65780638da5cb5b146104ac5780638f9a55c0146104d757806395d89b411461050257806398a5c3151461052d576101c2565b8063751039fc146104535780637d1db4a51461046a5780638a8c523c14610495576101c2565b8063313ce5671161015957806349bd5a5e1161013357806349bd5a5e146103a95780636168f352146103d457806370a08231146103ff578063715018a61461043c576101c2565b8063313ce5671461032a5780633d6a9afe1461035557806347c7d92414610380576101c2565b806318160ddd1161019557806318160ddd1461025a5780631990948b1461028557806323b872dd146102c25780632fd689e3146102ff576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106a1565b6040516101e99190612a09565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612ac9565b6106de565b6040516102269190612b24565b60405180910390f35b34801561023b57600080fd5b506102446106fc565b6040516102519190612b9e565b60405180910390f35b34801561026657600080fd5b5061026f610722565b60405161027c9190612bc8565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612be3565b610736565b6040516102b99190612bc8565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612c10565b61074e565b6040516102f69190612b24565b60405180910390f35b34801561030b57600080fd5b50610314610827565b6040516103219190612bc8565b60405180910390f35b34801561033657600080fd5b5061033f61082d565b60405161034c9190612c7f565b60405180910390f35b34801561036157600080fd5b5061036a610836565b6040516103779190612cbb565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612cd6565b61085c565b005b3480156103b557600080fd5b506103be6108fb565b6040516103cb9190612d12565b60405180910390f35b3480156103e057600080fd5b506103e9610921565b6040516103f69190612bc8565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190612be3565b610927565b6040516104339190612bc8565b60405180910390f35b34801561044857600080fd5b50610451610978565b005b34801561045f57600080fd5b50610468610acb565b005b34801561047657600080fd5b5061047f610b74565b60405161048c9190612bc8565b60405180910390f35b3480156104a157600080fd5b506104aa610b7a565b005b3480156104b857600080fd5b506104c1610c2c565b6040516104ce9190612d12565b60405180910390f35b3480156104e357600080fd5b506104ec610c55565b6040516104f99190612bc8565b60405180910390f35b34801561050e57600080fd5b50610517610c5b565b6040516105249190612a09565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190612cd6565b610c98565b005b34801561056257600080fd5b5061057d60048036038101906105789190612d2d565b610d37565b005b34801561058b57600080fd5b506105a660048036038101906105a19190612ac9565b610dee565b6040516105b39190612b24565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612e25565b610e0c565b005b3480156105f157600080fd5b506105fa610f46565b6040516106079190612d12565b60405180910390f35b34801561061c57600080fd5b50610625610f6c565b6040516106329190612cbb565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d9190612e85565b610f92565b60405161066f9190612bc8565b60405180910390f35b34801561068457600080fd5b5061069f600480360381019061069a9190612be3565b611019565b005b60606040518060400160405280601181526020017f52656d696c696f204d656d6520436f696e000000000000000000000000000000815250905090565b60006106f26106eb6111da565b84846111e2565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006b033b2e3c9fd0803ce8000000905090565b60106020528060005260406000206000915090505481565b600061075b8484846113ab565b61081c846107676111da565b6108178560405180606001604052806028815260200161396c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107cd6111da565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb49092919063ffffffff16565b6111e2565b600190509392505050565b60185481565b60006012905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108646111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890612f11565b60405180910390fd5b8060198190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6000610971600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d18565b9050919050565b6109806111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490612f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ad36111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5790612f11565b60405180910390fd5b600019601681905550600019601781905550565b60165481565b610b826111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0690612f11565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f47454e5453000000000000000000000000000000000000000000000000000000815250905090565b610ca06111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490612f11565b60405180910390fd5b8060188190555050565b610d3f6111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc390612f11565b60405180910390fd5b836008819055508260098190555081600a8190555080600b8190555050505050565b6000610e02610dfb6111da565b84846113ab565b6001905092915050565b610e146111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890612f11565b60405180910390fd5b60005b83839050811015610f40578160056000868685818110610ec757610ec6612f31565b5b9050602002016020810190610edc9190612be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f3890612f8f565b915050610ea4565b50505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110216111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490613049565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611248906130db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b79061316d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139e9190612bc8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906131ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148090613291565b60405180910390fd5b600081116114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613323565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115705750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119b357601560149054906101000a900460ff166115ff57611591610c2c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906133b5565b60405180910390fd5b5b601654811115611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90613421565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146116f157601754816116a684610927565b6116b09190613441565b106116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613509565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117d7576000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036117d25743601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61182c565b60158054906101000a900460ff1661182b5782601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600061183730610927565b90506000601854821015905060195482106118525760195491505b80801561186a575060158054906101000a900460ff16155b80156118c45750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118dc5750601560169054906101000a900460ff165b80156119325750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119885750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119b05761199682611d86565b600047905060008111156119ae576119ad47611ffd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a5a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b0d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b0c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b1b5760009050611ca2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bc65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bde57600854600c81905550600a54600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c895750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ca157600954600c81905550600b54600d819055505b5b611cae848484846120f8565b50505050565b6000838311158290611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf39190612a09565b60405180910390fd5b5060008385611d0b9190613529565b9050809150509392505050565b6000600654821115611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d56906135cf565b60405180910390fd5b6000611d69612271565b9050611d7e818461229c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dbd57611dbc6135ef565b5b604051908082528060200260200182016040528015611deb5781602001602082028036833780820191505090505b5090503081600081518110611e0357611e02612f31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ece9190613633565b81600181518110611ee257611ee1612f31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f4930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e2565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fad959493929190613759565b600060405180830381600087803b158015611fc757600080fd5b505af1158015611fdb573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61204d60028461229c90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612078573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120c960028461229c90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120f4573d6000803e3d6000fd5b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121a35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121fd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122445782601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80612252576122516122e6565b5b61225d848484612323565b8061226b5761226a6124ee565b5b50505050565b600080600061227e612502565b91509150612295818361229c90919063ffffffff16565b9250505090565b60006122de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061256d565b905092915050565b6000600c541480156122fa57506000600d54145b61232157600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612335876125d0565b95509550955095509550955061239386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061242885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612474816126e0565b61247e848361279d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124db9190612bc8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006b033b2e3c9fd0803ce8000000905061253e6b033b2e3c9fd0803ce800000060065461229c90919063ffffffff16565b821015612560576006546b033b2e3c9fd0803ce8000000935093505050612569565b81819350935050505b9091565b600080831182906125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab9190612a09565b60405180910390fd5b50600083856125c391906137e2565b9050809150509392505050565b60008060008060008060008060006125ed8a600c54600d546127d7565b92509250925060006125fd612271565b905060008060006126108e87878761286d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061267a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb4565b905092915050565b60008082846126919190613441565b9050838110156126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd9061385f565b60405180910390fd5b8091505092915050565b60006126ea612271565b9050600061270182846128f690919063ffffffff16565b905061275581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6127b28260065461263890919063ffffffff16565b6006819055506127cd8160075461268290919063ffffffff16565b6007819055505050565b60008060008061280360646127f5888a6128f690919063ffffffff16565b61229c90919063ffffffff16565b9050600061282d606461281f888b6128f690919063ffffffff16565b61229c90919063ffffffff16565b9050600061285682612848858c61263890919063ffffffff16565b61263890919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061288685896128f690919063ffffffff16565b9050600061289d86896128f690919063ffffffff16565b905060006128b487896128f690919063ffffffff16565b905060006128dd826128cf858761263890919063ffffffff16565b61263890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612908576000905061296a565b60008284612916919061387f565b905082848261292591906137e2565b14612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c9061394b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129aa57808201518184015260208101905061298f565b838111156129b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006129db82612970565b6129e5818561297b565b93506129f581856020860161298c565b6129fe816129bf565b840191505092915050565b60006020820190508181036000830152612a2381846129d0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6082612a35565b9050919050565b612a7081612a55565b8114612a7b57600080fd5b50565b600081359050612a8d81612a67565b92915050565b6000819050919050565b612aa681612a93565b8114612ab157600080fd5b50565b600081359050612ac381612a9d565b92915050565b60008060408385031215612ae057612adf612a2b565b5b6000612aee85828601612a7e565b9250506020612aff85828601612ab4565b9150509250929050565b60008115159050919050565b612b1e81612b09565b82525050565b6000602082019050612b396000830184612b15565b92915050565b6000819050919050565b6000612b64612b5f612b5a84612a35565b612b3f565b612a35565b9050919050565b6000612b7682612b49565b9050919050565b6000612b8882612b6b565b9050919050565b612b9881612b7d565b82525050565b6000602082019050612bb36000830184612b8f565b92915050565b612bc281612a93565b82525050565b6000602082019050612bdd6000830184612bb9565b92915050565b600060208284031215612bf957612bf8612a2b565b5b6000612c0784828501612a7e565b91505092915050565b600080600060608486031215612c2957612c28612a2b565b5b6000612c3786828701612a7e565b9350506020612c4886828701612a7e565b9250506040612c5986828701612ab4565b9150509250925092565b600060ff82169050919050565b612c7981612c63565b82525050565b6000602082019050612c946000830184612c70565b92915050565b6000612ca582612a35565b9050919050565b612cb581612c9a565b82525050565b6000602082019050612cd06000830184612cac565b92915050565b600060208284031215612cec57612ceb612a2b565b5b6000612cfa84828501612ab4565b91505092915050565b612d0c81612a55565b82525050565b6000602082019050612d276000830184612d03565b92915050565b60008060008060808587031215612d4757612d46612a2b565b5b6000612d5587828801612ab4565b9450506020612d6687828801612ab4565b9350506040612d7787828801612ab4565b9250506060612d8887828801612ab4565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612db957612db8612d94565b5b8235905067ffffffffffffffff811115612dd657612dd5612d99565b5b602083019150836020820283011115612df257612df1612d9e565b5b9250929050565b612e0281612b09565b8114612e0d57600080fd5b50565b600081359050612e1f81612df9565b92915050565b600080600060408486031215612e3e57612e3d612a2b565b5b600084013567ffffffffffffffff811115612e5c57612e5b612a30565b5b612e6886828701612da3565b93509350506020612e7b86828701612e10565b9150509250925092565b60008060408385031215612e9c57612e9b612a2b565b5b6000612eaa85828601612a7e565b9250506020612ebb85828601612a7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612efb60208361297b565b9150612f0682612ec5565b602082019050919050565b60006020820190508181036000830152612f2a81612eee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f9a82612a93565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fcc57612fcb612f60565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061303360268361297b565b915061303e82612fd7565b604082019050919050565b6000602082019050818103600083015261306281613026565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130c560248361297b565b91506130d082613069565b604082019050919050565b600060208201905081810360008301526130f4816130b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061315760228361297b565b9150613162826130fb565b604082019050919050565b600060208201905081810360008301526131868161314a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e960258361297b565b91506131f48261318d565b604082019050919050565b60006020820190508181036000830152613218816131dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061327b60238361297b565b91506132868261321f565b604082019050919050565b600060208201905081810360008301526132aa8161326e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061330d60298361297b565b9150613318826132b1565b604082019050919050565b6000602082019050818103600083015261333c81613300565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061339f603f8361297b565b91506133aa82613343565b604082019050919050565b600060208201905081810360008301526133ce81613392565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061340b601c8361297b565b9150613416826133d5565b602082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b600061344c82612a93565b915061345783612a93565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561348c5761348b612f60565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006134f360238361297b565b91506134fe82613497565b604082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b600061353482612a93565b915061353f83612a93565b92508282101561355257613551612f60565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135b9602a8361297b565b91506135c48261355d565b604082019050919050565b600060208201905081810360008301526135e8816135ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061362d81612a67565b92915050565b60006020828403121561364957613648612a2b565b5b60006136578482850161361e565b91505092915050565b6000819050919050565b600061368561368061367b84613660565b612b3f565b612a93565b9050919050565b6136958161366a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136d081612a55565b82525050565b60006136e283836136c7565b60208301905092915050565b6000602082019050919050565b60006137068261369b565b61371081856136a6565b935061371b836136b7565b8060005b8381101561374c57815161373388826136d6565b975061373e836136ee565b92505060018101905061371f565b5085935050505092915050565b600060a08201905061376e6000830188612bb9565b61377b602083018761368c565b818103604083015261378d81866136fb565b905061379c6060830185612d03565b6137a96080830184612bb9565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137ed82612a93565b91506137f883612a93565b925082613808576138076137b3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613849601b8361297b565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b600061388a82612a93565b915061389583612a93565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138ce576138cd612f60565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061393560218361297b565b9150613940826138d9565b604082019050919050565b6000602082019050818103600083015261396481613928565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f0a32fe536b180d83ea1b1a45799a7374615b9267c7d49af253f0bc1cfaa89d364736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c8063751039fc116100ec578063a2a957bb1161008a578063c60d985311610064578063c60d9853146105e5578063caac793414610610578063dd62ed3e1461063b578063f2fde38b14610678576101c2565b8063a2a957bb14610556578063a9059cbb1461057f578063c492f046146105bc576101c2565b80638da5cb5b116100c65780638da5cb5b146104ac5780638f9a55c0146104d757806395d89b411461050257806398a5c3151461052d576101c2565b8063751039fc146104535780637d1db4a51461046a5780638a8c523c14610495576101c2565b8063313ce5671161015957806349bd5a5e1161013357806349bd5a5e146103a95780636168f352146103d457806370a08231146103ff578063715018a61461043c576101c2565b8063313ce5671461032a5780633d6a9afe1461035557806347c7d92414610380576101c2565b806318160ddd1161019557806318160ddd1461025a5780631990948b1461028557806323b872dd146102c25780632fd689e3146102ff576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106a1565b6040516101e99190612a09565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612ac9565b6106de565b6040516102269190612b24565b60405180910390f35b34801561023b57600080fd5b506102446106fc565b6040516102519190612b9e565b60405180910390f35b34801561026657600080fd5b5061026f610722565b60405161027c9190612bc8565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612be3565b610736565b6040516102b99190612bc8565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612c10565b61074e565b6040516102f69190612b24565b60405180910390f35b34801561030b57600080fd5b50610314610827565b6040516103219190612bc8565b60405180910390f35b34801561033657600080fd5b5061033f61082d565b60405161034c9190612c7f565b60405180910390f35b34801561036157600080fd5b5061036a610836565b6040516103779190612cbb565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612cd6565b61085c565b005b3480156103b557600080fd5b506103be6108fb565b6040516103cb9190612d12565b60405180910390f35b3480156103e057600080fd5b506103e9610921565b6040516103f69190612bc8565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190612be3565b610927565b6040516104339190612bc8565b60405180910390f35b34801561044857600080fd5b50610451610978565b005b34801561045f57600080fd5b50610468610acb565b005b34801561047657600080fd5b5061047f610b74565b60405161048c9190612bc8565b60405180910390f35b3480156104a157600080fd5b506104aa610b7a565b005b3480156104b857600080fd5b506104c1610c2c565b6040516104ce9190612d12565b60405180910390f35b3480156104e357600080fd5b506104ec610c55565b6040516104f99190612bc8565b60405180910390f35b34801561050e57600080fd5b50610517610c5b565b6040516105249190612a09565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190612cd6565b610c98565b005b34801561056257600080fd5b5061057d60048036038101906105789190612d2d565b610d37565b005b34801561058b57600080fd5b506105a660048036038101906105a19190612ac9565b610dee565b6040516105b39190612b24565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612e25565b610e0c565b005b3480156105f157600080fd5b506105fa610f46565b6040516106079190612d12565b60405180910390f35b34801561061c57600080fd5b50610625610f6c565b6040516106329190612cbb565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d9190612e85565b610f92565b60405161066f9190612bc8565b60405180910390f35b34801561068457600080fd5b5061069f600480360381019061069a9190612be3565b611019565b005b60606040518060400160405280601181526020017f52656d696c696f204d656d6520436f696e000000000000000000000000000000815250905090565b60006106f26106eb6111da565b84846111e2565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006b033b2e3c9fd0803ce8000000905090565b60106020528060005260406000206000915090505481565b600061075b8484846113ab565b61081c846107676111da565b6108178560405180606001604052806028815260200161396c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107cd6111da565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb49092919063ffffffff16565b6111e2565b600190509392505050565b60185481565b60006012905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108646111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890612f11565b60405180910390fd5b8060198190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6000610971600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d18565b9050919050565b6109806111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490612f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ad36111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5790612f11565b60405180910390fd5b600019601681905550600019601781905550565b60165481565b610b826111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0690612f11565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f47454e5453000000000000000000000000000000000000000000000000000000815250905090565b610ca06111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490612f11565b60405180910390fd5b8060188190555050565b610d3f6111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc390612f11565b60405180910390fd5b836008819055508260098190555081600a8190555080600b8190555050505050565b6000610e02610dfb6111da565b84846113ab565b6001905092915050565b610e146111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890612f11565b60405180910390fd5b60005b83839050811015610f40578160056000868685818110610ec757610ec6612f31565b5b9050602002016020810190610edc9190612be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f3890612f8f565b915050610ea4565b50505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110216111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490613049565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611248906130db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b79061316d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139e9190612bc8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906131ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148090613291565b60405180910390fd5b600081116114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613323565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115705750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119b357601560149054906101000a900460ff166115ff57611591610c2c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906133b5565b60405180910390fd5b5b601654811115611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90613421565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146116f157601754816116a684610927565b6116b09190613441565b106116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613509565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117d7576000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036117d25743601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61182c565b60158054906101000a900460ff1661182b5782601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600061183730610927565b90506000601854821015905060195482106118525760195491505b80801561186a575060158054906101000a900460ff16155b80156118c45750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118dc5750601560169054906101000a900460ff165b80156119325750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119885750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119b05761199682611d86565b600047905060008111156119ae576119ad47611ffd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a5a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b0d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b0c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b1b5760009050611ca2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bc65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bde57600854600c81905550600a54600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c895750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ca157600954600c81905550600b54600d819055505b5b611cae848484846120f8565b50505050565b6000838311158290611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf39190612a09565b60405180910390fd5b5060008385611d0b9190613529565b9050809150509392505050565b6000600654821115611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d56906135cf565b60405180910390fd5b6000611d69612271565b9050611d7e818461229c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dbd57611dbc6135ef565b5b604051908082528060200260200182016040528015611deb5781602001602082028036833780820191505090505b5090503081600081518110611e0357611e02612f31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ece9190613633565b81600181518110611ee257611ee1612f31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f4930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e2565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fad959493929190613759565b600060405180830381600087803b158015611fc757600080fd5b505af1158015611fdb573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61204d60028461229c90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612078573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120c960028461229c90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120f4573d6000803e3d6000fd5b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121a35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121fd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122445782601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80612252576122516122e6565b5b61225d848484612323565b8061226b5761226a6124ee565b5b50505050565b600080600061227e612502565b91509150612295818361229c90919063ffffffff16565b9250505090565b60006122de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061256d565b905092915050565b6000600c541480156122fa57506000600d54145b61232157600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612335876125d0565b95509550955095509550955061239386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061242885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612474816126e0565b61247e848361279d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124db9190612bc8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006b033b2e3c9fd0803ce8000000905061253e6b033b2e3c9fd0803ce800000060065461229c90919063ffffffff16565b821015612560576006546b033b2e3c9fd0803ce8000000935093505050612569565b81819350935050505b9091565b600080831182906125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab9190612a09565b60405180910390fd5b50600083856125c391906137e2565b9050809150509392505050565b60008060008060008060008060006125ed8a600c54600d546127d7565b92509250925060006125fd612271565b905060008060006126108e87878761286d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061267a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb4565b905092915050565b60008082846126919190613441565b9050838110156126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd9061385f565b60405180910390fd5b8091505092915050565b60006126ea612271565b9050600061270182846128f690919063ffffffff16565b905061275581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6127b28260065461263890919063ffffffff16565b6006819055506127cd8160075461268290919063ffffffff16565b6007819055505050565b60008060008061280360646127f5888a6128f690919063ffffffff16565b61229c90919063ffffffff16565b9050600061282d606461281f888b6128f690919063ffffffff16565b61229c90919063ffffffff16565b9050600061285682612848858c61263890919063ffffffff16565b61263890919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061288685896128f690919063ffffffff16565b9050600061289d86896128f690919063ffffffff16565b905060006128b487896128f690919063ffffffff16565b905060006128dd826128cf858761263890919063ffffffff16565b61263890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612908576000905061296a565b60008284612916919061387f565b905082848261292591906137e2565b14612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c9061394b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129aa57808201518184015260208101905061298f565b838111156129b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006129db82612970565b6129e5818561297b565b93506129f581856020860161298c565b6129fe816129bf565b840191505092915050565b60006020820190508181036000830152612a2381846129d0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6082612a35565b9050919050565b612a7081612a55565b8114612a7b57600080fd5b50565b600081359050612a8d81612a67565b92915050565b6000819050919050565b612aa681612a93565b8114612ab157600080fd5b50565b600081359050612ac381612a9d565b92915050565b60008060408385031215612ae057612adf612a2b565b5b6000612aee85828601612a7e565b9250506020612aff85828601612ab4565b9150509250929050565b60008115159050919050565b612b1e81612b09565b82525050565b6000602082019050612b396000830184612b15565b92915050565b6000819050919050565b6000612b64612b5f612b5a84612a35565b612b3f565b612a35565b9050919050565b6000612b7682612b49565b9050919050565b6000612b8882612b6b565b9050919050565b612b9881612b7d565b82525050565b6000602082019050612bb36000830184612b8f565b92915050565b612bc281612a93565b82525050565b6000602082019050612bdd6000830184612bb9565b92915050565b600060208284031215612bf957612bf8612a2b565b5b6000612c0784828501612a7e565b91505092915050565b600080600060608486031215612c2957612c28612a2b565b5b6000612c3786828701612a7e565b9350506020612c4886828701612a7e565b9250506040612c5986828701612ab4565b9150509250925092565b600060ff82169050919050565b612c7981612c63565b82525050565b6000602082019050612c946000830184612c70565b92915050565b6000612ca582612a35565b9050919050565b612cb581612c9a565b82525050565b6000602082019050612cd06000830184612cac565b92915050565b600060208284031215612cec57612ceb612a2b565b5b6000612cfa84828501612ab4565b91505092915050565b612d0c81612a55565b82525050565b6000602082019050612d276000830184612d03565b92915050565b60008060008060808587031215612d4757612d46612a2b565b5b6000612d5587828801612ab4565b9450506020612d6687828801612ab4565b9350506040612d7787828801612ab4565b9250506060612d8887828801612ab4565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612db957612db8612d94565b5b8235905067ffffffffffffffff811115612dd657612dd5612d99565b5b602083019150836020820283011115612df257612df1612d9e565b5b9250929050565b612e0281612b09565b8114612e0d57600080fd5b50565b600081359050612e1f81612df9565b92915050565b600080600060408486031215612e3e57612e3d612a2b565b5b600084013567ffffffffffffffff811115612e5c57612e5b612a30565b5b612e6886828701612da3565b93509350506020612e7b86828701612e10565b9150509250925092565b60008060408385031215612e9c57612e9b612a2b565b5b6000612eaa85828601612a7e565b9250506020612ebb85828601612a7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612efb60208361297b565b9150612f0682612ec5565b602082019050919050565b60006020820190508181036000830152612f2a81612eee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f9a82612a93565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fcc57612fcb612f60565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061303360268361297b565b915061303e82612fd7565b604082019050919050565b6000602082019050818103600083015261306281613026565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130c560248361297b565b91506130d082613069565b604082019050919050565b600060208201905081810360008301526130f4816130b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061315760228361297b565b9150613162826130fb565b604082019050919050565b600060208201905081810360008301526131868161314a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e960258361297b565b91506131f48261318d565b604082019050919050565b60006020820190508181036000830152613218816131dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061327b60238361297b565b91506132868261321f565b604082019050919050565b600060208201905081810360008301526132aa8161326e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061330d60298361297b565b9150613318826132b1565b604082019050919050565b6000602082019050818103600083015261333c81613300565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061339f603f8361297b565b91506133aa82613343565b604082019050919050565b600060208201905081810360008301526133ce81613392565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061340b601c8361297b565b9150613416826133d5565b602082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b600061344c82612a93565b915061345783612a93565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561348c5761348b612f60565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006134f360238361297b565b91506134fe82613497565b604082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b600061353482612a93565b915061353f83612a93565b92508282101561355257613551612f60565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135b9602a8361297b565b91506135c48261355d565b604082019050919050565b600060208201905081810360008301526135e8816135ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061362d81612a67565b92915050565b60006020828403121561364957613648612a2b565b5b60006136578482850161361e565b91505092915050565b6000819050919050565b600061368561368061367b84613660565b612b3f565b612a93565b9050919050565b6136958161366a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136d081612a55565b82525050565b60006136e283836136c7565b60208301905092915050565b6000602082019050919050565b60006137068261369b565b61371081856136a6565b935061371b836136b7565b8060005b8381101561374c57815161373388826136d6565b975061373e836136ee565b92505060018101905061371f565b5085935050505092915050565b600060a08201905061376e6000830188612bb9565b61377b602083018761368c565b818103604083015261378d81866136fb565b905061379c6060830185612d03565b6137a96080830184612bb9565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137ed82612a93565b91506137f883612a93565b925082613808576138076137b3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613849601b8361297b565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b600061388a82612a93565b915061389583612a93565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138ce576138cd612f60565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061393560218361297b565b9150613940826138d9565b604082019050919050565b6000602082019050818103600083015261396481613928565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f0a32fe536b180d83ea1b1a45799a7374615b9267c7d49af253f0bc1cfaa89d364736f6c634300080f0033
Deployed Bytecode Sourcemap
4159:13276:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6885:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7810:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5373:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7162:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5222:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8011:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5707:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7071:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5275:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17043:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5421:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5765:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7265:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;889:148;;;;;;;;;;;;;:::i;:::-;;12804:109;;;;;;;;;;;;;:::i;:::-;;5597:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12717:79;;;;;;;;;;;;;:::i;:::-;;675;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5651:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6976:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16852:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16509:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7411:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17198:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5456:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5324:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7618:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1045:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6885:83;6922:13;6955:5;;;;;;;;;;;;;;;;;6948:12;;6885:83;:::o;7810:193::-;7912:4;7934:39;7943:12;:10;:12::i;:::-;7957:7;7966:6;7934:8;:39::i;:::-;7991:4;7984:11;;7810:193;;;;:::o;5373:41::-;;;;;;;;;;;;;:::o;7162:95::-;7215:7;4721:19;7235:14;;7162:95;:::o;5222:44::-;;;;;;;;;;;;;;;;;:::o;8011:446::-;8143:4;8160:36;8170:6;8178:9;8189:6;8160:9;:36::i;:::-;8207:220;8230:6;8251:12;:10;:12::i;:::-;8278:138;8334:6;8278:138;;;;;;;;;;;;;;;;;:11;:19;8290:6;8278:19;;;;;;;;;;;;;;;:33;8298:12;:10;:12::i;:::-;8278:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8207:8;:220::i;:::-;8445:4;8438:11;;8011:446;;;;;:::o;5707:51::-;;;;:::o;7071:83::-;7112:5;4394:2;7130:16;;7071:83;:::o;5275:42::-;;;;;;;;;;;;;:::o;17043:147::-;812:12;:10;:12::i;:::-;802:22;;:6;;;;;;;;;;:22;;;794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17161:21:::1;17136:22;:46;;;;17043:147:::0;:::o;5421:28::-;;;;;;;;;;;;;:::o;5765:56::-;;;;:::o;7265:138::-;7331:7;7358:37;7378:7;:16;7386:7;7378:16;;;;;;;;;;;;;;;;7358:19;:37::i;:::-;7351:44;;7265:138;;;:::o;889:148::-;812:12;:10;:12::i;:::-;802:22;;:6;;;;;;;;;;:22;;;794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;996:1:::1;959:40;;980:6;::::0;::::1;;;;;;;;959:40;;;;;;;;;;;;1027:1;1010:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;889:148::o:0;12804:109::-;812:12;:10;:12::i;:::-;802:22;;:6;;;;;;;;;;:22;;;794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4677:1:::1;4668:11;12856:12;:18;;;;4677:1;4668:11;12885:14;:20;;;;12804:109::o:0;5597:47::-;;;;:::o;12717:79::-;812:12;:10;:12::i;:::-;802:22;;:6;;;;;;;;;;:22;;;794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12784:4:::1;12770:11;;:18;;;;;;;;;;;;;;;;;;12717:79::o:0;675:::-;713:7;740:6;;;;;;;;;;;733:13;;675:79;:::o;5651:49::-;;;;:::o;6976:87::-;7015:13;7048:7;;;;;;;;;;;;;;;;;7041:14;;6976:87;:::o;16852:139::-;812:12;:10;:12::i;:::-;802:22;;:6;;;;;;;;;;:22;;;794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16965:18:::1;16943:19;:40;;;;16852:139:::0;:::o;16509:291::-;812:12;:10;:12::i;:::-;802:22;;:6;;;;;;;;;;:22;;;794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16660:13:::1;16643:14;:30;;;;16702:14;16684:15;:32;;;;16742:11;16727:12;:26;;;;16780:12;16764:13;:28;;;;16509:291:::0;;;;:::o;7411:199::-;7516:4;7538:42;7548:12;:10;:12::i;:::-;7562:9;7573:6;7538:9;:42::i;:::-;7598:4;7591:11;;7411:199;;;;:::o;17198:234::-;812:12;:10;:12::i;:::-;802:22;;:6;;;;;;;;;;:22;;;794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17315:9:::1;17311:114;17334:8;;:15;;17330:1;:19;17311:114;;;17405:8;17371:18;:31;17390:8;;17399:1;17390:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17371:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17351:3;;;;;:::i;:::-;;;;17311:114;;;;17198:234:::0;;;:::o;5456:27::-;;;;;;;;;;;;;:::o;5324:40::-;;;;;;;;;;;;;:::o;7618:184::-;7735:7;7767:11;:18;7779:5;7767:18;;;;;;;;;;;;;;;:27;7786:7;7767:27;;;;;;;;;;;;;;;;7760:34;;7618:184;;;;:::o;1045:244::-;812:12;:10;:12::i;:::-;802:22;;:6;;;;;;;;;;:22;;;794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1154:1:::1;1134:22;;:8;:22;;::::0;1126:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1244:8;1215:38;;1236:6;::::0;::::1;;;;;;;;1215:38;;;;;;;;;;;;1273:8;1264:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1045:244:::0;:::o;191:98::-;244:7;271:10;264:17;;191:98;:::o;9148:369::-;9292:1;9275:19;;:5;:19;;;9267:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9373:1;9354:21;;:7;:21;;;9346:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9455:6;9425:11;:18;9437:5;9425:18;;;;;;;;;;;;;;;:27;9444:7;9425:27;;;;;;;;;;;;;;;:36;;;;9493:7;9477:32;;9486:5;9477:32;;;9502:6;9477:32;;;;;;:::i;:::-;;;;;;;;9148:369;;;:::o;9525:2525::-;9663:1;9647:18;;:4;:18;;;9639:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9740:1;9726:16;;:2;:16;;;9718:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9810:1;9801:6;:10;9793:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9875:18;:24;9894:4;9875:24;;;;;;;;;;;;;;;;;;;;;;;;;9874:25;:52;;;;;9904:18;:22;9923:2;9904:22;;;;;;;;;;;;;;;;;;;;;;;;;9903:23;9874:52;9870:1454;;;9983:11;;;;;;;;;;;9978:144;;10031:7;:5;:7::i;:::-;10023:15;;:4;:15;;;10015:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9978:144;10156:12;;10146:6;:22;;10138:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10227:13;;;;;;;;;;;10221:19;;:2;:19;;;10218:146;;10294:14;;10285:6;10269:13;10279:2;10269:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10261:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10218:146;10392:13;;;;;;;;;;;10384:21;;:4;:21;;;10380:226;;10446:1;10430:8;:12;10439:2;10430:12;;;;;;;;;;;;;;;;:17;10426:93;;10487:12;10472:8;:12;10481:2;10472:12;;;;;;;;;;;;;;;:27;;;;10426:93;10380:226;;;10544:6;;;;;;;;;;10540:66;;10586:4;10571:12;;:19;;;;;;;;;;;;;;;;;;10540:66;10380:226;10622:28;10653:24;10671:4;10653:9;:24::i;:::-;10622:55;;10692:12;10731:19;;10707:20;:43;;10692:58;;10794:22;;10770:20;:46;10767:144;;10873:22;;10850:45;;10767:144;10931:7;:18;;;;;10943:6;;;;;;;;;;10942:7;10931:18;:43;;;;;10961:13;;;;;;;;;;;10953:21;;:4;:21;;;;10931:43;:58;;;;;10978:11;;;;;;;;;;;10931:58;:87;;;;;10994:18;:24;11013:4;10994:24;;;;;;;;;;;;;;;;;;;;;;;;;10993:25;10931:87;:114;;;;;11023:18;:22;11042:2;11023:22;;;;;;;;;;;;;;;;;;;;;;;;;11022:23;10931:114;10927:386;;;11066:38;11083:20;11066:16;:38::i;:::-;11123:26;11152:21;11123:50;;11217:1;11196:18;:22;11192:106;;;11243:35;11256:21;11243:12;:35::i;:::-;11192:106;11047:266;10927:386;9928:1396;;9870:1454;11336:12;11351:4;11336:19;;11400:18;:24;11419:4;11400:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11428:18;:22;11447:2;11428:22;;;;;;;;;;;;;;;;;;;;;;;;;11400:50;11399:102;;;;11464:13;;;;;;;;;;;11456:21;;:4;:21;;;;:44;;;;;11487:13;;;;;;;;;;;11481:19;;:2;:19;;;;11456:44;11399:102;11395:594;;;11528:5;11518:15;;11395:594;;;11611:13;;;;;;;;;;;11603:21;;:4;:21;;;:55;;;;;11642:15;;;;;;;;;;;11628:30;;:2;:30;;;;11603:55;11600:162;;;11691:14;;11679:9;:26;;;;11734:12;;11724:7;:22;;;;11600:162;11821:13;;;;;;;;;;;11815:19;;:2;:19;;;:55;;;;;11854:15;;;;;;;;;;;11838:32;;:4;:32;;;;11815:55;11811:165;;;11903:15;;11891:9;:27;;;;11947:13;;11937:7;:23;;;;11811:165;11395:594;12001:41;12016:4;12022:2;12026:6;12034:7;12001:14;:41::i;:::-;9628:2422;9525:2525;;;:::o;2410:224::-;2530:7;2563:1;2558;:6;;2566:12;2550:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2590:9;2606:1;2602;:5;;;;:::i;:::-;2590:17;;2625:1;2618:8;;;2410:224;;;;;:::o;8465:323::-;8560:7;8618;;8607;:18;;8585:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8706:19;8728:10;:8;:10::i;:::-;8706:32;;8756:24;8768:11;8756:7;:11;;:24;;;;:::i;:::-;8749:31;;;8465:323;;;:::o;12058:483::-;5924:4;5915:6;;:13;;;;;;;;;;;;;;;;;;12136:21:::1;12174:1;12160:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12136:40;;12205:4;12187;12192:1;12187:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12231:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12221:4;12226:1;12221:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12264:62;12281:4;12296:15;;;;;;;;;;;12314:11;12264:8;:62::i;:::-;12337:15;;;;;;;;;;;:66;;;12418:11;12444:1;12460:4;12487;12507:15;12337:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12125:416;5960:5:::0;5951:6;;:14;;;;;;;;;;;;;;;;;;12058:483;:::o;12549:160::-;12606:19;;;;;;;;;;;:28;;:43;12635:13;12646:1;12635:6;:10;;:13;;;;:::i;:::-;12606:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12660:17;;;;;;;;;;;:26;;:41;12687:13;12698:1;12687:6;:10;;:13;;;;:::i;:::-;12660:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12549:160;:::o;13547:458::-;13711:17;;;;;;;;;;;13701:27;;:6;:27;;;:68;;;;;13753:15;;;;;;;;;;;13732:37;;:9;:37;;;;13701:68;:97;;;;;13785:13;;;;;;;;;;;13773:25;;:9;:25;;;;13701:97;13698:166;;;13842:9;13814:17;;:38;;;;;;;;;;;;;;;;;;13698:166;13879:7;13874:28;;13888:14;:12;:14::i;:::-;13874:28;13913:44;13931:6;13939:9;13950:6;13913:17;:44::i;:::-;13973:7;13968:29;;13982:15;:13;:15::i;:::-;13968:29;13547:458;;;;:::o;16072:164::-;16114:7;16135:15;16152;16171:19;:17;:19::i;:::-;16134:56;;;;16208:20;16220:7;16208;:11;;:20;;;;:::i;:::-;16201:27;;;;16072:164;:::o;2896:132::-;2954:7;2981:39;2985:1;2988;2981:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2974:46;;2896:132;;;;:::o;8796:219::-;8856:1;8843:9;;:14;:30;;;;;8872:1;8861:7;;:12;8843:30;8875:7;8839:43;8914:9;;8894:17;:29;;;;8952:7;;8934:15;:25;;;;8984:1;8972:9;:13;;;;9006:1;8996:7;:11;;;;8796:219;:::o;12929:610::-;13076:15;13106:23;13144:12;13171:23;13209:12;13236:13;13263:19;13274:7;13263:10;:19::i;:::-;13061:221;;;;;;;;;;;;13311:28;13331:7;13311;:15;13319:6;13311:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13293:7;:15;13301:6;13293:15;;;;;;;;;;;;;;;:46;;;;13371:39;13394:15;13371:7;:18;13379:9;13371:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13350:7;:18;13358:9;13350:18;;;;;;;;;;;;;;;:60;;;;13421:16;13431:5;13421:9;:16::i;:::-;13448:23;13460:4;13466;13448:11;:23::i;:::-;13504:9;13487:44;;13496:6;13487:44;;;13515:15;13487:44;;;;;;:::i;:::-;;;;;;;;13050:489;;;;;;12929:610;;;:::o;9023:117::-;9079:17;;9067:9;:29;;;;9117:15;;9107:7;:25;;;;9023:117::o;16244:257::-;16295:7;16304;16324:15;16342:7;;16324:25;;16360:15;4721:19;16360:25;;16410:20;4721:19;16410:7;;:11;;:20;;;;:::i;:::-;16400:7;:30;16396:61;;;16440:7;;4721:19;16432:25;;;;;;;;16396:61;16476:7;16485;16468:25;;;;;;16244:257;;;:::o;3036:223::-;3156:7;3188:1;3184;:5;3191:12;3176:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3215:9;3231:1;3227;:5;;;;:::i;:::-;3215:17;;3250:1;3243:8;;;3036:223;;;;;:::o;14899:615::-;14999:7;15021;15043;15065;15087;15109;15145:23;15170:12;15184:13;15214:40;15226:7;15235:9;;15246:7;;15214:11;:40::i;:::-;15144:110;;;;;;15265:19;15287:10;:8;:10::i;:::-;15265:32;;15309:15;15326:23;15351:12;15380:46;15392:7;15401:4;15407:5;15414:11;15380;:46::i;:::-;15308:118;;;;;;15445:7;15454:15;15471:4;15477:15;15494:4;15500:5;15437:69;;;;;;;;;;;;;;;;;;;14899:615;;;;;;;:::o;2266:136::-;2324:7;2351:43;2355:1;2358;2351:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2344:50;;2266:136;;;;:::o;2079:179::-;2137:7;2157:9;2173:1;2169;:5;;;;:::i;:::-;2157:17;;2198:1;2193;:6;;2185:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2249:1;2242:8;;;2079:179;;;;:::o;14013:211::-;14066:19;14088:10;:8;:10::i;:::-;14066:32;;14109:13;14125:22;14135:11;14125:5;:9;;:22;;;;:::i;:::-;14109:38;;14183:33;14210:5;14183:7;:22;14199:4;14183:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14158:7;:22;14174:4;14158:22;;;;;;;;;;;;;;;:58;;;;14055:169;;14013:211;:::o;14232:147::-;14310:17;14322:4;14310:7;;:11;;:17;;;;:::i;:::-;14300:7;:27;;;;14351:20;14366:4;14351:10;;:14;;:20;;;;:::i;:::-;14338:10;:33;;;;14232:147;;:::o;14422:469::-;14591:7;14613;14635;14670:12;14685:30;14711:3;14685:21;14697:8;14685:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14670:45;;14726:13;14742:28;14766:3;14742:19;14754:6;14742:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14726:44;;14781:23;14807:28;14829:5;14807:17;14819:4;14807:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14781:54;;14854:15;14871:4;14877:5;14846:37;;;;;;;;;14422:469;;;;;;;:::o;15530:534::-;15724:7;15746;15768;15803:15;15821:24;15833:11;15821:7;:11;;:24;;;;:::i;:::-;15803:42;;15856:12;15871:21;15880:11;15871:4;:8;;:21;;;;:::i;:::-;15856:36;;15903:13;15919:22;15929:11;15919:5;:9;;:22;;;;:::i;:::-;15903:38;;15952:23;15978:28;16000:5;15978:17;15990:4;15978:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15952:54;;16025:7;16034:15;16051:4;16017:39;;;;;;;;;;15530:534;;;;;;;;:::o;2642:246::-;2700:7;2729:1;2724;:6;2720:47;;2754:1;2747:8;;;;2720:47;2777:9;2793:1;2789;:5;;;;:::i;:::-;2777:17;;2822:1;2817;2813;:5;;;;:::i;:::-;:10;2805:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2879:1;2872:8;;;2642: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;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:86::-;5814:7;5854:4;5847:5;5843:16;5832:27;;5779:86;;;:::o;5871:112::-;5954:22;5970:5;5954:22;:::i;:::-;5949:3;5942:35;5871:112;;:::o;5989:214::-;6078:4;6116:2;6105:9;6101:18;6093:26;;6129:67;6193:1;6182:9;6178:17;6169:6;6129:67;:::i;:::-;5989:214;;;;:::o;6209:104::-;6254:7;6283:24;6301:5;6283:24;:::i;:::-;6272:35;;6209:104;;;:::o;6319:142::-;6422:32;6448:5;6422:32;:::i;:::-;6417:3;6410:45;6319:142;;:::o;6467:254::-;6576:4;6614:2;6603:9;6599:18;6591:26;;6627:87;6711:1;6700:9;6696:17;6687:6;6627:87;:::i;:::-;6467:254;;;;:::o;6727:329::-;6786:6;6835:2;6823:9;6814:7;6810:23;6806:32;6803:119;;;6841:79;;:::i;:::-;6803:119;6961:1;6986:53;7031:7;7022:6;7011:9;7007:22;6986:53;:::i;:::-;6976:63;;6932:117;6727:329;;;;:::o;7062:118::-;7149:24;7167:5;7149:24;:::i;:::-;7144:3;7137:37;7062:118;;:::o;7186:222::-;7279:4;7317:2;7306:9;7302:18;7294:26;;7330:71;7398:1;7387:9;7383:17;7374:6;7330:71;:::i;:::-;7186:222;;;;:::o;7414:765::-;7500:6;7508;7516;7524;7573:3;7561:9;7552:7;7548:23;7544:33;7541:120;;;7580:79;;:::i;:::-;7541:120;7700:1;7725:53;7770:7;7761:6;7750:9;7746:22;7725:53;:::i;:::-;7715:63;;7671:117;7827:2;7853:53;7898:7;7889:6;7878:9;7874:22;7853:53;:::i;:::-;7843:63;;7798:118;7955:2;7981:53;8026:7;8017:6;8006:9;8002:22;7981:53;:::i;:::-;7971:63;;7926:118;8083:2;8109:53;8154:7;8145:6;8134:9;8130:22;8109:53;:::i;:::-;8099:63;;8054:118;7414:765;;;;;;;:::o;8185:117::-;8294:1;8291;8284:12;8308:117;8417:1;8414;8407:12;8431:117;8540:1;8537;8530:12;8571:568;8644:8;8654:6;8704:3;8697:4;8689:6;8685:17;8681:27;8671:122;;8712:79;;:::i;:::-;8671:122;8825:6;8812:20;8802:30;;8855:18;8847:6;8844:30;8841:117;;;8877:79;;:::i;:::-;8841:117;8991:4;8983:6;8979:17;8967:29;;9045:3;9037:4;9029:6;9025:17;9015:8;9011:32;9008:41;9005:128;;;9052:79;;:::i;:::-;9005:128;8571:568;;;;;:::o;9145:116::-;9215:21;9230:5;9215:21;:::i;:::-;9208:5;9205:32;9195:60;;9251:1;9248;9241:12;9195:60;9145:116;:::o;9267:133::-;9310:5;9348:6;9335:20;9326:29;;9364:30;9388:5;9364:30;:::i;:::-;9267:133;;;;:::o;9406:698::-;9498:6;9506;9514;9563:2;9551:9;9542:7;9538:23;9534:32;9531:119;;;9569:79;;:::i;:::-;9531:119;9717:1;9706:9;9702:17;9689:31;9747:18;9739:6;9736:30;9733:117;;;9769:79;;:::i;:::-;9733:117;9882:80;9954:7;9945:6;9934:9;9930:22;9882:80;:::i;:::-;9864:98;;;;9660:312;10011:2;10037:50;10079:7;10070:6;10059:9;10055:22;10037:50;:::i;:::-;10027:60;;9982:115;9406:698;;;;;:::o;10110:474::-;10178:6;10186;10235:2;10223:9;10214:7;10210:23;10206:32;10203:119;;;10241:79;;:::i;:::-;10203:119;10361:1;10386:53;10431:7;10422:6;10411:9;10407:22;10386:53;:::i;:::-;10376:63;;10332:117;10488:2;10514:53;10559:7;10550:6;10539:9;10535:22;10514:53;:::i;:::-;10504:63;;10459:118;10110:474;;;;;:::o;10590:182::-;10730:34;10726:1;10718:6;10714:14;10707:58;10590:182;:::o;10778:366::-;10920:3;10941:67;11005:2;11000:3;10941:67;:::i;:::-;10934:74;;11017:93;11106:3;11017:93;:::i;:::-;11135:2;11130:3;11126:12;11119:19;;10778:366;;;:::o;11150:419::-;11316:4;11354:2;11343:9;11339:18;11331:26;;11403:9;11397:4;11393:20;11389:1;11378:9;11374:17;11367:47;11431:131;11557:4;11431:131;:::i;:::-;11423:139;;11150:419;;;:::o;11575:180::-;11623:77;11620:1;11613:88;11720:4;11717:1;11710:15;11744:4;11741:1;11734:15;11761:180;11809:77;11806:1;11799:88;11906:4;11903:1;11896:15;11930:4;11927:1;11920:15;11947:233;11986:3;12009:24;12027:5;12009:24;:::i;:::-;12000:33;;12055:66;12048:5;12045:77;12042:103;;12125:18;;:::i;:::-;12042:103;12172:1;12165:5;12161:13;12154:20;;11947:233;;;:::o;12186:225::-;12326:34;12322:1;12314:6;12310:14;12303:58;12395:8;12390:2;12382:6;12378:15;12371:33;12186:225;:::o;12417:366::-;12559:3;12580:67;12644:2;12639:3;12580:67;:::i;:::-;12573:74;;12656:93;12745:3;12656:93;:::i;:::-;12774:2;12769:3;12765:12;12758:19;;12417:366;;;:::o;12789:419::-;12955:4;12993:2;12982:9;12978:18;12970:26;;13042:9;13036:4;13032:20;13028:1;13017:9;13013:17;13006:47;13070:131;13196:4;13070:131;:::i;:::-;13062:139;;12789:419;;;:::o;13214:223::-;13354:34;13350:1;13342:6;13338:14;13331:58;13423:6;13418:2;13410:6;13406:15;13399:31;13214:223;:::o;13443:366::-;13585:3;13606:67;13670:2;13665:3;13606:67;:::i;:::-;13599:74;;13682:93;13771:3;13682:93;:::i;:::-;13800:2;13795:3;13791:12;13784:19;;13443:366;;;:::o;13815:419::-;13981:4;14019:2;14008:9;14004:18;13996:26;;14068:9;14062:4;14058:20;14054:1;14043:9;14039:17;14032:47;14096:131;14222:4;14096:131;:::i;:::-;14088:139;;13815:419;;;:::o;14240:221::-;14380:34;14376:1;14368:6;14364:14;14357:58;14449:4;14444:2;14436:6;14432:15;14425:29;14240:221;:::o;14467:366::-;14609:3;14630:67;14694:2;14689:3;14630:67;:::i;:::-;14623:74;;14706:93;14795:3;14706:93;:::i;:::-;14824:2;14819:3;14815:12;14808:19;;14467:366;;;:::o;14839:419::-;15005:4;15043:2;15032:9;15028:18;15020:26;;15092:9;15086:4;15082:20;15078:1;15067:9;15063:17;15056:47;15120:131;15246:4;15120:131;:::i;:::-;15112:139;;14839:419;;;:::o;15264:224::-;15404:34;15400:1;15392:6;15388:14;15381:58;15473:7;15468:2;15460:6;15456:15;15449:32;15264:224;:::o;15494:366::-;15636:3;15657:67;15721:2;15716:3;15657:67;:::i;:::-;15650:74;;15733:93;15822:3;15733:93;:::i;:::-;15851:2;15846:3;15842:12;15835:19;;15494:366;;;:::o;15866:419::-;16032:4;16070:2;16059:9;16055:18;16047:26;;16119:9;16113:4;16109:20;16105:1;16094:9;16090:17;16083:47;16147:131;16273:4;16147:131;:::i;:::-;16139:139;;15866:419;;;:::o;16291:222::-;16431:34;16427:1;16419:6;16415:14;16408:58;16500:5;16495:2;16487:6;16483:15;16476:30;16291:222;:::o;16519:366::-;16661:3;16682:67;16746:2;16741:3;16682:67;:::i;:::-;16675:74;;16758:93;16847:3;16758:93;:::i;:::-;16876:2;16871:3;16867:12;16860:19;;16519:366;;;:::o;16891:419::-;17057:4;17095:2;17084:9;17080:18;17072:26;;17144:9;17138:4;17134:20;17130:1;17119:9;17115:17;17108:47;17172:131;17298:4;17172:131;:::i;:::-;17164:139;;16891:419;;;:::o;17316:228::-;17456:34;17452:1;17444:6;17440:14;17433:58;17525:11;17520:2;17512:6;17508:15;17501:36;17316:228;:::o;17550:366::-;17692:3;17713:67;17777:2;17772:3;17713:67;:::i;:::-;17706:74;;17789:93;17878:3;17789:93;:::i;:::-;17907:2;17902:3;17898:12;17891:19;;17550:366;;;:::o;17922:419::-;18088:4;18126:2;18115:9;18111:18;18103:26;;18175:9;18169:4;18165:20;18161:1;18150:9;18146:17;18139:47;18203:131;18329:4;18203:131;:::i;:::-;18195:139;;17922:419;;;:::o;18347:250::-;18487:34;18483:1;18475:6;18471:14;18464:58;18556:33;18551:2;18543:6;18539:15;18532:58;18347:250;:::o;18603:366::-;18745:3;18766:67;18830:2;18825:3;18766:67;:::i;:::-;18759:74;;18842:93;18931:3;18842:93;:::i;:::-;18960:2;18955:3;18951:12;18944:19;;18603:366;;;:::o;18975:419::-;19141:4;19179:2;19168:9;19164:18;19156:26;;19228:9;19222:4;19218:20;19214:1;19203:9;19199:17;19192:47;19256:131;19382:4;19256:131;:::i;:::-;19248:139;;18975:419;;;:::o;19400:178::-;19540:30;19536:1;19528:6;19524:14;19517:54;19400:178;:::o;19584:366::-;19726:3;19747:67;19811:2;19806:3;19747:67;:::i;:::-;19740:74;;19823:93;19912:3;19823:93;:::i;:::-;19941:2;19936:3;19932:12;19925:19;;19584:366;;;:::o;19956:419::-;20122:4;20160:2;20149:9;20145:18;20137:26;;20209:9;20203:4;20199:20;20195:1;20184:9;20180:17;20173:47;20237:131;20363:4;20237:131;:::i;:::-;20229:139;;19956:419;;;:::o;20381:305::-;20421:3;20440:20;20458:1;20440:20;:::i;:::-;20435:25;;20474:20;20492:1;20474:20;:::i;:::-;20469:25;;20628:1;20560:66;20556:74;20553:1;20550:81;20547:107;;;20634:18;;:::i;:::-;20547:107;20678:1;20675;20671:9;20664:16;;20381:305;;;;:::o;20692:222::-;20832:34;20828:1;20820:6;20816:14;20809:58;20901:5;20896:2;20888:6;20884:15;20877:30;20692:222;:::o;20920:366::-;21062:3;21083:67;21147:2;21142:3;21083:67;:::i;:::-;21076:74;;21159:93;21248:3;21159:93;:::i;:::-;21277:2;21272:3;21268:12;21261:19;;20920:366;;;:::o;21292:419::-;21458:4;21496:2;21485:9;21481:18;21473:26;;21545:9;21539:4;21535:20;21531:1;21520:9;21516:17;21509:47;21573:131;21699:4;21573:131;:::i;:::-;21565:139;;21292:419;;;:::o;21717:191::-;21757:4;21777:20;21795:1;21777:20;:::i;:::-;21772:25;;21811:20;21829:1;21811:20;:::i;:::-;21806:25;;21850:1;21847;21844:8;21841:34;;;21855:18;;:::i;:::-;21841:34;21900:1;21897;21893:9;21885:17;;21717:191;;;;:::o;21914:229::-;22054:34;22050:1;22042:6;22038:14;22031:58;22123:12;22118:2;22110:6;22106:15;22099:37;21914:229;:::o;22149:366::-;22291:3;22312:67;22376:2;22371:3;22312:67;:::i;:::-;22305:74;;22388:93;22477:3;22388:93;:::i;:::-;22506:2;22501:3;22497:12;22490:19;;22149:366;;;:::o;22521:419::-;22687:4;22725:2;22714:9;22710:18;22702:26;;22774:9;22768:4;22764:20;22760:1;22749:9;22745:17;22738:47;22802:131;22928:4;22802:131;:::i;:::-;22794:139;;22521:419;;;:::o;22946:180::-;22994:77;22991:1;22984:88;23091:4;23088:1;23081:15;23115:4;23112:1;23105:15;23132:143;23189:5;23220:6;23214:13;23205:22;;23236:33;23263:5;23236:33;:::i;:::-;23132:143;;;;:::o;23281:351::-;23351:6;23400:2;23388:9;23379:7;23375:23;23371:32;23368:119;;;23406:79;;:::i;:::-;23368:119;23526:1;23551:64;23607:7;23598:6;23587:9;23583:22;23551:64;:::i;:::-;23541:74;;23497:128;23281:351;;;;:::o;23638:85::-;23683:7;23712:5;23701:16;;23638:85;;;:::o;23729:158::-;23787:9;23820:61;23838:42;23847:32;23873:5;23847:32;:::i;:::-;23838:42;:::i;:::-;23820:61;:::i;:::-;23807:74;;23729:158;;;:::o;23893:147::-;23988:45;24027:5;23988:45;:::i;:::-;23983:3;23976:58;23893:147;;:::o;24046:114::-;24113:6;24147:5;24141:12;24131:22;;24046:114;;;:::o;24166:184::-;24265:11;24299:6;24294:3;24287:19;24339:4;24334:3;24330:14;24315:29;;24166:184;;;;:::o;24356:132::-;24423:4;24446:3;24438:11;;24476:4;24471:3;24467:14;24459:22;;24356:132;;;:::o;24494:108::-;24571:24;24589:5;24571:24;:::i;:::-;24566:3;24559:37;24494:108;;:::o;24608:179::-;24677:10;24698:46;24740:3;24732:6;24698:46;:::i;:::-;24776:4;24771:3;24767:14;24753:28;;24608:179;;;;:::o;24793:113::-;24863:4;24895;24890:3;24886:14;24878:22;;24793:113;;;:::o;24942:732::-;25061:3;25090:54;25138:5;25090:54;:::i;:::-;25160:86;25239:6;25234:3;25160:86;:::i;:::-;25153:93;;25270:56;25320:5;25270:56;:::i;:::-;25349:7;25380:1;25365:284;25390:6;25387:1;25384:13;25365:284;;;25466:6;25460:13;25493:63;25552:3;25537:13;25493:63;:::i;:::-;25486:70;;25579:60;25632:6;25579:60;:::i;:::-;25569:70;;25425:224;25412:1;25409;25405:9;25400:14;;25365:284;;;25369:14;25665:3;25658:10;;25066:608;;;24942:732;;;;:::o;25680:831::-;25943:4;25981:3;25970:9;25966:19;25958:27;;25995:71;26063:1;26052:9;26048:17;26039:6;25995:71;:::i;:::-;26076:80;26152:2;26141:9;26137:18;26128:6;26076:80;:::i;:::-;26203:9;26197:4;26193:20;26188:2;26177:9;26173:18;26166:48;26231:108;26334:4;26325:6;26231:108;:::i;:::-;26223:116;;26349:72;26417:2;26406:9;26402:18;26393:6;26349:72;:::i;:::-;26431:73;26499:3;26488:9;26484:19;26475:6;26431:73;:::i;:::-;25680:831;;;;;;;;:::o;26517:180::-;26565:77;26562:1;26555:88;26662:4;26659:1;26652:15;26686:4;26683:1;26676:15;26703:185;26743:1;26760:20;26778:1;26760:20;:::i;:::-;26755:25;;26794:20;26812:1;26794:20;:::i;:::-;26789:25;;26833:1;26823:35;;26838:18;;:::i;:::-;26823:35;26880:1;26877;26873:9;26868:14;;26703:185;;;;:::o;26894:177::-;27034:29;27030:1;27022:6;27018:14;27011:53;26894:177;:::o;27077:366::-;27219:3;27240:67;27304:2;27299:3;27240:67;:::i;:::-;27233:74;;27316:93;27405:3;27316:93;:::i;:::-;27434:2;27429:3;27425:12;27418:19;;27077:366;;;:::o;27449:419::-;27615:4;27653:2;27642:9;27638:18;27630:26;;27702:9;27696:4;27692:20;27688:1;27677:9;27673:17;27666:47;27730:131;27856:4;27730:131;:::i;:::-;27722:139;;27449:419;;;:::o;27874:348::-;27914:7;27937:20;27955:1;27937:20;:::i;:::-;27932:25;;27971:20;27989:1;27971:20;:::i;:::-;27966:25;;28159:1;28091:66;28087:74;28084:1;28081:81;28076:1;28069:9;28062:17;28058:105;28055:131;;;28166:18;;:::i;:::-;28055:131;28214:1;28211;28207:9;28196:20;;27874:348;;;;:::o;28228:220::-;28368:34;28364:1;28356:6;28352:14;28345:58;28437:3;28432:2;28424:6;28420:15;28413:28;28228:220;:::o;28454:366::-;28596:3;28617:67;28681:2;28676:3;28617:67;:::i;:::-;28610:74;;28693:93;28782:3;28693:93;:::i;:::-;28811:2;28806:3;28802:12;28795:19;;28454:366;;;:::o;28826:419::-;28992:4;29030:2;29019:9;29015:18;29007:26;;29079:9;29073:4;29069:20;29065:1;29054:9;29050:17;29043:47;29107:131;29233:4;29107:131;:::i;:::-;29099:139;;28826:419;;;:::o
Swarm Source
ipfs://f0a32fe536b180d83ea1b1a45799a7374615b9267c7d49af253f0bc1cfaa89d3
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.