ERC-20
Overview
Max Total Supply
420,000 SBONK
Holders
1
Total Transfers
-
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
SHIBONK
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2023-02-28 */ /** *Submitted for verification at BscScan.com on 2023-02-18 */ // SPDX-License-Identifier: UNLICENSE pragma solidity ^0.8.17; interface IBEP20 { 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { 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 ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } library Address { function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } contract SHIBONK is Context, IBEP20, Ownable { using Address for address payable; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; bool private swapping; IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 420000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public swapTokensAtAmount = 1e14 * 10**_decimals; address public deadWallet = 0x000000000000000000000000000000000000dEaD; address public marketingWallet = 0x3c8feb3917C002795089Ff1a8058E1472d4b42D8; string private constant _name = "SHIBONK"; string private constant _symbol = "SBONK"; struct Taxes { uint256 rfi; uint256 marketing; } // tax 2% Treasury Taxes public taxes = Taxes(0, 2); struct TotFeesPaidStruct { uint256 rfi; uint256 marketing; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues { uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rMarketing; uint256 tTransferAmount; uint256 tRfi; uint256 tMarketing; } modifier lockTheSwap() { swapping = true; _; swapping = false; } constructor(address routerAddress) { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; excludeFromReward(pair); excludeFromReward(deadWallet); _rOwned[owner()] = _rTotal; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[marketingWallet] = true; _isExcludedFromFee[deadWallet] = true; emit Transfer(address(0), owner(), _tTotal); } //std BEP20: 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; } //override BEP20: function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } 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); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferRfi) { valuesFromGetValues memory s = _getValues(tAmount, true); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true); return s.rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } //@dev kept original RFI naming -> "reward" as in reflection function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -= rRfi; totFeesPaid.rfi += tRfi; } function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private { totFeesPaid.marketing += tMarketing; if (_isExcluded[address(this)]) { _tOwned[address(this)] += tMarketing; } _rOwned[address(this)] += rMarketing; } function _getValues( uint256 tAmount, bool takeFee ) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee); ( to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing ) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues( uint256 tAmount, bool takeFee ) private view returns (valuesFromGetValues memory s) { if (!takeFee) { s.tTransferAmount = tAmount; return s; } s.tRfi = (tAmount * taxes.rfi) / 100; s.tMarketing = (tAmount * taxes.marketing) / 100; s.tTransferAmount = tAmount - s.tRfi - s.tMarketing; return s; } function _getRValues( valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate ) private pure returns ( uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rMarketing ) { rAmount = tAmount * currentRate; if (!takeFee) { return (rAmount, rAmount, 0, 0); } rRfi = s.tRfi * currentRate; rMarketing = s.tMarketing * currentRate; rTransferAmount = rAmount - rRfi - rMarketing; return (rAmount, rTransferAmount, rRfi, rMarketing); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply - _rOwned[_excluded[i]]; tSupply = tSupply - _tOwned[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: 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), "BEP20: transfer from the zero address"); require(to != address(0), "BEP20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require( amount <= balanceOf(from), "You are trying to transfer more than your balance" ); bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if ( !swapping && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to] ) { swapAndLiquify(); } bool takeFee = true; if (swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false; _tokenTransfer(from, to, amount, takeFee); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 tAmount, bool takeFee ) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee); if (_isExcluded[sender]) { //from excluded _tOwned[sender] = _tOwned[sender] - tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount; } _rOwned[sender] = _rOwned[sender] - s.rAmount; _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount; if (s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi); if (s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing); emit Transfer(sender, recipient, s.tTransferAmount); } function swapAndLiquify() private lockTheSwap { uint256 contractBalance = balanceOf(address(this)); swapTokensForWETH(contractBalance); uint256 deltaBalance = address(this).balance; if (deltaBalance > 0) { payable(marketingWallet).sendValue(deltaBalance); } } function swapTokensForWETH(uint256 tokenAmount) private { // generate the pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = state; } } function updateMarketingWallet(address newWallet) external onlyOwner { require(newWallet != address(0),"Fee Address cannot be zero address"); marketingWallet = newWallet; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner { require(amount <= 1e15, "Cannot set swap threshold amount higher than 1% of tokens"); swapTokensAtAmount = amount * 10**_decimals; } //Use this in case ETH are sent to the contract by mistake function rescueETH(uint256 weiAmount) external onlyOwner { require(address(this).balance >= weiAmount, "insufficient ETH balance"); payable(msg.sender).transfer(weiAmount); } //Use this in case BEP20 Tokens are sent to the contract by mistake function rescueAnyBEP20Tokens(address _tokenAddr,address _to, uint256 _amount) public onlyOwner { require(_tokenAddr != address(this), "Owner can't claim contract's balance of its own tokens"); IBEP20(_tokenAddr).transfer(_to, _amount); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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":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":"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":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009600a62000014919062000f0f565b620668a062000024919062000f60565b60095560095460001962000039919062000fda565b60001962000048919062001012565b600a556009600a6200005b919062000f0f565b655af3107a40006200006e919062000f60565b600b5561dead600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733c8feb3917c002795089ff1a8058e1472d4b42d8600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600081526020016002815250600e600082015181600001556020820151816001015550503480156200014557600080fd5b5060405162005bc838038062005bc883398181016040528101906200016b9190620010b7565b6200018b6200017f6200066b60201b60201c565b6200067360201b60201c565b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002049190620010b7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002929190620010b7565b6040518363ffffffff1660e01b8152600401620002b1929190620010fa565b6020604051808303816000875af1158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f79190620010b7565b905081600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ae600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200073760201b60201c565b620003e1600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200073760201b60201c565b600a5460016000620003f8620009f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000620004a4620009f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005f9620009f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200065a919062001138565b60405180910390a350505062001396565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007476200066b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200076d620009f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007bd90620011b6565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000856576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084d9062001228565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156200093357620008ef600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a1a60201b60201c565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600a5482111562000a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a5b90620012c0565b60405180910390fd5b600062000a7662000a8e60201b60201c565b9050808362000a869190620012e2565b915050919050565b600080600062000aa362000abc60201b60201c565b91509150808262000ab59190620012e2565b9250505090565b6000806000600a5490506000600954905060005b60068054905081101562000d3b5782600160006006848154811062000afa5762000af96200131a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118062000bec575081600260006006848154811062000b845762000b836200131a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1562000c0557600a546009549450945050505062000d71565b600160006006838154811062000c205762000c1f6200131a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548362000c93919062001012565b9250600260006006838154811062000cb05762000caf6200131a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548262000d23919062001012565b9150808062000d329062001349565b91505062000ad0565b50600954600a5462000d4e9190620012e2565b82101562000d6857600a5460095493509350505062000d71565b81819350935050505b9091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e035780860481111562000ddb5762000dda62000d75565b5b600185161562000deb5780820291505b808102905062000dfb8562000da4565b945062000dbb565b94509492505050565b60008262000e1e576001905062000ef1565b8162000e2e576000905062000ef1565b816001811462000e47576002811462000e525762000e88565b600191505062000ef1565b60ff84111562000e675762000e6662000d75565b5b8360020a91508482111562000e815762000e8062000d75565b5b5062000ef1565b5060208310610133831016604e8410600b841016171562000ec25782820a90508381111562000ebc5762000ebb62000d75565b5b62000ef1565b62000ed1848484600162000db1565b9250905081840481111562000eeb5762000eea62000d75565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000f1c8262000ef8565b915062000f298362000f02565b925062000f587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e0c565b905092915050565b600062000f6d8262000ef8565b915062000f7a8362000ef8565b925082820262000f8a8162000ef8565b9150828204841483151762000fa45762000fa362000d75565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fe78262000ef8565b915062000ff48362000ef8565b92508262001007576200100662000fab565b5b828206905092915050565b60006200101f8262000ef8565b91506200102c8362000ef8565b925082820390508181111562001047576200104662000d75565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200107f8262001052565b9050919050565b620010918162001072565b81146200109d57600080fd5b50565b600081519050620010b18162001086565b92915050565b600060208284031215620010d057620010cf6200104d565b5b6000620010e084828501620010a0565b91505092915050565b620010f48162001072565b82525050565b6000604082019050620011116000830185620010e9565b620011206020830184620010e9565b9392505050565b620011328162000ef8565b82525050565b60006020820190506200114f600083018462001127565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200119e60208362001155565b9150620011ab8262001166565b602082019050919050565b60006020820190508181036000830152620011d1816200118f565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b600062001210601b8362001155565b91506200121d82620011d8565b602082019050919050565b60006020820190508181036000830152620012438162001201565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000620012a8602a8362001155565b9150620012b5826200124a565b604082019050919050565b60006020820190508181036000830152620012db8162001299565b9050919050565b6000620012ef8262000ef8565b9150620012fc8362000ef8565b9250826200130f576200130e62000fab565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000620013568262000ef8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200138b576200138a62000d75565b5b600182019050919050565b61482280620013a66000396000f3fe6080604052600436106101fd5760003560e01c806385141a771161010d578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e1461077a578063e2f45605146107b7578063ea2f0b37146107e2578063f2fde38b1461080b578063f887ea401461083457610204565b8063a8aa1b31146106c0578063a9059cbb146106eb578063aacebbe314610728578063d257b34f1461075157610204565b806395d89b41116100dc57806395d89b41146106035780639ba5e4d51461062e5780639e252f001461065a578063a457c2d71461068357610204565b806385141a771461054757806388f82020146105725780638da5cb5b146105af5780638e2839ff146105da57610204565b8063437823ec116101905780635342acb41161015f5780635342acb41461045f57806370a082311461049c578063715018a6146104d9578063728f8eea146104f057806375f0a8741461051c57610204565b8063437823ec146103a75780634549b039146103d057806347c230921461040d57806352390c021461043657610204565b80632d838119116101cc5780632d838119146102d9578063313ce567146103165780633685d41914610341578063395093511461036a57610204565b806306fdde0314610209578063095ea7b31461023457806318160ddd1461027157806323b872dd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61085f565b60405161022b919061325a565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190613324565b61089c565b604051610268919061337f565b60405180910390f35b34801561027d57600080fd5b506102866108ba565b60405161029391906133a9565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be91906133c4565b6108c4565b6040516102d0919061337f565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190613417565b6109c5565b60405161030d91906133a9565b60405180910390f35b34801561032257600080fd5b5061032b610a2c565b6040516103389190613460565b60405180910390f35b34801561034d57600080fd5b506103686004803603810190610363919061347b565b610a35565b005b34801561037657600080fd5b50610391600480360381019061038c9190613324565b610d6a565b60405161039e919061337f565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c9919061347b565b610e16565b005b3480156103dc57600080fd5b506103f760048036038101906103f291906134d4565b610eed565b60405161040491906133a9565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f91906133c4565b610f73565b005b34801561044257600080fd5b5061045d6004803603810190610458919061347b565b6110e1565b005b34801561046b57600080fd5b506104866004803603810190610481919061347b565b61137c565b604051610493919061337f565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be919061347b565b6113d2565b6040516104d091906133a9565b60405180910390f35b3480156104e557600080fd5b506104ee6114bd565b005b3480156104fc57600080fd5b50610505611545565b604051610513929190613514565b60405180910390f35b34801561052857600080fd5b50610531611557565b60405161053e919061354c565b60405180910390f35b34801561055357600080fd5b5061055c61157d565b604051610569919061354c565b60405180910390f35b34801561057e57600080fd5b506105996004803603810190610594919061347b565b6115a3565b6040516105a6919061337f565b60405180910390f35b3480156105bb57600080fd5b506105c46115f9565b6040516105d1919061354c565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc91906136af565b611622565b005b34801561060f57600080fd5b50610618611733565b604051610625919061325a565b60405180910390f35b34801561063a57600080fd5b50610643611770565b604051610651929190613514565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190613417565b611782565b005b34801561068f57600080fd5b506106aa60048036038101906106a59190613324565b61188b565b6040516106b7919061337f565b60405180910390f35b3480156106cc57600080fd5b506106d561197f565b6040516106e2919061354c565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190613324565b6119a5565b60405161071f919061337f565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a919061347b565b6119bc565b005b34801561075d57600080fd5b5061077860048036038101906107739190613417565b611aeb565b005b34801561078657600080fd5b506107a1600480360381019061079c919061370b565b611bd3565b6040516107ae91906133a9565b60405180910390f35b3480156107c357600080fd5b506107cc611c5a565b6040516107d991906133a9565b60405180910390f35b3480156107ee57600080fd5b506108096004803603810190610804919061347b565b611c60565b005b34801561081757600080fd5b50610832600480360381019061082d919061347b565b611d37565b005b34801561084057600080fd5b50610849611e2e565b60405161085691906137aa565b60405180910390f35b60606040518060400160405280600781526020017f534849424f4e4b00000000000000000000000000000000000000000000000000815250905090565b60006108b06108a9611e54565b8484611e5c565b6001905092915050565b6000600954905090565b60006108d1848484612025565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061091c611e54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390613837565b60405180910390fd5b6109b9856109a8611e54565b85846109b49190613886565b611e5c565b60019150509392505050565b6000600a54821115610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a039061392c565b60405180910390fd5b6000610a166123ac565b90508083610a24919061397b565b915050919050565b60006009905090565b610a3d611e54565b73ffffffffffffffffffffffffffffffffffffffff16610a5b6115f9565b73ffffffffffffffffffffffffffffffffffffffff1614610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa8906139f8565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3490613a64565b60405180910390fd5b60005b600680549050811015610d66578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610b7857610b77613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d535760066001600680549050610bd29190613886565b81548110610be357610be2613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610c2257610c21613a84565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610d1957610d18613ab3565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610d66565b8080610d5e90613ae2565b915050610b40565b5050565b6000610e0c610d77611e54565b848460036000610d85611e54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e079190613b2a565b611e5c565b6001905092915050565b610e1e611e54565b73ffffffffffffffffffffffffffffffffffffffff16610e3c6115f9565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e89906139f8565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b90613baa565b60405180910390fd5b81610f55576000610f468460016123d0565b90508060000151915050610f6d565b6000610f628460016123d0565b905080602001519150505b92915050565b610f7b611e54565b73ffffffffffffffffffffffffffffffffffffffff16610f996115f9565b73ffffffffffffffffffffffffffffffffffffffff1614610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe6906139f8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490613c3c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611098929190613c5c565b6020604051808303816000875af11580156110b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110db9190613c9a565b50505050565b6110e9611e54565b73ffffffffffffffffffffffffffffffffffffffff166111076115f9565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611154906139f8565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190613d13565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156112be5761127a600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c5565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561146d57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506114b8565b6114b5600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c5565b90505b919050565b6114c5611e54565b73ffffffffffffffffffffffffffffffffffffffff166114e36115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611530906139f8565b60405180910390fd5b6115436000612421565b565b600e8060000154908060010154905082565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61162a611e54565b73ffffffffffffffffffffffffffffffffffffffff166116486115f9565b73ffffffffffffffffffffffffffffffffffffffff161461169e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611695906139f8565b60405180910390fd5b60005b825181101561172e5781600460008584815181106116c2576116c1613a84565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061172690613ae2565b9150506116a1565b505050565b60606040518060400160405280600581526020017f53424f4e4b000000000000000000000000000000000000000000000000000000815250905090565b60108060000154908060010154905082565b61178a611e54565b73ffffffffffffffffffffffffffffffffffffffff166117a86115f9565b73ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f5906139f8565b60405180910390fd5b80471015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183890613d7f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611887573d6000803e3d6000fd5b5050565b6000806003600061189a611e54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e90613e11565b60405180910390fd5b611974611962611e54565b85858461196f9190613886565b611e5c565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119b2338484612025565b6001905092915050565b6119c4611e54565b73ffffffffffffffffffffffffffffffffffffffff166119e26115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f906139f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e90613ea3565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611af3611e54565b73ffffffffffffffffffffffffffffffffffffffff16611b116115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e906139f8565b60405180910390fd5b66038d7ea4c68000811115611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613f35565b60405180910390fd5b6009600a611bbf9190614088565b81611bca91906140d3565b600b8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b611c68611e54565b73ffffffffffffffffffffffffffffffffffffffff16611c866115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906139f8565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d3f611e54565b73ffffffffffffffffffffffffffffffffffffffff16611d5d6115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906139f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990614187565b60405180910390fd5b611e2b81612421565b50565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec290614219565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f31906142ab565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161201891906133a9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208b9061433d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa906143cf565b60405180910390fd5b60008111612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d90614461565b60405180910390fd5b61214f836113d2565b811115612191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612188906144f3565b60405180910390fd5b6000600b5461219f306113d2565b10159050600760009054906101000a900460ff161580156121bd5750805b80156122175750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561226d5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122c35750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122d1576122d06124e5565b5b600060019050600760009054906101000a900460ff168061233b5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061238f5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561239957600090505b6123a58585858461258f565b5050505050565b60008060006123b9612955565b9150915080826123c9919061397b565b9250505090565b6123d861318d565b6123e28383612bf3565b90506123f78184846123f26123ac565b612c8a565b84600001856020018660400187606001848152508481525084815250848152505050505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600760006101000a81548160ff021916908315150217905550600061250b306113d2565b905061251681612cfe565b600047905060008111156125705761256f81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f4190919063ffffffff16565b5b50506000600760006101000a81548160ff021916908315150217905550565b600061259b83836123d0565b9050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561267e5782600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263a9190613886565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612763578060800151600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271f9190613b2a565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8060000151600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b29190613886565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060200151600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128449190613b2a565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008160400151118061289e575060008160a00151115b156128b6576128b581604001518260a00151613035565b5b6000816060015111806128cd575060008160c00151115b156128e5576128e481606001518260c0015161306e565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836080015160405161294691906133a9565b60405180910390a35050505050565b6000806000600a5490506000600954905060005b600680549050811015612bbd5782600160006006848154811061298f5761298e613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612a7d5750816002600060068481548110612a1557612a14613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612a9457600a5460095494509450505050612bef565b6001600060068381548110612aac57612aab613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612b1d9190613886565b92506002600060068381548110612b3757612b36613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612ba89190613886565b91508080612bb590613ae2565b915050612969565b50600954600a54612bce919061397b565b821015612be657600a54600954935093505050612bef565b81819350935050505b9091565b612bfb61318d565b81612c0f5782816080018181525050612c84565b6064600e6000015484612c2291906140d3565b612c2c919061397b565b8160a00181815250506064600e6001015484612c4891906140d3565b612c52919061397b565b8160c00181815250508060c001518160a0015184612c709190613886565b612c7a9190613886565b8160800181815250505b92915050565b6000806000808487612c9c91906140d3565b935085612cb55783846000809350935093509350612cf3565b848860a00151612cc591906140d3565b9150848860c00151612cd791906140d3565b9050808285612ce69190613886565b612cf09190613886565b92505b945094509450949050565b6000600267ffffffffffffffff811115612d1b57612d1a61356c565b5b604051908082528060200260200182016040528015612d495781602001602082028036833780820191505090505b5090503081600081518110612d6157612d60613a84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c9190614528565b81600181518110612e4057612e3f613a84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ea730600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e5c565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f0b95949392919061464e565b600060405180830381600087803b158015612f2557600080fd5b505af1158015612f39573d6000803e3d6000fd5b505050505050565b80471015612f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7b906146f4565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612faa90614745565b60006040518083038185875af1925050503d8060008114612fe7576040519150601f19603f3d011682016040523d82523d6000602084013e612fec565b606091505b5050905080613030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613027906147cc565b60405180910390fd5b505050565b81600a60008282546130479190613886565b9250508190555080601060000160008282546130639190613b2a565b925050819055505050565b80601060010160008282546130839190613b2a565b92505081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131335780600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461312b9190613b2a565b925050819055505b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131829190613b2a565b925050819055505050565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156132045780820151818401526020810190506131e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061322c826131ca565b61323681856131d5565b93506132468185602086016131e6565b61324f81613210565b840191505092915050565b600060208201905081810360008301526132748184613221565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132bb82613290565b9050919050565b6132cb816132b0565b81146132d657600080fd5b50565b6000813590506132e8816132c2565b92915050565b6000819050919050565b613301816132ee565b811461330c57600080fd5b50565b60008135905061331e816132f8565b92915050565b6000806040838503121561333b5761333a613286565b5b6000613349858286016132d9565b925050602061335a8582860161330f565b9150509250929050565b60008115159050919050565b61337981613364565b82525050565b60006020820190506133946000830184613370565b92915050565b6133a3816132ee565b82525050565b60006020820190506133be600083018461339a565b92915050565b6000806000606084860312156133dd576133dc613286565b5b60006133eb868287016132d9565b93505060206133fc868287016132d9565b925050604061340d8682870161330f565b9150509250925092565b60006020828403121561342d5761342c613286565b5b600061343b8482850161330f565b91505092915050565b600060ff82169050919050565b61345a81613444565b82525050565b60006020820190506134756000830184613451565b92915050565b60006020828403121561349157613490613286565b5b600061349f848285016132d9565b91505092915050565b6134b181613364565b81146134bc57600080fd5b50565b6000813590506134ce816134a8565b92915050565b600080604083850312156134eb576134ea613286565b5b60006134f98582860161330f565b925050602061350a858286016134bf565b9150509250929050565b6000604082019050613529600083018561339a565b613536602083018461339a565b9392505050565b613546816132b0565b82525050565b6000602082019050613561600083018461353d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135a482613210565b810181811067ffffffffffffffff821117156135c3576135c261356c565b5b80604052505050565b60006135d661327c565b90506135e2828261359b565b919050565b600067ffffffffffffffff8211156136025761360161356c565b5b602082029050602081019050919050565b600080fd5b600061362b613626846135e7565b6135cc565b9050808382526020820190506020840283018581111561364e5761364d613613565b5b835b81811015613677578061366388826132d9565b845260208401935050602081019050613650565b5050509392505050565b600082601f83011261369657613695613567565b5b81356136a6848260208601613618565b91505092915050565b600080604083850312156136c6576136c5613286565b5b600083013567ffffffffffffffff8111156136e4576136e361328b565b5b6136f085828601613681565b9250506020613701858286016134bf565b9150509250929050565b6000806040838503121561372257613721613286565b5b6000613730858286016132d9565b9250506020613741858286016132d9565b9150509250929050565b6000819050919050565b600061377061376b61376684613290565b61374b565b613290565b9050919050565b600061378282613755565b9050919050565b600061379482613777565b9050919050565b6137a481613789565b82525050565b60006020820190506137bf600083018461379b565b92915050565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138216028836131d5565b915061382c826137c5565b604082019050919050565b6000602082019050818103600083015261385081613814565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613891826132ee565b915061389c836132ee565b92508282039050818111156138b4576138b3613857565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613916602a836131d5565b9150613921826138ba565b604082019050919050565b6000602082019050818103600083015261394581613909565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613986826132ee565b9150613991836132ee565b9250826139a1576139a061394c565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139e26020836131d5565b91506139ed826139ac565b602082019050919050565b60006020820190508181036000830152613a11816139d5565b9050919050565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b6000613a4e6017836131d5565b9150613a5982613a18565b602082019050919050565b60006020820190508181036000830152613a7d81613a41565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000613aed826132ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b1f57613b1e613857565b5b600182019050919050565b6000613b35826132ee565b9150613b40836132ee565b9250828201905080821115613b5857613b57613857565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000613b94601f836131d5565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613c266036836131d5565b9150613c3182613bca565b604082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b6000604082019050613c71600083018561353d565b613c7e602083018461339a565b9392505050565b600081519050613c94816134a8565b92915050565b600060208284031215613cb057613caf613286565b5b6000613cbe84828501613c85565b91505092915050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613cfd601b836131d5565b9150613d0882613cc7565b602082019050919050565b60006020820190508181036000830152613d2c81613cf0565b9050919050565b7f696e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000613d696018836131d5565b9150613d7482613d33565b602082019050919050565b60006020820190508181036000830152613d9881613d5c565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613dfb6025836131d5565b9150613e0682613d9f565b604082019050919050565b60006020820190508181036000830152613e2a81613dee565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e8d6022836131d5565b9150613e9882613e31565b604082019050919050565b60006020820190508181036000830152613ebc81613e80565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f20686967686572207468616e203125206f6620746f6b656e7300000000000000602082015250565b6000613f1f6039836131d5565b9150613f2a82613ec3565b604082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613fac57808604811115613f8857613f87613857565b5b6001851615613f975780820291505b8081029050613fa585613f55565b9450613f6c565b94509492505050565b600082613fc55760019050614081565b81613fd35760009050614081565b8160018114613fe95760028114613ff357614022565b6001915050614081565b60ff84111561400557614004613857565b5b8360020a91508482111561401c5761401b613857565b5b50614081565b5060208310610133831016604e8410600b84101617156140575782820a90508381111561405257614051613857565b5b614081565b6140648484846001613f62565b9250905081840481111561407b5761407a613857565b5b81810290505b9392505050565b6000614093826132ee565b915061409e83613444565b92506140cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613fb5565b905092915050565b60006140de826132ee565b91506140e9836132ee565b92508282026140f7816132ee565b9150828204841483151761410e5761410d613857565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006141716026836131d5565b915061417c82614115565b604082019050919050565b600060208201905081810360008301526141a081614164565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006142036024836131d5565b915061420e826141a7565b604082019050919050565b60006020820190508181036000830152614232816141f6565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142956022836131d5565b91506142a082614239565b604082019050919050565b600060208201905081810360008301526142c481614288565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143276025836131d5565b9150614332826142cb565b604082019050919050565b600060208201905081810360008301526143568161431a565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006143b96023836131d5565b91506143c48261435d565b604082019050919050565b600060208201905081810360008301526143e8816143ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061444b6029836131d5565b9150614456826143ef565b604082019050919050565b6000602082019050818103600083015261447a8161443e565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006144dd6031836131d5565b91506144e882614481565b604082019050919050565b6000602082019050818103600083015261450c816144d0565b9050919050565b600081519050614522816132c2565b92915050565b60006020828403121561453e5761453d613286565b5b600061454c84828501614513565b91505092915050565b6000819050919050565b600061457a61457561457084614555565b61374b565b6132ee565b9050919050565b61458a8161455f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145c5816132b0565b82525050565b60006145d783836145bc565b60208301905092915050565b6000602082019050919050565b60006145fb82614590565b614605818561459b565b9350614610836145ac565b8060005b8381101561464157815161462888826145cb565b9750614633836145e3565b925050600181019050614614565b5085935050505092915050565b600060a082019050614663600083018861339a565b6146706020830187614581565b818103604083015261468281866145f0565b9050614691606083018561353d565b61469e608083018461339a565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006146de601d836131d5565b91506146e9826146a8565b602082019050919050565b6000602082019050818103600083015261470d816146d1565b9050919050565b600081905092915050565b50565b600061472f600083614714565b915061473a8261471f565b600082019050919050565b600061475082614722565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006147b6603a836131d5565b91506147c18261475a565b604082019050919050565b600060208201905081810360008301526147e5816147a9565b905091905056fea264697066735822122082e2a494fbfe59e80b7a128e31c61d85cdaae8bea0817f0a848b5428744e78ff64736f6c634300081100330000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c806385141a771161010d578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e1461077a578063e2f45605146107b7578063ea2f0b37146107e2578063f2fde38b1461080b578063f887ea401461083457610204565b8063a8aa1b31146106c0578063a9059cbb146106eb578063aacebbe314610728578063d257b34f1461075157610204565b806395d89b41116100dc57806395d89b41146106035780639ba5e4d51461062e5780639e252f001461065a578063a457c2d71461068357610204565b806385141a771461054757806388f82020146105725780638da5cb5b146105af5780638e2839ff146105da57610204565b8063437823ec116101905780635342acb41161015f5780635342acb41461045f57806370a082311461049c578063715018a6146104d9578063728f8eea146104f057806375f0a8741461051c57610204565b8063437823ec146103a75780634549b039146103d057806347c230921461040d57806352390c021461043657610204565b80632d838119116101cc5780632d838119146102d9578063313ce567146103165780633685d41914610341578063395093511461036a57610204565b806306fdde0314610209578063095ea7b31461023457806318160ddd1461027157806323b872dd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61085f565b60405161022b919061325a565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190613324565b61089c565b604051610268919061337f565b60405180910390f35b34801561027d57600080fd5b506102866108ba565b60405161029391906133a9565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be91906133c4565b6108c4565b6040516102d0919061337f565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190613417565b6109c5565b60405161030d91906133a9565b60405180910390f35b34801561032257600080fd5b5061032b610a2c565b6040516103389190613460565b60405180910390f35b34801561034d57600080fd5b506103686004803603810190610363919061347b565b610a35565b005b34801561037657600080fd5b50610391600480360381019061038c9190613324565b610d6a565b60405161039e919061337f565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c9919061347b565b610e16565b005b3480156103dc57600080fd5b506103f760048036038101906103f291906134d4565b610eed565b60405161040491906133a9565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f91906133c4565b610f73565b005b34801561044257600080fd5b5061045d6004803603810190610458919061347b565b6110e1565b005b34801561046b57600080fd5b506104866004803603810190610481919061347b565b61137c565b604051610493919061337f565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be919061347b565b6113d2565b6040516104d091906133a9565b60405180910390f35b3480156104e557600080fd5b506104ee6114bd565b005b3480156104fc57600080fd5b50610505611545565b604051610513929190613514565b60405180910390f35b34801561052857600080fd5b50610531611557565b60405161053e919061354c565b60405180910390f35b34801561055357600080fd5b5061055c61157d565b604051610569919061354c565b60405180910390f35b34801561057e57600080fd5b506105996004803603810190610594919061347b565b6115a3565b6040516105a6919061337f565b60405180910390f35b3480156105bb57600080fd5b506105c46115f9565b6040516105d1919061354c565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc91906136af565b611622565b005b34801561060f57600080fd5b50610618611733565b604051610625919061325a565b60405180910390f35b34801561063a57600080fd5b50610643611770565b604051610651929190613514565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190613417565b611782565b005b34801561068f57600080fd5b506106aa60048036038101906106a59190613324565b61188b565b6040516106b7919061337f565b60405180910390f35b3480156106cc57600080fd5b506106d561197f565b6040516106e2919061354c565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190613324565b6119a5565b60405161071f919061337f565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a919061347b565b6119bc565b005b34801561075d57600080fd5b5061077860048036038101906107739190613417565b611aeb565b005b34801561078657600080fd5b506107a1600480360381019061079c919061370b565b611bd3565b6040516107ae91906133a9565b60405180910390f35b3480156107c357600080fd5b506107cc611c5a565b6040516107d991906133a9565b60405180910390f35b3480156107ee57600080fd5b506108096004803603810190610804919061347b565b611c60565b005b34801561081757600080fd5b50610832600480360381019061082d919061347b565b611d37565b005b34801561084057600080fd5b50610849611e2e565b60405161085691906137aa565b60405180910390f35b60606040518060400160405280600781526020017f534849424f4e4b00000000000000000000000000000000000000000000000000815250905090565b60006108b06108a9611e54565b8484611e5c565b6001905092915050565b6000600954905090565b60006108d1848484612025565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061091c611e54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390613837565b60405180910390fd5b6109b9856109a8611e54565b85846109b49190613886565b611e5c565b60019150509392505050565b6000600a54821115610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a039061392c565b60405180910390fd5b6000610a166123ac565b90508083610a24919061397b565b915050919050565b60006009905090565b610a3d611e54565b73ffffffffffffffffffffffffffffffffffffffff16610a5b6115f9565b73ffffffffffffffffffffffffffffffffffffffff1614610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa8906139f8565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3490613a64565b60405180910390fd5b60005b600680549050811015610d66578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610b7857610b77613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d535760066001600680549050610bd29190613886565b81548110610be357610be2613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610c2257610c21613a84565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610d1957610d18613ab3565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610d66565b8080610d5e90613ae2565b915050610b40565b5050565b6000610e0c610d77611e54565b848460036000610d85611e54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e079190613b2a565b611e5c565b6001905092915050565b610e1e611e54565b73ffffffffffffffffffffffffffffffffffffffff16610e3c6115f9565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e89906139f8565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b90613baa565b60405180910390fd5b81610f55576000610f468460016123d0565b90508060000151915050610f6d565b6000610f628460016123d0565b905080602001519150505b92915050565b610f7b611e54565b73ffffffffffffffffffffffffffffffffffffffff16610f996115f9565b73ffffffffffffffffffffffffffffffffffffffff1614610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe6906139f8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490613c3c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611098929190613c5c565b6020604051808303816000875af11580156110b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110db9190613c9a565b50505050565b6110e9611e54565b73ffffffffffffffffffffffffffffffffffffffff166111076115f9565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611154906139f8565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190613d13565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156112be5761127a600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c5565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561146d57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506114b8565b6114b5600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c5565b90505b919050565b6114c5611e54565b73ffffffffffffffffffffffffffffffffffffffff166114e36115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611530906139f8565b60405180910390fd5b6115436000612421565b565b600e8060000154908060010154905082565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61162a611e54565b73ffffffffffffffffffffffffffffffffffffffff166116486115f9565b73ffffffffffffffffffffffffffffffffffffffff161461169e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611695906139f8565b60405180910390fd5b60005b825181101561172e5781600460008584815181106116c2576116c1613a84565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061172690613ae2565b9150506116a1565b505050565b60606040518060400160405280600581526020017f53424f4e4b000000000000000000000000000000000000000000000000000000815250905090565b60108060000154908060010154905082565b61178a611e54565b73ffffffffffffffffffffffffffffffffffffffff166117a86115f9565b73ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f5906139f8565b60405180910390fd5b80471015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183890613d7f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611887573d6000803e3d6000fd5b5050565b6000806003600061189a611e54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e90613e11565b60405180910390fd5b611974611962611e54565b85858461196f9190613886565b611e5c565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119b2338484612025565b6001905092915050565b6119c4611e54565b73ffffffffffffffffffffffffffffffffffffffff166119e26115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f906139f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e90613ea3565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611af3611e54565b73ffffffffffffffffffffffffffffffffffffffff16611b116115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e906139f8565b60405180910390fd5b66038d7ea4c68000811115611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613f35565b60405180910390fd5b6009600a611bbf9190614088565b81611bca91906140d3565b600b8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b611c68611e54565b73ffffffffffffffffffffffffffffffffffffffff16611c866115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906139f8565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d3f611e54565b73ffffffffffffffffffffffffffffffffffffffff16611d5d6115f9565b73ffffffffffffffffffffffffffffffffffffffff1614611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906139f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990614187565b60405180910390fd5b611e2b81612421565b50565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec290614219565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f31906142ab565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161201891906133a9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208b9061433d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa906143cf565b60405180910390fd5b60008111612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d90614461565b60405180910390fd5b61214f836113d2565b811115612191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612188906144f3565b60405180910390fd5b6000600b5461219f306113d2565b10159050600760009054906101000a900460ff161580156121bd5750805b80156122175750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561226d5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122c35750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122d1576122d06124e5565b5b600060019050600760009054906101000a900460ff168061233b5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061238f5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561239957600090505b6123a58585858461258f565b5050505050565b60008060006123b9612955565b9150915080826123c9919061397b565b9250505090565b6123d861318d565b6123e28383612bf3565b90506123f78184846123f26123ac565b612c8a565b84600001856020018660400187606001848152508481525084815250848152505050505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600760006101000a81548160ff021916908315150217905550600061250b306113d2565b905061251681612cfe565b600047905060008111156125705761256f81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f4190919063ffffffff16565b5b50506000600760006101000a81548160ff021916908315150217905550565b600061259b83836123d0565b9050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561267e5782600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263a9190613886565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612763578060800151600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271f9190613b2a565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8060000151600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b29190613886565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060200151600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128449190613b2a565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008160400151118061289e575060008160a00151115b156128b6576128b581604001518260a00151613035565b5b6000816060015111806128cd575060008160c00151115b156128e5576128e481606001518260c0015161306e565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836080015160405161294691906133a9565b60405180910390a35050505050565b6000806000600a5490506000600954905060005b600680549050811015612bbd5782600160006006848154811061298f5761298e613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612a7d5750816002600060068481548110612a1557612a14613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612a9457600a5460095494509450505050612bef565b6001600060068381548110612aac57612aab613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612b1d9190613886565b92506002600060068381548110612b3757612b36613a84565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612ba89190613886565b91508080612bb590613ae2565b915050612969565b50600954600a54612bce919061397b565b821015612be657600a54600954935093505050612bef565b81819350935050505b9091565b612bfb61318d565b81612c0f5782816080018181525050612c84565b6064600e6000015484612c2291906140d3565b612c2c919061397b565b8160a00181815250506064600e6001015484612c4891906140d3565b612c52919061397b565b8160c00181815250508060c001518160a0015184612c709190613886565b612c7a9190613886565b8160800181815250505b92915050565b6000806000808487612c9c91906140d3565b935085612cb55783846000809350935093509350612cf3565b848860a00151612cc591906140d3565b9150848860c00151612cd791906140d3565b9050808285612ce69190613886565b612cf09190613886565b92505b945094509450949050565b6000600267ffffffffffffffff811115612d1b57612d1a61356c565b5b604051908082528060200260200182016040528015612d495781602001602082028036833780820191505090505b5090503081600081518110612d6157612d60613a84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c9190614528565b81600181518110612e4057612e3f613a84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ea730600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e5c565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f0b95949392919061464e565b600060405180830381600087803b158015612f2557600080fd5b505af1158015612f39573d6000803e3d6000fd5b505050505050565b80471015612f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7b906146f4565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612faa90614745565b60006040518083038185875af1925050503d8060008114612fe7576040519150601f19603f3d011682016040523d82523d6000602084013e612fec565b606091505b5050905080613030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613027906147cc565b60405180910390fd5b505050565b81600a60008282546130479190613886565b9250508190555080601060000160008282546130639190613b2a565b925050819055505050565b80601060010160008282546130839190613b2a565b92505081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131335780600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461312b9190613b2a565b925050819055505b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131829190613b2a565b925050819055505050565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156132045780820151818401526020810190506131e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061322c826131ca565b61323681856131d5565b93506132468185602086016131e6565b61324f81613210565b840191505092915050565b600060208201905081810360008301526132748184613221565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132bb82613290565b9050919050565b6132cb816132b0565b81146132d657600080fd5b50565b6000813590506132e8816132c2565b92915050565b6000819050919050565b613301816132ee565b811461330c57600080fd5b50565b60008135905061331e816132f8565b92915050565b6000806040838503121561333b5761333a613286565b5b6000613349858286016132d9565b925050602061335a8582860161330f565b9150509250929050565b60008115159050919050565b61337981613364565b82525050565b60006020820190506133946000830184613370565b92915050565b6133a3816132ee565b82525050565b60006020820190506133be600083018461339a565b92915050565b6000806000606084860312156133dd576133dc613286565b5b60006133eb868287016132d9565b93505060206133fc868287016132d9565b925050604061340d8682870161330f565b9150509250925092565b60006020828403121561342d5761342c613286565b5b600061343b8482850161330f565b91505092915050565b600060ff82169050919050565b61345a81613444565b82525050565b60006020820190506134756000830184613451565b92915050565b60006020828403121561349157613490613286565b5b600061349f848285016132d9565b91505092915050565b6134b181613364565b81146134bc57600080fd5b50565b6000813590506134ce816134a8565b92915050565b600080604083850312156134eb576134ea613286565b5b60006134f98582860161330f565b925050602061350a858286016134bf565b9150509250929050565b6000604082019050613529600083018561339a565b613536602083018461339a565b9392505050565b613546816132b0565b82525050565b6000602082019050613561600083018461353d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135a482613210565b810181811067ffffffffffffffff821117156135c3576135c261356c565b5b80604052505050565b60006135d661327c565b90506135e2828261359b565b919050565b600067ffffffffffffffff8211156136025761360161356c565b5b602082029050602081019050919050565b600080fd5b600061362b613626846135e7565b6135cc565b9050808382526020820190506020840283018581111561364e5761364d613613565b5b835b81811015613677578061366388826132d9565b845260208401935050602081019050613650565b5050509392505050565b600082601f83011261369657613695613567565b5b81356136a6848260208601613618565b91505092915050565b600080604083850312156136c6576136c5613286565b5b600083013567ffffffffffffffff8111156136e4576136e361328b565b5b6136f085828601613681565b9250506020613701858286016134bf565b9150509250929050565b6000806040838503121561372257613721613286565b5b6000613730858286016132d9565b9250506020613741858286016132d9565b9150509250929050565b6000819050919050565b600061377061376b61376684613290565b61374b565b613290565b9050919050565b600061378282613755565b9050919050565b600061379482613777565b9050919050565b6137a481613789565b82525050565b60006020820190506137bf600083018461379b565b92915050565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138216028836131d5565b915061382c826137c5565b604082019050919050565b6000602082019050818103600083015261385081613814565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613891826132ee565b915061389c836132ee565b92508282039050818111156138b4576138b3613857565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613916602a836131d5565b9150613921826138ba565b604082019050919050565b6000602082019050818103600083015261394581613909565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613986826132ee565b9150613991836132ee565b9250826139a1576139a061394c565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139e26020836131d5565b91506139ed826139ac565b602082019050919050565b60006020820190508181036000830152613a11816139d5565b9050919050565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b6000613a4e6017836131d5565b9150613a5982613a18565b602082019050919050565b60006020820190508181036000830152613a7d81613a41565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000613aed826132ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b1f57613b1e613857565b5b600182019050919050565b6000613b35826132ee565b9150613b40836132ee565b9250828201905080821115613b5857613b57613857565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000613b94601f836131d5565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613c266036836131d5565b9150613c3182613bca565b604082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b6000604082019050613c71600083018561353d565b613c7e602083018461339a565b9392505050565b600081519050613c94816134a8565b92915050565b600060208284031215613cb057613caf613286565b5b6000613cbe84828501613c85565b91505092915050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613cfd601b836131d5565b9150613d0882613cc7565b602082019050919050565b60006020820190508181036000830152613d2c81613cf0565b9050919050565b7f696e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000613d696018836131d5565b9150613d7482613d33565b602082019050919050565b60006020820190508181036000830152613d9881613d5c565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613dfb6025836131d5565b9150613e0682613d9f565b604082019050919050565b60006020820190508181036000830152613e2a81613dee565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e8d6022836131d5565b9150613e9882613e31565b604082019050919050565b60006020820190508181036000830152613ebc81613e80565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f20686967686572207468616e203125206f6620746f6b656e7300000000000000602082015250565b6000613f1f6039836131d5565b9150613f2a82613ec3565b604082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613fac57808604811115613f8857613f87613857565b5b6001851615613f975780820291505b8081029050613fa585613f55565b9450613f6c565b94509492505050565b600082613fc55760019050614081565b81613fd35760009050614081565b8160018114613fe95760028114613ff357614022565b6001915050614081565b60ff84111561400557614004613857565b5b8360020a91508482111561401c5761401b613857565b5b50614081565b5060208310610133831016604e8410600b84101617156140575782820a90508381111561405257614051613857565b5b614081565b6140648484846001613f62565b9250905081840481111561407b5761407a613857565b5b81810290505b9392505050565b6000614093826132ee565b915061409e83613444565b92506140cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613fb5565b905092915050565b60006140de826132ee565b91506140e9836132ee565b92508282026140f7816132ee565b9150828204841483151761410e5761410d613857565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006141716026836131d5565b915061417c82614115565b604082019050919050565b600060208201905081810360008301526141a081614164565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006142036024836131d5565b915061420e826141a7565b604082019050919050565b60006020820190508181036000830152614232816141f6565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142956022836131d5565b91506142a082614239565b604082019050919050565b600060208201905081810360008301526142c481614288565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143276025836131d5565b9150614332826142cb565b604082019050919050565b600060208201905081810360008301526143568161431a565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006143b96023836131d5565b91506143c48261435d565b604082019050919050565b600060208201905081810360008301526143e8816143ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061444b6029836131d5565b9150614456826143ef565b604082019050919050565b6000602082019050818103600083015261447a8161443e565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006144dd6031836131d5565b91506144e882614481565b604082019050919050565b6000602082019050818103600083015261450c816144d0565b9050919050565b600081519050614522816132c2565b92915050565b60006020828403121561453e5761453d613286565b5b600061454c84828501614513565b91505092915050565b6000819050919050565b600061457a61457561457084614555565b61374b565b6132ee565b9050919050565b61458a8161455f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145c5816132b0565b82525050565b60006145d783836145bc565b60208301905092915050565b6000602082019050919050565b60006145fb82614590565b614605818561459b565b9350614610836145ac565b8060005b8381101561464157815161462888826145cb565b9750614633836145e3565b925050600181019050614614565b5085935050505092915050565b600060a082019050614663600083018861339a565b6146706020830187614581565b818103604083015261468281866145f0565b9050614691606083018561353d565b61469e608083018461339a565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006146de601d836131d5565b91506146e9826146a8565b602082019050919050565b6000602082019050818103600083015261470d816146d1565b9050919050565b600081905092915050565b50565b600061472f600083614714565b915061473a8261471f565b600082019050919050565b600061475082614722565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006147b6603a836131d5565b91506147c18261475a565b604082019050919050565b600060208201905081810360008301526147e5816147a9565b905091905056fea264697066735822122082e2a494fbfe59e80b7a128e31c61d85cdaae8bea0817f0a848b5428744e78ff64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506
-----Decoded View---------------
Arg [0] : routerAddress (address): 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506
Deployed Bytecode Sourcemap
3383:13913:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5672:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6432:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5972:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6601:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8472:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5858:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9136:473;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7057:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9617:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7975:489;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16995:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8796:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9854:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6075:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1697:94;;;;;;;;;;;;;:::i;:::-;;4516:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4233:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4156:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7845:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1474:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15996:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5763:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4648:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16717:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7272:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3856:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7672:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16216:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16419:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6281:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4091:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9736:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1799:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3828:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5672:83;5709:13;5742:5;;;;;;;;;;;;;;;;;5735:12;;5672:83;:::o;6432:161::-;6507:4;6524:39;6533:12;:10;:12::i;:::-;6547:7;6556:6;6524:8;:39::i;:::-;6581:4;6574:11;;6432:161;;;;:::o;5972:95::-;6025:7;6052;;6045:14;;5972:95;:::o;6601:448::-;6733:4;6750:36;6760:6;6768:9;6779:6;6750:9;:36::i;:::-;6799:24;6826:11;:19;6838:6;6826:19;;;;;;;;;;;;;;;:33;6846:12;:10;:12::i;:::-;6826:33;;;;;;;;;;;;;;;;6799:60;;6898:6;6878:16;:26;;6870:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6960:57;6969:6;6977:12;:10;:12::i;:::-;7010:6;6991:16;:25;;;;:::i;:::-;6960:8;:57::i;:::-;7037:4;7030:11;;;6601:448;;;;;:::o;8472:250::-;8539:7;8578;;8567;:18;;8559:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8643:19;8665:10;:8;:10::i;:::-;8643:32;;8703:11;8693:7;:21;;;;:::i;:::-;8686:28;;;8472:250;;;:::o;5858:83::-;5899:5;3919:1;5917:16;;5858:83;:::o;9136:473::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9216:11:::1;:20;9228:7;9216:20;;;;;;;;;;;;;;;;;;;;;;;;;9208:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9280:9;9275:327;9299:9;:16;;;;9295:1;:20;9275:327;;;9357:7;9341:23;;:9;9351:1;9341:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;9337:254:::1;;9400:9;9429:1;9410:9;:16;;;;:20;;;;:::i;:::-;9400:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9385:9;9395:1;9385:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;9469:1;9450:7;:16;9458:7;9450:16;;;;;;;;;;;;;;;:20;;;;9512:5;9489:11;:20;9501:7;9489:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;9536:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;9570:5;;9337:254;9317:3;;;;;:::i;:::-;;;;9275:327;;;;9136:473:::0;:::o;7057:207::-;7137:4;7154:80;7163:12;:10;:12::i;:::-;7177:7;7223:10;7186:11;:25;7198:12;:10;:12::i;:::-;7186:25;;;;;;;;;;;;;;;:34;7212:7;7186:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7154:8;:80::i;:::-;7252:4;7245:11;;7057:207;;;;:::o;9617:111::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9716:4:::1;9686:18;:27;9705:7;9686:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9617:111:::0;:::o;7975:489::-;8093:7;8137;;8126;:18;;8118:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8196:17;8191:266;;8230:28;8261:25;8272:7;8281:4;8261:10;:25::i;:::-;8230:56;;8308:1;:9;;;8301:16;;;;;8191:266;8350:28;8381:25;8392:7;8401:4;8381:10;:25::i;:::-;8350:56;;8428:1;:17;;;8421:24;;;7975:489;;;;;:::o;16995:261::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17132:4:::1;17110:27;;:10;:27;;::::0;17102:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17214:10;17207:27;;;17235:3;17240:7;17207:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16995:261:::0;;;:::o;8796:332::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8877:11:::1;:20;8889:7;8877:20;;;;;;;;;;;;;;;;;;;;;;;;;8876:21;8868:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8963:1;8944:7;:16;8952:7;8944:16;;;;;;;;;;;;;;;;:20;8940:109;;;9000:37;9020:7;:16;9028:7;9020:16;;;;;;;;;;;;;;;;9000:19;:37::i;:::-;8981:7;:16;8989:7;8981:16;;;;;;;;;;;;;;;:56;;;;8940:109;9082:4;9059:11;:20;9071:7;9059:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;9097:9;9112:7;9097:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8796:332:::0;:::o;9854:124::-;9919:4;9943:18;:27;9962:7;9943:27;;;;;;;;;;;;;;;;;;;;;;;;;9936:34;;9854:124;;;:::o;6075:198::-;6141:7;6165:11;:20;6177:7;6165:20;;;;;;;;;;;;;;;;;;;;;;;;;6161:49;;;6194:7;:16;6202:7;6194:16;;;;;;;;;;;;;;;;6187:23;;;;6161:49;6228:37;6248:7;:16;6256:7;6248:16;;;;;;;;;;;;;;;;6228:19;:37::i;:::-;6221:44;;6075:198;;;;:::o;1697:94::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1762:21:::1;1780:1;1762:9;:21::i;:::-;1697:94::o:0;4516:32::-;;;;;;;;;;;;;;:::o;4233:75::-;;;;;;;;;;;;;:::o;4156:70::-;;;;;;;;;;;;;:::o;7845:120::-;7913:4;7937:11;:20;7949:7;7937:20;;;;;;;;;;;;;;;;;;;;;;;;;7930:27;;7845:120;;;:::o;1474:87::-;1520:7;1547:6;;;;;;;;;;;1540:13;;1474:87;:::o;15996:212::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16094:9:::1;16089:112;16113:8;:15;16109:1;:19;16089:112;;;16184:5;16150:18;:31;16169:8;16178:1;16169:11;;;;;;;;:::i;:::-;;;;;;;;16150:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16130:3;;;;;:::i;:::-;;;;16089:112;;;;15996:212:::0;;:::o;5763:87::-;5802:13;5835:7;;;;;;;;;;;;;;;;;5828:14;;5763:87;:::o;4648:36::-;;;;;;;;;;;;;;:::o;16717:197::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16818:9:::1;16793:21;:34;;16785:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16875:10;16867:28;;:39;16896:9;16867:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16717:197:::0;:::o;7272:392::-;7375:4;7397:24;7424:11;:25;7436:12;:10;:12::i;:::-;7424:25;;;;;;;;;;;;;;;:34;7450:7;7424:34;;;;;;;;;;;;;;;;7397:61;;7497:15;7477:16;:35;;7469:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7565:67;7574:12;:10;:12::i;:::-;7588:7;7616:15;7597:16;:34;;;;:::i;:::-;7565:8;:67::i;:::-;7652:4;7645:11;;;7272:392;;;;:::o;3856:19::-;;;;;;;;;;;;;:::o;7672:165::-;7750:4;7767:40;7777:10;7789:9;7800:6;7767:9;:40::i;:::-;7825:4;7818:11;;7672:165;;;;:::o;16216:195::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16325:1:::1;16304:23;;:9;:23;;::::0;16296:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16394:9;16376:15;;:27;;;;;;;;;;;;;;;;;;16216:195:::0;:::o;16419:226::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16517:4:::1;16507:6;:14;;16499:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3919:1;16624:2;:13;;;;:::i;:::-;16615:6;:22;;;;:::i;:::-;16594:18;:43;;;;16419:226:::0;:::o;6281:143::-;6362:7;6389:11;:18;6401:5;6389:18;;;;;;;;;;;;;;;:27;6408:7;6389:27;;;;;;;;;;;;;;;;6382:34;;6281:143;;;;:::o;4091:56::-;;;;:::o;9736:110::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9833:5:::1;9803:18;:27;9822:7;9803:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;9736:110:::0;:::o;1799:192::-;1620:12;:10;:12::i;:::-;1609:23;;:7;:5;:7::i;:::-;:23;;;1601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1908:1:::1;1888:22;;:8;:22;;::::0;1880:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1964:19;1974:8;1964:9;:19::i;:::-;1799:192:::0;:::o;3828:21::-;;;;;;;;;;;;;:::o;895:98::-;948:7;975:10;968:17;;895:98;:::o;12800:369::-;12944:1;12927:19;;:5;:19;;;12919:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13025:1;13006:21;;:7;:21;;;12998:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13107:6;13077:11;:18;13089:5;13077:18;;;;;;;;;;;;;;;:27;13096:7;13077:27;;;;;;;;;;;;;;;:36;;;;13145:7;13129:32;;13138:5;13129:32;;;13154:6;13129:32;;;;;;:::i;:::-;;;;;;;;12800:369;;;:::o;13177:954::-;13315:1;13299:18;;:4;:18;;;13291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13392:1;13378:16;;:2;:16;;;13370:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13462:1;13453:6;:10;13445:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13552:15;13562:4;13552:9;:15::i;:::-;13542:6;:25;;13520:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;13657:12;13700:18;;13672:24;13690:4;13672:9;:24::i;:::-;:46;;13657:61;;13748:8;;;;;;;;;;;13747:9;:33;;;;;13773:7;13747:33;:62;;;;;13805:4;;;;;;;;;;;13797:12;;:4;:12;;;;13747:62;:104;;;;;13827:18;:24;13846:4;13827:24;;;;;;;;;;;;;;;;;;;;;;;;;13826:25;13747:104;:144;;;;;13869:18;:22;13888:2;13869:22;;;;;;;;;;;;;;;;;;;;;;;;;13868:23;13747:144;13729:217;;;13918:16;:14;:16::i;:::-;13729:217;13956:12;13971:4;13956:19;;13990:8;;;;;;;;;;;:36;;;;14002:18;:24;14021:4;14002:24;;;;;;;;;;;;;;;;;;;;;;;;;13990:36;:62;;;;14030:18;:22;14049:2;14030:22;;;;;;;;;;;;;;;;;;;;;;;;;13990:62;13986:83;;;14064:5;14054:15;;13986:83;14082:41;14097:4;14103:2;14107:6;14115:7;14082:14;:41::i;:::-;13280:851;;13177:954;;;:::o;12059:161::-;12101:7;12122:15;12139;12158:19;:17;:19::i;:::-;12121:56;;;;12205:7;12195;:17;;;;:::i;:::-;12188:24;;;;12059:161;:::o;10411:438::-;10509:36;;:::i;:::-;10570:29;10582:7;10591;10570:11;:29::i;:::-;10558:41;;10760:52;10772:9;10783:7;10792;10801:10;:8;:10::i;:::-;10760:11;:52::i;:::-;10625:9;:17;;10657:9;:25;;10697:9;:14;;10726:9;:20;;10610:202;;;;;;;;;;;;;;;;;;;;10411:438;;;;:::o;1999:173::-;2055:16;2074:6;;;;;;;;;;;2055:25;;2100:8;2091:6;;:17;;;;;;;;;;;;;;;;;;2155:8;2124:40;;2145:8;2124:40;;;;;;;;;;;;2044:128;1999:173;:::o;15083:342::-;4979:4;4968:8;;:15;;;;;;;;;;;;;;;;;;15149:23:::1;15175:24;15193:4;15175:9;:24::i;:::-;15149:50;;15210:34;15228:15;15210:17;:34::i;:::-;15255:20;15278:21;15255:44;;15338:1;15323:12;:16;15319:97;;;15356:48;15391:12;15364:15;;;;;;;;;;;15356:34;;;;:48;;;;:::i;:::-;15319:97;15129:296;;5017:5:::0;5006:8;;:16;;;;;;;;;;;;;;;;;;15083:342::o;14212:863::-;14366:28;14397;14408:7;14417;14397:10;:28::i;:::-;14366:59;;14442:11;:19;14454:6;14442:19;;;;;;;;;;;;;;;;;;;;;;;;;14438:124;;;14543:7;14525;:15;14533:6;14525:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14507:7;:15;14515:6;14507:15;;;;;;;;;;;;;;;:43;;;;14438:124;14576:11;:22;14588:9;14576:22;;;;;;;;;;;;;;;;;;;;;;;;;14572:141;;;14684:1;:17;;;14663:7;:18;14671:9;14663:18;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;14642:7;:18;14650:9;14642:18;;;;;;;;;;;;;;;:59;;;;14572:141;14761:1;:9;;;14743:7;:15;14751:6;14743:15;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;14725:7;:15;14733:6;14725:15;;;;;;;;;;;;;;;:45;;;;14823:1;:17;;;14802:7;:18;14810:9;14802:18;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;14781:7;:18;14789:9;14781:18;;;;;;;;;;;;;;;:59;;;;14866:1;14857;:6;;;:10;:24;;;;14880:1;14871;:6;;;:10;14857:24;14853:57;;;14883:27;14895:1;:6;;;14903:1;:6;;;14883:11;:27::i;:::-;14853:57;14940:1;14925;:12;;;:16;:36;;;;14960:1;14945;:12;;;:16;14925:36;14921:84;;;14963:42;14978:1;:12;;;14992:1;:12;;;14963:14;:42::i;:::-;14921:84;15038:9;15021:46;;15030:6;15021:46;;;15049:1;:17;;;15021:46;;;;;;:::i;:::-;;;;;;;;14353:722;14212:863;;;;:::o;12228:564::-;12279:7;12288;12308:15;12326:7;;12308:25;;12344:15;12362:7;;12344:25;;12385:9;12380:300;12404:9;:16;;;;12400:1;:20;12380:300;;;12470:7;12446;:21;12454:9;12464:1;12454:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12446:21;;;;;;;;;;;;;;;;:31;:66;;;;12505:7;12481;:21;12489:9;12499:1;12489:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12481:21;;;;;;;;;;;;;;;;:31;12446:66;12442:114;;;12539:7;;12548;;12531:25;;;;;;;;;12442:114;12591:7;:21;12599:9;12609:1;12599:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12591:21;;;;;;;;;;;;;;;;12581:7;:31;;;;:::i;:::-;12571:41;;12647:7;:21;12655:9;12665:1;12655:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12647:21;;;;;;;;;;;;;;;;12637:7;:31;;;;:::i;:::-;12627:41;;12422:3;;;;;:::i;:::-;;;;12380:300;;;;12714:7;;12704;;:17;;;;:::i;:::-;12694:7;:27;12690:58;;;12731:7;;12740;;12723:25;;;;;;;;12690:58;12767:7;12776;12759:25;;;;;;12228:564;;;:::o;10857:466::-;10956:28;;:::i;:::-;11002:7;10997:91;;11046:7;11026:1;:17;;:27;;;;;11068:8;;10997:91;11133:3;11120:5;:9;;;11110:7;:19;;;;:::i;:::-;11109:27;;;;:::i;:::-;11100:1;:6;;:36;;;;;11192:3;11173:5;:15;;;11163:7;:25;;;;:::i;:::-;11162:33;;;;:::i;:::-;11147:1;:12;;:48;;;;;11284:1;:12;;;11262:1;:6;;;11239:7;:29;;;;:::i;:::-;:57;;;;:::i;:::-;11206:1;:17;;:90;;;;;10857:466;;;;;:::o;11331:720::-;11540:15;11570:23;11608:12;11635:18;11701:11;11691:7;:21;;;;:::i;:::-;11681:31;;11730:7;11725:72;;11762:7;11771;11780:1;11783;11754:31;;;;;;;;;;11725:72;11825:11;11816:1;:6;;;:20;;;;:::i;:::-;11809:27;;11875:11;11860:1;:12;;;:26;;;;:::i;:::-;11847:39;;11971:10;11951:4;11928:7;:27;;;;:::i;:::-;:53;;;;:::i;:::-;11897:84;;11331:720;;;;;;;;;;:::o;15433:555::-;15552:21;15590:1;15576:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15552:40;;15621:4;15603;15608:1;15603:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15647:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15637:4;15642:1;15637:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15673:53;15690:4;15705:6;;;;;;;;;;;15714:11;15673:8;:53::i;:::-;15765:6;;;;;;;;;;;:57;;;15837:11;15863:1;15907:4;15934;15954:15;15765:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15489:499;15433:555;:::o;3057:319::-;3172:6;3147:21;:31;;3139:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3226:12;3244:9;:14;;3267:6;3244:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3225:54;;;3298:7;3290:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;3128:248;3057:319;;:::o;9986:125::-;10065:4;10054:7;;:15;;;;;;;:::i;:::-;;;;;;;;10099:4;10080:11;:15;;;:23;;;;;;;:::i;:::-;;;;;;;;9986:125;;:::o;10121:280::-;10229:10;10204:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;10256:11;:26;10276:4;10256:26;;;;;;;;;;;;;;;;;;;;;;;;;10252:95;;;10325:10;10299:7;:22;10315:4;10299:22;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;10252:95;10383:10;10357:7;:22;10373:4;10357:22;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;10121:280;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:116::-;5593:21;5608:5;5593:21;:::i;:::-;5586:5;5583:32;5573:60;;5629:1;5626;5619:12;5573:60;5523:116;:::o;5645:133::-;5688:5;5726:6;5713:20;5704:29;;5742:30;5766:5;5742:30;:::i;:::-;5645:133;;;;:::o;5784:468::-;5849:6;5857;5906:2;5894:9;5885:7;5881:23;5877:32;5874:119;;;5912:79;;:::i;:::-;5874:119;6032:1;6057:53;6102:7;6093:6;6082:9;6078:22;6057:53;:::i;:::-;6047:63;;6003:117;6159:2;6185:50;6227:7;6218:6;6207:9;6203:22;6185:50;:::i;:::-;6175:60;;6130:115;5784:468;;;;;:::o;6258:332::-;6379:4;6417:2;6406:9;6402:18;6394:26;;6430:71;6498:1;6487:9;6483:17;6474:6;6430:71;:::i;:::-;6511:72;6579:2;6568:9;6564:18;6555:6;6511:72;:::i;:::-;6258:332;;;;;:::o;6596:118::-;6683:24;6701:5;6683:24;:::i;:::-;6678:3;6671:37;6596:118;;:::o;6720:222::-;6813:4;6851:2;6840:9;6836:18;6828:26;;6864:71;6932:1;6921:9;6917:17;6908:6;6864:71;:::i;:::-;6720:222;;;;:::o;6948:117::-;7057:1;7054;7047:12;7071:180;7119:77;7116:1;7109:88;7216:4;7213:1;7206:15;7240:4;7237:1;7230:15;7257:281;7340:27;7362:4;7340:27;:::i;:::-;7332:6;7328:40;7470:6;7458:10;7455:22;7434:18;7422:10;7419:34;7416:62;7413:88;;;7481:18;;:::i;:::-;7413:88;7521:10;7517:2;7510:22;7300:238;7257:281;;:::o;7544:129::-;7578:6;7605:20;;:::i;:::-;7595:30;;7634:33;7662:4;7654:6;7634:33;:::i;:::-;7544:129;;;:::o;7679:311::-;7756:4;7846:18;7838:6;7835:30;7832:56;;;7868:18;;:::i;:::-;7832:56;7918:4;7910:6;7906:17;7898:25;;7978:4;7972;7968:15;7960:23;;7679:311;;;:::o;7996:117::-;8105:1;8102;8095:12;8136:710;8232:5;8257:81;8273:64;8330:6;8273:64;:::i;:::-;8257:81;:::i;:::-;8248:90;;8358:5;8387:6;8380:5;8373:21;8421:4;8414:5;8410:16;8403:23;;8474:4;8466:6;8462:17;8454:6;8450:30;8503:3;8495:6;8492:15;8489:122;;;8522:79;;:::i;:::-;8489:122;8637:6;8620:220;8654:6;8649:3;8646:15;8620:220;;;8729:3;8758:37;8791:3;8779:10;8758:37;:::i;:::-;8753:3;8746:50;8825:4;8820:3;8816:14;8809:21;;8696:144;8680:4;8675:3;8671:14;8664:21;;8620:220;;;8624:21;8238:608;;8136:710;;;;;:::o;8869:370::-;8940:5;8989:3;8982:4;8974:6;8970:17;8966:27;8956:122;;8997:79;;:::i;:::-;8956:122;9114:6;9101:20;9139:94;9229:3;9221:6;9214:4;9206:6;9202:17;9139:94;:::i;:::-;9130:103;;8946:293;8869:370;;;;:::o;9245:678::-;9335:6;9343;9392:2;9380:9;9371:7;9367:23;9363:32;9360:119;;;9398:79;;:::i;:::-;9360:119;9546:1;9535:9;9531:17;9518:31;9576:18;9568:6;9565:30;9562:117;;;9598:79;;:::i;:::-;9562:117;9703:78;9773:7;9764:6;9753:9;9749:22;9703:78;:::i;:::-;9693:88;;9489:302;9830:2;9856:50;9898:7;9889:6;9878:9;9874:22;9856:50;:::i;:::-;9846:60;;9801:115;9245:678;;;;;:::o;9929:474::-;9997:6;10005;10054:2;10042:9;10033:7;10029:23;10025:32;10022:119;;;10060:79;;:::i;:::-;10022:119;10180:1;10205:53;10250:7;10241:6;10230:9;10226:22;10205:53;:::i;:::-;10195:63;;10151:117;10307:2;10333:53;10378:7;10369:6;10358:9;10354:22;10333:53;:::i;:::-;10323:63;;10278:118;9929:474;;;;;:::o;10409:60::-;10437:3;10458:5;10451:12;;10409:60;;;:::o;10475:142::-;10525:9;10558:53;10576:34;10585:24;10603:5;10585:24;:::i;:::-;10576:34;:::i;:::-;10558:53;:::i;:::-;10545:66;;10475:142;;;:::o;10623:126::-;10673:9;10706:37;10737:5;10706:37;:::i;:::-;10693:50;;10623:126;;;:::o;10755:141::-;10820:9;10853:37;10884:5;10853:37;:::i;:::-;10840:50;;10755:141;;;:::o;10902:161::-;11004:52;11050:5;11004:52;:::i;:::-;10999:3;10992:65;10902:161;;:::o;11069:252::-;11177:4;11215:2;11204:9;11200:18;11192:26;;11228:86;11311:1;11300:9;11296:17;11287:6;11228:86;:::i;:::-;11069:252;;;;:::o;11327:227::-;11467:34;11463:1;11455:6;11451:14;11444:58;11536:10;11531:2;11523:6;11519:15;11512:35;11327:227;:::o;11560:366::-;11702:3;11723:67;11787:2;11782:3;11723:67;:::i;:::-;11716:74;;11799:93;11888:3;11799:93;:::i;:::-;11917:2;11912:3;11908:12;11901:19;;11560:366;;;:::o;11932:419::-;12098:4;12136:2;12125:9;12121:18;12113:26;;12185:9;12179:4;12175:20;12171:1;12160:9;12156:17;12149:47;12213:131;12339:4;12213:131;:::i;:::-;12205:139;;11932:419;;;:::o;12357:180::-;12405:77;12402:1;12395:88;12502:4;12499:1;12492:15;12526:4;12523:1;12516:15;12543:194;12583:4;12603:20;12621:1;12603:20;:::i;:::-;12598:25;;12637:20;12655:1;12637:20;:::i;:::-;12632:25;;12681:1;12678;12674:9;12666:17;;12705:1;12699:4;12696:11;12693:37;;;12710:18;;:::i;:::-;12693:37;12543:194;;;;:::o;12743:229::-;12883:34;12879:1;12871:6;12867:14;12860:58;12952:12;12947:2;12939:6;12935:15;12928:37;12743:229;:::o;12978:366::-;13120:3;13141:67;13205:2;13200:3;13141:67;:::i;:::-;13134:74;;13217:93;13306:3;13217:93;:::i;:::-;13335:2;13330:3;13326:12;13319:19;;12978:366;;;:::o;13350:419::-;13516:4;13554:2;13543:9;13539:18;13531:26;;13603:9;13597:4;13593:20;13589:1;13578:9;13574:17;13567:47;13631:131;13757:4;13631:131;:::i;:::-;13623:139;;13350:419;;;:::o;13775:180::-;13823:77;13820:1;13813:88;13920:4;13917:1;13910:15;13944:4;13941:1;13934:15;13961:185;14001:1;14018:20;14036:1;14018:20;:::i;:::-;14013:25;;14052:20;14070:1;14052:20;:::i;:::-;14047:25;;14091:1;14081:35;;14096:18;;:::i;:::-;14081:35;14138:1;14135;14131:9;14126:14;;13961:185;;;;:::o;14152:182::-;14292:34;14288:1;14280:6;14276:14;14269:58;14152:182;:::o;14340:366::-;14482:3;14503:67;14567:2;14562:3;14503:67;:::i;:::-;14496:74;;14579:93;14668:3;14579:93;:::i;:::-;14697:2;14692:3;14688:12;14681:19;;14340:366;;;:::o;14712:419::-;14878:4;14916:2;14905:9;14901:18;14893:26;;14965:9;14959:4;14955:20;14951:1;14940:9;14936:17;14929:47;14993:131;15119:4;14993:131;:::i;:::-;14985:139;;14712:419;;;:::o;15137:173::-;15277:25;15273:1;15265:6;15261:14;15254:49;15137:173;:::o;15316:366::-;15458:3;15479:67;15543:2;15538:3;15479:67;:::i;:::-;15472:74;;15555:93;15644:3;15555:93;:::i;:::-;15673:2;15668:3;15664:12;15657:19;;15316:366;;;:::o;15688:419::-;15854:4;15892:2;15881:9;15877:18;15869:26;;15941:9;15935:4;15931:20;15927:1;15916:9;15912:17;15905:47;15969:131;16095:4;15969:131;:::i;:::-;15961:139;;15688:419;;;:::o;16113:180::-;16161:77;16158:1;16151:88;16258:4;16255:1;16248:15;16282:4;16279:1;16272:15;16299:180;16347:77;16344:1;16337:88;16444:4;16441:1;16434:15;16468:4;16465:1;16458:15;16485:233;16524:3;16547:24;16565:5;16547:24;:::i;:::-;16538:33;;16593:66;16586:5;16583:77;16580:103;;16663:18;;:::i;:::-;16580:103;16710:1;16703:5;16699:13;16692:20;;16485:233;;;:::o;16724:191::-;16764:3;16783:20;16801:1;16783:20;:::i;:::-;16778:25;;16817:20;16835:1;16817:20;:::i;:::-;16812:25;;16860:1;16857;16853:9;16846:16;;16881:3;16878:1;16875:10;16872:36;;;16888:18;;:::i;:::-;16872:36;16724:191;;;;:::o;16921:181::-;17061:33;17057:1;17049:6;17045:14;17038:57;16921:181;:::o;17108:366::-;17250:3;17271:67;17335:2;17330:3;17271:67;:::i;:::-;17264:74;;17347:93;17436:3;17347:93;:::i;:::-;17465:2;17460:3;17456:12;17449:19;;17108:366;;;:::o;17480:419::-;17646:4;17684:2;17673:9;17669:18;17661:26;;17733:9;17727:4;17723:20;17719:1;17708:9;17704:17;17697:47;17761:131;17887:4;17761:131;:::i;:::-;17753:139;;17480:419;;;:::o;17905:241::-;18045:34;18041:1;18033:6;18029:14;18022:58;18114:24;18109:2;18101:6;18097:15;18090:49;17905:241;:::o;18152:366::-;18294:3;18315:67;18379:2;18374:3;18315:67;:::i;:::-;18308:74;;18391:93;18480:3;18391:93;:::i;:::-;18509:2;18504:3;18500:12;18493:19;;18152:366;;;:::o;18524:419::-;18690:4;18728:2;18717:9;18713:18;18705:26;;18777:9;18771:4;18767:20;18763:1;18752:9;18748:17;18741:47;18805:131;18931:4;18805:131;:::i;:::-;18797:139;;18524:419;;;:::o;18949:332::-;19070:4;19108:2;19097:9;19093:18;19085:26;;19121:71;19189:1;19178:9;19174:17;19165:6;19121:71;:::i;:::-;19202:72;19270:2;19259:9;19255:18;19246:6;19202:72;:::i;:::-;18949:332;;;;;:::o;19287:137::-;19341:5;19372:6;19366:13;19357:22;;19388:30;19412:5;19388:30;:::i;:::-;19287:137;;;;:::o;19430:345::-;19497:6;19546:2;19534:9;19525:7;19521:23;19517:32;19514:119;;;19552:79;;:::i;:::-;19514:119;19672:1;19697:61;19750:7;19741:6;19730:9;19726:22;19697:61;:::i;:::-;19687:71;;19643:125;19430:345;;;;:::o;19781:177::-;19921:29;19917:1;19909:6;19905:14;19898:53;19781:177;:::o;19964:366::-;20106:3;20127:67;20191:2;20186:3;20127:67;:::i;:::-;20120:74;;20203:93;20292:3;20203:93;:::i;:::-;20321:2;20316:3;20312:12;20305:19;;19964:366;;;:::o;20336:419::-;20502:4;20540:2;20529:9;20525:18;20517:26;;20589:9;20583:4;20579:20;20575:1;20564:9;20560:17;20553:47;20617:131;20743:4;20617:131;:::i;:::-;20609:139;;20336:419;;;:::o;20761:174::-;20901:26;20897:1;20889:6;20885:14;20878:50;20761:174;:::o;20941:366::-;21083:3;21104:67;21168:2;21163:3;21104:67;:::i;:::-;21097:74;;21180:93;21269:3;21180:93;:::i;:::-;21298:2;21293:3;21289:12;21282:19;;20941:366;;;:::o;21313:419::-;21479:4;21517:2;21506:9;21502:18;21494:26;;21566:9;21560:4;21556:20;21552:1;21541:9;21537:17;21530:47;21594:131;21720:4;21594:131;:::i;:::-;21586:139;;21313:419;;;:::o;21738:224::-;21878:34;21874:1;21866:6;21862:14;21855:58;21947:7;21942:2;21934:6;21930:15;21923:32;21738:224;:::o;21968:366::-;22110:3;22131:67;22195:2;22190:3;22131:67;:::i;:::-;22124:74;;22207:93;22296:3;22207:93;:::i;:::-;22325:2;22320:3;22316:12;22309:19;;21968:366;;;:::o;22340:419::-;22506:4;22544:2;22533:9;22529:18;22521:26;;22593:9;22587:4;22583:20;22579:1;22568:9;22564:17;22557:47;22621:131;22747:4;22621:131;:::i;:::-;22613:139;;22340:419;;;:::o;22765:221::-;22905:34;22901:1;22893:6;22889:14;22882:58;22974:4;22969:2;22961:6;22957:15;22950:29;22765:221;:::o;22992:366::-;23134:3;23155:67;23219:2;23214:3;23155:67;:::i;:::-;23148:74;;23231:93;23320:3;23231:93;:::i;:::-;23349:2;23344:3;23340:12;23333:19;;22992:366;;;:::o;23364:419::-;23530:4;23568:2;23557:9;23553:18;23545:26;;23617:9;23611:4;23607:20;23603:1;23592:9;23588:17;23581:47;23645:131;23771:4;23645:131;:::i;:::-;23637:139;;23364:419;;;:::o;23789:244::-;23929:34;23925:1;23917:6;23913:14;23906:58;23998:27;23993:2;23985:6;23981:15;23974:52;23789:244;:::o;24039:366::-;24181:3;24202:67;24266:2;24261:3;24202:67;:::i;:::-;24195:74;;24278:93;24367:3;24278:93;:::i;:::-;24396:2;24391:3;24387:12;24380:19;;24039:366;;;:::o;24411:419::-;24577:4;24615:2;24604:9;24600:18;24592:26;;24664:9;24658:4;24654:20;24650:1;24639:9;24635:17;24628:47;24692:131;24818:4;24692:131;:::i;:::-;24684:139;;24411:419;;;:::o;24836:102::-;24878:8;24925:5;24922:1;24918:13;24897:34;;24836:102;;;:::o;24944:848::-;25005:5;25012:4;25036:6;25027:15;;25060:5;25051:14;;25074:712;25095:1;25085:8;25082:15;25074:712;;;25190:4;25185:3;25181:14;25175:4;25172:24;25169:50;;;25199:18;;:::i;:::-;25169:50;25249:1;25239:8;25235:16;25232:451;;;25664:4;25657:5;25653:16;25644:25;;25232:451;25714:4;25708;25704:15;25696:23;;25744:32;25767:8;25744:32;:::i;:::-;25732:44;;25074:712;;;24944:848;;;;;;;:::o;25798:1073::-;25852:5;26043:8;26033:40;;26064:1;26055:10;;26066:5;;26033:40;26092:4;26082:36;;26109:1;26100:10;;26111:5;;26082:36;26178:4;26226:1;26221:27;;;;26262:1;26257:191;;;;26171:277;;26221:27;26239:1;26230:10;;26241:5;;;26257:191;26302:3;26292:8;26289:17;26286:43;;;26309:18;;:::i;:::-;26286:43;26358:8;26355:1;26351:16;26342:25;;26393:3;26386:5;26383:14;26380:40;;;26400:18;;:::i;:::-;26380:40;26433:5;;;26171:277;;26557:2;26547:8;26544:16;26538:3;26532:4;26529:13;26525:36;26507:2;26497:8;26494:16;26489:2;26483:4;26480:12;26476:35;26460:111;26457:246;;;26613:8;26607:4;26603:19;26594:28;;26648:3;26641:5;26638:14;26635:40;;;26655:18;;:::i;:::-;26635:40;26688:5;;26457:246;26728:42;26766:3;26756:8;26750:4;26747:1;26728:42;:::i;:::-;26713:57;;;;26802:4;26797:3;26793:14;26786:5;26783:25;26780:51;;;26811:18;;:::i;:::-;26780:51;26860:4;26853:5;26849:16;26840:25;;25798:1073;;;;;;:::o;26877:281::-;26935:5;26959:23;26977:4;26959:23;:::i;:::-;26951:31;;27003:25;27019:8;27003:25;:::i;:::-;26991:37;;27047:104;27084:66;27074:8;27068:4;27047:104;:::i;:::-;27038:113;;26877:281;;;;:::o;27164:410::-;27204:7;27227:20;27245:1;27227:20;:::i;:::-;27222:25;;27261:20;27279:1;27261:20;:::i;:::-;27256:25;;27316:1;27313;27309:9;27338:30;27356:11;27338:30;:::i;:::-;27327:41;;27517:1;27508:7;27504:15;27501:1;27498:22;27478:1;27471:9;27451:83;27428:139;;27547:18;;:::i;:::-;27428:139;27212:362;27164:410;;;;:::o;27580:225::-;27720:34;27716:1;27708:6;27704:14;27697:58;27789:8;27784:2;27776:6;27772:15;27765:33;27580:225;:::o;27811:366::-;27953:3;27974:67;28038:2;28033:3;27974:67;:::i;:::-;27967:74;;28050:93;28139:3;28050:93;:::i;:::-;28168:2;28163:3;28159:12;28152:19;;27811:366;;;:::o;28183:419::-;28349:4;28387:2;28376:9;28372:18;28364:26;;28436:9;28430:4;28426:20;28422:1;28411:9;28407:17;28400:47;28464:131;28590:4;28464:131;:::i;:::-;28456:139;;28183:419;;;:::o;28608:223::-;28748:34;28744:1;28736:6;28732:14;28725:58;28817:6;28812:2;28804:6;28800:15;28793:31;28608:223;:::o;28837:366::-;28979:3;29000:67;29064:2;29059:3;29000:67;:::i;:::-;28993:74;;29076:93;29165:3;29076:93;:::i;:::-;29194:2;29189:3;29185:12;29178:19;;28837:366;;;:::o;29209:419::-;29375:4;29413:2;29402:9;29398:18;29390:26;;29462:9;29456:4;29452:20;29448:1;29437:9;29433:17;29426:47;29490:131;29616:4;29490:131;:::i;:::-;29482:139;;29209:419;;;:::o;29634:221::-;29774:34;29770:1;29762:6;29758:14;29751:58;29843:4;29838:2;29830:6;29826:15;29819:29;29634:221;:::o;29861:366::-;30003:3;30024:67;30088:2;30083:3;30024:67;:::i;:::-;30017:74;;30100:93;30189:3;30100:93;:::i;:::-;30218:2;30213:3;30209:12;30202:19;;29861:366;;;:::o;30233:419::-;30399:4;30437:2;30426:9;30422:18;30414:26;;30486:9;30480:4;30476:20;30472:1;30461:9;30457:17;30450:47;30514:131;30640:4;30514:131;:::i;:::-;30506:139;;30233:419;;;:::o;30658:224::-;30798:34;30794:1;30786:6;30782:14;30775:58;30867:7;30862:2;30854:6;30850:15;30843:32;30658:224;:::o;30888:366::-;31030:3;31051:67;31115:2;31110:3;31051:67;:::i;:::-;31044:74;;31127:93;31216:3;31127:93;:::i;:::-;31245:2;31240:3;31236:12;31229:19;;30888:366;;;:::o;31260:419::-;31426:4;31464:2;31453:9;31449:18;31441:26;;31513:9;31507:4;31503:20;31499:1;31488:9;31484:17;31477:47;31541:131;31667:4;31541:131;:::i;:::-;31533:139;;31260:419;;;:::o;31685:222::-;31825:34;31821:1;31813:6;31809:14;31802:58;31894:5;31889:2;31881:6;31877:15;31870:30;31685:222;:::o;31913:366::-;32055:3;32076:67;32140:2;32135:3;32076:67;:::i;:::-;32069:74;;32152:93;32241:3;32152:93;:::i;:::-;32270:2;32265:3;32261:12;32254:19;;31913:366;;;:::o;32285:419::-;32451:4;32489:2;32478:9;32474:18;32466:26;;32538:9;32532:4;32528:20;32524:1;32513:9;32509:17;32502:47;32566:131;32692:4;32566:131;:::i;:::-;32558:139;;32285:419;;;:::o;32710:228::-;32850:34;32846:1;32838:6;32834:14;32827:58;32919:11;32914:2;32906:6;32902:15;32895:36;32710:228;:::o;32944:366::-;33086:3;33107:67;33171:2;33166:3;33107:67;:::i;:::-;33100:74;;33183:93;33272:3;33183:93;:::i;:::-;33301:2;33296:3;33292:12;33285:19;;32944:366;;;:::o;33316:419::-;33482:4;33520:2;33509:9;33505:18;33497:26;;33569:9;33563:4;33559:20;33555:1;33544:9;33540:17;33533:47;33597:131;33723:4;33597:131;:::i;:::-;33589:139;;33316:419;;;:::o;33741:236::-;33881:34;33877:1;33869:6;33865:14;33858:58;33950:19;33945:2;33937:6;33933:15;33926:44;33741:236;:::o;33983:366::-;34125:3;34146:67;34210:2;34205:3;34146:67;:::i;:::-;34139:74;;34222:93;34311:3;34222:93;:::i;:::-;34340:2;34335:3;34331:12;34324:19;;33983:366;;;:::o;34355:419::-;34521:4;34559:2;34548:9;34544:18;34536:26;;34608:9;34602:4;34598:20;34594:1;34583:9;34579:17;34572:47;34636:131;34762:4;34636:131;:::i;:::-;34628:139;;34355:419;;;:::o;34780:143::-;34837:5;34868:6;34862:13;34853:22;;34884:33;34911:5;34884:33;:::i;:::-;34780:143;;;;:::o;34929:351::-;34999:6;35048:2;35036:9;35027:7;35023:23;35019:32;35016:119;;;35054:79;;:::i;:::-;35016:119;35174:1;35199:64;35255:7;35246:6;35235:9;35231:22;35199:64;:::i;:::-;35189:74;;35145:128;34929:351;;;;:::o;35286:85::-;35331:7;35360:5;35349:16;;35286:85;;;:::o;35377:158::-;35435:9;35468:61;35486:42;35495:32;35521:5;35495:32;:::i;:::-;35486:42;:::i;:::-;35468:61;:::i;:::-;35455:74;;35377:158;;;:::o;35541:147::-;35636:45;35675:5;35636:45;:::i;:::-;35631:3;35624:58;35541:147;;:::o;35694:114::-;35761:6;35795:5;35789:12;35779:22;;35694:114;;;:::o;35814:184::-;35913:11;35947:6;35942:3;35935:19;35987:4;35982:3;35978:14;35963:29;;35814:184;;;;:::o;36004:132::-;36071:4;36094:3;36086:11;;36124:4;36119:3;36115:14;36107:22;;36004:132;;;:::o;36142:108::-;36219:24;36237:5;36219:24;:::i;:::-;36214:3;36207:37;36142:108;;:::o;36256:179::-;36325:10;36346:46;36388:3;36380:6;36346:46;:::i;:::-;36424:4;36419:3;36415:14;36401:28;;36256:179;;;;:::o;36441:113::-;36511:4;36543;36538:3;36534:14;36526:22;;36441:113;;;:::o;36590:732::-;36709:3;36738:54;36786:5;36738:54;:::i;:::-;36808:86;36887:6;36882:3;36808:86;:::i;:::-;36801:93;;36918:56;36968:5;36918:56;:::i;:::-;36997:7;37028:1;37013:284;37038:6;37035:1;37032:13;37013:284;;;37114:6;37108:13;37141:63;37200:3;37185:13;37141:63;:::i;:::-;37134:70;;37227:60;37280:6;37227:60;:::i;:::-;37217:70;;37073:224;37060:1;37057;37053:9;37048:14;;37013:284;;;37017:14;37313:3;37306:10;;36714:608;;;36590:732;;;;:::o;37328:831::-;37591:4;37629:3;37618:9;37614:19;37606:27;;37643:71;37711:1;37700:9;37696:17;37687:6;37643:71;:::i;:::-;37724:80;37800:2;37789:9;37785:18;37776:6;37724:80;:::i;:::-;37851:9;37845:4;37841:20;37836:2;37825:9;37821:18;37814:48;37879:108;37982:4;37973:6;37879:108;:::i;:::-;37871:116;;37997:72;38065:2;38054:9;38050:18;38041:6;37997:72;:::i;:::-;38079:73;38147:3;38136:9;38132:19;38123:6;38079:73;:::i;:::-;37328:831;;;;;;;;:::o;38165:179::-;38305:31;38301:1;38293:6;38289:14;38282:55;38165:179;:::o;38350:366::-;38492:3;38513:67;38577:2;38572:3;38513:67;:::i;:::-;38506:74;;38589:93;38678:3;38589:93;:::i;:::-;38707:2;38702:3;38698:12;38691:19;;38350:366;;;:::o;38722:419::-;38888:4;38926:2;38915:9;38911:18;38903:26;;38975:9;38969:4;38965:20;38961:1;38950:9;38946:17;38939:47;39003:131;39129:4;39003:131;:::i;:::-;38995:139;;38722:419;;;:::o;39147:147::-;39248:11;39285:3;39270:18;;39147:147;;;;:::o;39300:114::-;;:::o;39420:398::-;39579:3;39600:83;39681:1;39676:3;39600:83;:::i;:::-;39593:90;;39692:93;39781:3;39692:93;:::i;:::-;39810:1;39805:3;39801:11;39794:18;;39420:398;;;:::o;39824:379::-;40008:3;40030:147;40173:3;40030:147;:::i;:::-;40023:154;;40194:3;40187:10;;39824:379;;;:::o;40209:245::-;40349:34;40345:1;40337:6;40333:14;40326:58;40418:28;40413:2;40405:6;40401:15;40394:53;40209:245;:::o;40460:366::-;40602:3;40623:67;40687:2;40682:3;40623:67;:::i;:::-;40616:74;;40699:93;40788:3;40699:93;:::i;:::-;40817:2;40812:3;40808:12;40801:19;;40460:366;;;:::o;40832:419::-;40998:4;41036:2;41025:9;41021:18;41013:26;;41085:9;41079:4;41075:20;41071:1;41060:9;41056:17;41049:47;41113:131;41239:4;41113:131;:::i;:::-;41105:139;;40832:419;;;:::o
Swarm Source
ipfs://82e2a494fbfe59e80b7a128e31c61d85cdaae8bea0817f0a848b5428744e78ff
[ 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.