Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
245,210.901002742619066284 S3D
Holders
4
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
127,166.592057359950919936 S3DValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Swap3D
Compiler Version
v0.4.25+commit.59dbf8f1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-07-14 */ pragma solidity ^0.4.25; interface ERC20 { function totalSupply() external view returns (uint256 supply); function balanceOf(address _owner) external view returns (uint256 balance); function transfer(address _to, uint256 _value) external returns (bool success); function transferFrom(address _from, address _to, uint256 _value) external returns (bool success); function approve(address _spender, uint256 _value) external returns (bool success); function allowance(address _owner, address _spender) external view returns (uint256 remaining); function decimals() external view returns (uint256 digits); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } contract Swap3D { modifier onlyBagholders() { require(myTokens() > 0); _; } modifier onlyStronghands() { require(myDividends(true) > 0); _; } event onTokenPurchase( address indexed customerAddress, uint256 incomingEthereum, uint256 tokensMinted, address indexed referredBy ); event onTokenSell( address indexed customerAddress, uint256 tokensBurned, uint256 ethereumEarned ); event onReinvestment( address indexed customerAddress, uint256 ethereumReinvested, uint256 tokensMinted ); event onWithdraw( address indexed customerAddress, uint256 ethereumWithdrawn ); event Transfer( address indexed from, address indexed to, uint256 tokens ); string public name = "Swap3D"; string public symbol = "S3D"; uint8 public constant decimals = 18; uint8 internal constant dividendFee_ = 10; // 10% uint8 internal constant sellFee_ = 10; // 10% uint256 constant internal tokenPriceInitial_ = 0.0000001 ether; uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether; uint256 internal constant magnitude = 2**64; address internal constant tokenAddress = address(0xCC4304A31d09258b0029eA7FE63d032f52e44EFe); // TrustSwap (SWAP) token address ERC20 internal constant _contract = ERC20(tokenAddress); // Admin for premine lock address internal administrator; uint256 public stakingRequirement = 10e18; // 10 SWAP minimum uint256 public releaseTime = 1594728000; // Tuesday, July 14, 2020 12:00:00 PM GMT // amount of shares for each address (scaled number) mapping(address => uint256) internal tokenBalanceLedger_; mapping(address => uint256) internal referralBalance_; mapping(address => int256) internal payoutsTo_; uint256 internal tokenSupply_ = 0; uint256 internal profitPerShare_; constructor() public { administrator = msg.sender; } function() external payable { revert(); } function checkAndTransfer(uint256 _amount) private { require( _contract.transferFrom( msg.sender, address(this), _amount ) == true, "transfer must succeed" ); } function buy(uint256 _amount, address _referredBy) public returns(uint256) { checkAndTransfer(_amount); return purchaseTokens( _amount, _referredBy, msg.sender ); } function reinvest() public onlyStronghands() { uint256 _dividends = myDividends(false); address _customerAddress = msg.sender; payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude); _dividends += referralBalance_[_customerAddress]; referralBalance_[_customerAddress] = 0; uint256 _tokens = purchaseTokens( _dividends, address(0x0), _customerAddress ); emit onReinvestment( _customerAddress, _dividends, _tokens ); } function exit() public { address _customerAddress = msg.sender; uint256 _tokens = tokenBalanceLedger_[_customerAddress]; if (_tokens > 0) sell(_tokens); withdraw(); } function withdraw() public onlyStronghands() { address _customerAddress = msg.sender; uint256 _dividends = myDividends(false); payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude); _dividends += referralBalance_[_customerAddress]; referralBalance_[_customerAddress] = 0; _contract.transfer(_customerAddress, _dividends); emit onWithdraw( _customerAddress, _dividends ); } function sell(uint256 _amountOfTokens) public onlyBagholders() { address _customerAddress = msg.sender; require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); uint256 _tokens = _amountOfTokens; uint256 _ethereum = tokensToEthereum_(_tokens); uint256 _dividends = SafeMath.div((_ethereum * sellFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); // burn the sold tokens tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens); tokenBalanceLedger_[_customerAddress] = SafeMath.sub( tokenBalanceLedger_[_customerAddress], _tokens ); int256 _updatedPayouts = (int256)(profitPerShare_ * _tokens + (_taxedEthereum * magnitude)); payoutsTo_[_customerAddress] -= _updatedPayouts; if (tokenSupply_ > 0) { // update the amount of dividends per token profitPerShare_ = SafeMath.add( profitPerShare_, (_dividends * magnitude) / tokenSupply_ ); } // fire sell event emit onTokenSell( _customerAddress, _tokens, _taxedEthereum ); // fire burn event emit Transfer( _customerAddress, address(0x0000000000000000000000000000000000000000), _tokens ); } function transfer(address _toAddress, uint256 _amountOfTokens) public onlyBagholders() returns (bool) { address _customerAddress = msg.sender; require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); if (myDividends(true) > 0) withdraw(); // withdraw divs if any tokenBalanceLedger_[_customerAddress] = SafeMath.sub( tokenBalanceLedger_[_customerAddress], _amountOfTokens ); tokenBalanceLedger_[_toAddress] = SafeMath.add( tokenBalanceLedger_[_toAddress], _amountOfTokens ); payoutsTo_[_customerAddress] -= (int256)(profitPerShare_ * _amountOfTokens); payoutsTo_[_toAddress] += (int256)(profitPerShare_ * _amountOfTokens); // fire event emit Transfer(_customerAddress, _toAddress, _amountOfTokens); // ERC20 return true; } /** * Method to view the current TrustSwap stored in the contract * Example: totalSwapBalance() */ function totalSwapBalance() public view returns (uint256) { return _contract.balanceOf(address(this)); } /** * Retrieve the total S3D supply. */ function totalSupply() public view returns (uint256) { return tokenSupply_; } /** * Retrieve the tokens owned by the caller. */ function myTokens() public view returns (uint256) { address _customerAddress = msg.sender; return balanceOf(_customerAddress); } /** * Retrieve the dividends owned by the caller. * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations. * The reason for this, is that in the frontend, we will want to get the total divs (global + ref) * But in the internal calculations, we want them separate. */ function myDividends(bool _includeReferralBonus) public view returns (uint256) { address _customerAddress = msg.sender; return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress); } /** * Retrieve the S3D token balance of any single address. */ function balanceOf(address _customerAddress) public view returns (uint256) { return tokenBalanceLedger_[_customerAddress]; } /** * Retrieve the SWAP token balance of any single address. * You can call the SWAP contract directly, but the front end will thank you if you just do this one here. */ function swapBalanceOf(address _customerAddress) public view returns (uint256) { return _contract.balanceOf(address(_customerAddress)); } /** * Retrieve the referral balance of any single address. */ function getReferralBalance(address _customerAddress) public view returns (uint256) { return referralBalance_[_customerAddress]; } /** * Retrieve the dividend balance of any single address. */ function dividendsOf(address _customerAddress) public view returns (uint256) { return (uint256)( (int256)( profitPerShare_ * tokenBalanceLedger_[_customerAddress] ) - payoutsTo_[_customerAddress] ) / magnitude; } /** * Return the sell price of 1 individual token. */ function sellPrice() public view returns (uint256) { // our calculation relies on the token supply, so we need supply. if (tokenSupply_ == 0) { return tokenPriceInitial_ - tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div((_ethereum * sellFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } } /** * Return the buy price of 1 individual token. */ function buyPrice() public view returns (uint256) { if (tokenSupply_ == 0) { return tokenPriceInitial_ + tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(_ethereum, dividendFee_); uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends); return _taxedEthereum; } } /** * Function for the frontend to dynamically retrieve the price scaling of buy orders. */ function calculateTokensReceived(uint256 _ethereumToSpend) public view returns (uint256) { uint256 _dividends = SafeMath.div(_ethereumToSpend, dividendFee_); uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); return _amountOfTokens; } /** * Function for the frontend to dynamically retrieve the price scaling of sell orders. */ function calculateEthereumReceived(uint256 _tokensToSell) public view returns (uint256) { require(_tokensToSell <= tokenSupply_); uint256 _ethereum = tokensToEthereum_(_tokensToSell); uint256 _dividends = SafeMath.div((_ethereum*sellFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } /** * Function for the frontend to fetch all data in one call */ function getData() public view returns ( uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256 ) { return ( // [0] - Total SWAP in contract totalSwapBalance(), // [1] - Total supply of S3D totalSupply(), // [2] - S3D balance of msg.sender balanceOf(msg.sender), // [3] - Referral balance of msg.sender getReferralBalance(msg.sender), // [4] - Dividends of msg.sender dividendsOf(msg.sender), // [5] - Sell price of 1 token sellPrice(), // [6] - Buy price of 1 token buyPrice(), // [7] - Balance of SWAP token in user's wallet (free balance that isn't staked) swapBalanceOf(msg.sender) ); } function purchaseTokens( uint256 _incomingEthereum, address _referredBy, address _sender ) internal returns (uint256) { require((block.timestamp >= releaseTime) || (_sender == administrator)); address _customerAddress = _sender; uint256 _undividedDividends = SafeMath.div( _incomingEthereum, dividendFee_ ); uint256 _referralBonus = SafeMath.div(_undividedDividends, 3); uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus); uint256 _taxedEthereum = SafeMath.sub( _incomingEthereum, _undividedDividends ); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); uint256 _fee = _dividends * magnitude; require( _amountOfTokens > 0 && (SafeMath.add(_amountOfTokens, tokenSupply_) > tokenSupply_) ); if ( // is this a referred purchase? _referredBy != 0x0000000000000000000000000000000000000000 && // no cheating! _referredBy != _customerAddress && // does the referrer meet the staking requirement? tokenBalanceLedger_[_referredBy] >= stakingRequirement ) { // wealth redistribution referralBalance_[_referredBy] = SafeMath.add( referralBalance_[_referredBy], _referralBonus ); } else { // no ref purchase // add the referral bonus back to the global dividends _dividends = SafeMath.add(_dividends, _referralBonus); _fee = _dividends * magnitude; } // we can't give people infinite tokens if (tokenSupply_ > 0) { // add tokens to the pool tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens); // take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder profitPerShare_ += ((_dividends * magnitude) / (tokenSupply_)); // calculate the amount of tokens the customer receives over his purchase _fee = _fee - (_fee - (_amountOfTokens * ((_dividends * magnitude) / (tokenSupply_)))); } else { // add tokens to the pool tokenSupply_ = _amountOfTokens; } tokenBalanceLedger_[_customerAddress] = SafeMath.add( tokenBalanceLedger_[_customerAddress], _amountOfTokens ); int256 _updatedPayouts = (int256)((profitPerShare_ * _amountOfTokens) - _fee); payoutsTo_[_customerAddress] += _updatedPayouts; // fire event emit onTokenPurchase( _customerAddress, _incomingEthereum, _amountOfTokens, _referredBy ); return _amountOfTokens; } /** * Calculate Token price based on an amount of incoming ethereum * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function ethereumToTokens_(uint256 _ethereum) internal view returns (uint256) { uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18; uint256 _tokensReceived = (( SafeMath.sub( ( sqrt( (_tokenPriceInitial**2) + (2 * (tokenPriceIncremental_ * 1e18) * (_ethereum * 1e18)) + (((tokenPriceIncremental_)**2) * (tokenSupply_**2)) + (2 * (tokenPriceIncremental_) * _tokenPriceInitial * tokenSupply_) ) ), _tokenPriceInitial ) ) / (tokenPriceIncremental_)) - (tokenSupply_); return _tokensReceived; } /** * Calculate token sell value. * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function tokensToEthereum_(uint256 _tokens) internal view returns (uint256) { uint256 tokens_ = (_tokens + 1e18); uint256 _tokenSupply = (tokenSupply_ + 1e18); uint256 _etherReceived = (SafeMath.sub( (((tokenPriceInitial_ + (tokenPriceIncremental_ * (_tokenSupply / 1e18))) - tokenPriceIncremental_) * (tokens_ - 1e18)), (tokenPriceIncremental_ * ((tokens_**2 - tokens_) / 1e18)) / 2 ) / 1e18); return _etherReceived; } function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = (x + 1) / 2; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } library SafeMath { function div(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSwapBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getData","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"swapBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"getReferralBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"releaseTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60806040526040805190810160405280600681526020017f537761703344000000000000000000000000000000000000000000000000000081525060009080519060200190620000519291906200010e565b506040805190810160405280600381526020017f5333440000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f9291906200010e565b50678ac7230489e80000600355635f0d9e406004556000600855348015620000c657600080fd5b5033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001bd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015157805160ff191683800117855562000182565b8280016001018555821562000182579182015b828111156200018157825182559160200191906001019062000164565b5b50905062000191919062000195565b5090565b620001ba91905b80821115620001b65760008160009055506001016200019c565b5090565b90565b611f7780620001cd6000396000f30060806040526004361061013d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461014257806306fdde031461019957806310d0ffdd1461022957806318160ddd1461026a5780631fe356581461029557806322609373146102c0578063313ce567146103015780633bc5de30146103325780633ccfd60b1461038e5780634b750334146103a557806356d399e8146103d0578063688abbf7146103fb57806370a082311461043e5780637deb6025146104955780638620410b146104f6578063949e8acd1461052157806395d89b411461054c578063a9059cbb146105dc578063b0d1ac8a14610641578063b5b86a5114610698578063b91d4001146106ef578063e4849b321461071a578063e9fad8ee14610747578063fdb5a03e1461075e575b600080fd5b34801561014e57600080fd5b50610183600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610775565b6040518082815260200191505060405180910390f35b3480156101a557600080fd5b506101ae610817565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ee5780820151818401526020810190506101d3565b50505050905090810190601f16801561021b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023557600080fd5b50610254600480360381019080803590602001909291905050506108b5565b6040518082815260200191505060405180910390f35b34801561027657600080fd5b5061027f6108ed565b6040518082815260200191505060405180910390f35b3480156102a157600080fd5b506102aa6108f7565b6040518082815260200191505060405180910390f35b3480156102cc57600080fd5b506102eb600480360381019080803590602001909291905050506109e8565b6040518082815260200191505060405180910390f35b34801561030d57600080fd5b50610316610a34565b604051808260ff1660ff16815260200191505060405180910390f35b34801561033e57600080fd5b50610347610a39565b604051808981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b34801561039a57600080fd5b506103a3610aa3565b005b3480156103b157600080fd5b506103ba610cf3565b6040518082815260200191505060405180910390f35b3480156103dc57600080fd5b506103e5610d54565b6040518082815260200191505060405180910390f35b34801561040757600080fd5b50610428600480360381019080803515159060200190929190505050610d5a565b6040518082815260200191505060405180910390f35b34801561044a57600080fd5b5061047f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc6565b6040518082815260200191505060405180910390f35b3480156104a157600080fd5b506104e060048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0f565b6040518082815260200191505060405180910390f35b34801561050257600080fd5b5061050b610e2d565b6040518082815260200191505060405180910390f35b34801561052d57600080fd5b50610536610e8b565b6040518082815260200191505060405180910390f35b34801561055857600080fd5b50610561610ea0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a1578082015181840152602081019050610586565b50505050905090810190601f1680156105ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105e857600080fd5b50610627600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f3e565b604051808215151515815260200191505060405180910390f35b34801561064d57600080fd5b50610682600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ed565b6040518082815260200191505060405180910390f35b3480156106a457600080fd5b506106d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e0565b6040518082815260200191505060405180910390f35b3480156106fb57600080fd5b50610704611329565b6040518082815260200191505060405180910390f35b34801561072657600080fd5b506107456004803603810190808035906020019092919050505061132f565b005b34801561075357600080fd5b5061075c6115c6565b005b34801561076a57600080fd5b5061077361162d565b005b600068010000000000000000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954020381151561080f57fe5b049050919050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ad5780601f10610882576101008083540402835291602001916108ad565b820191906000526020600020905b81548152906001019060200180831161089057829003601f168201915b505050505081565b6000806000806108c985600a60ff166117a2565b92506108d585846117bd565b91506108e0826117d9565b9050809350505050919050565b6000600854905090565b600073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b505050506040513d60208110156109d257600080fd5b8101908080519060200190929190505050905090565b60008060008060085485111515156109ff57600080fd5b610a0885611866565b9250610a1b600a60ff16840260646117a2565b9150610a2783836117bd565b9050809350505050919050565b601281565b600080600080600080600080610a4d6108f7565b610a556108ed565b610a5e33610dc6565b610a67336112e0565b610a7033610775565b610a78610cf3565b610a80610e2d565b610a89336111ed565b975097509750975097509750975097509091929394959697565b6000806000610ab26001610d5a565b111515610abe57600080fd5b339150610acb6000610d5a565b9050680100000000000000008102600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b505050506040513d6020811015610c8f57600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b60008060008060006008541415610d18576402540be40064174876e800039350610d4e565b610d29670de0b6b3a7640000611866565b9250610d3c600a60ff16840260646117a2565b9150610d4883836117bd565b90508093505b50505090565b60035481565b60008033905082610d7357610d6e81610775565b610dbe565b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbc82610775565b015b915050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e1a83611911565b610e25838333611ab5565b905092915050565b60008060008060006008541415610e52576402540be40064174876e800019350610e85565b610e63670de0b6b3a7640000611866565b9250610e7383600a60ff166117a2565b9150610e7f8383611edf565b90508093505b50505090565b600080339050610e9a81610dc6565b91505090565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f365780601f10610f0b57610100808354040283529160200191610f36565b820191906000526020600020905b815481529060010190602001808311610f1957829003601f168201915b505050505081565b6000806000610f4b610e8b565b111515610f5757600080fd5b339050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610fa857600080fd5b6000610fb46001610d5a565b1115610fc357610fc2610aa3565b5b61100c600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846117bd565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611098600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611edf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508260095402600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508260095402600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561129e57600080fd5b505af11580156112b2573d6000803e3d6000fd5b505050506040513d60208110156112c857600080fd5b81019080805190602001909291905050509050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b6000806000806000806000611342610e8b565b11151561134e57600080fd5b339550600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054871115151561139f57600080fd5b8694506113ab85611866565b93506113be600a60ff16850260646117a2565b92506113ca84846117bd565b91506113d8600854866117bd565b600881905550611427600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866117bd565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856009540201905080600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060006008541115611501576114fa6009546008546801000000000000000086028115156114f457fe5b04611edf565b6009819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a350505050505050565b600080339150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611621576116208161132f565b5b611629610aa3565b5050565b60008060008061163d6001610d5a565b11151561164957600080fd5b6116536000610d5a565b9250339150680100000000000000008302600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061174583600084611ab5565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b60008082848115156117b057fe5b0490508091505092915050565b60008282111515156117ce57600080fd5b818303905092915050565b6000806000670de0b6b3a764000064174876e8000291506008546402540be40061184f611849600854866402540be400600202020260026008540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101611f00565b856117bd565b81151561185857fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600854019150670de0b6b3a76400006118fa670de0b6b3a764000085036402540be400670de0b6b3a7640000868115156118b857fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a038115156118e357fe5b046402540be400028115156118f457fe5b046117bd565b81151561190357fe5b049050809350505050919050565b6001151573cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b505050506040513d6020811015611a2a57600080fd5b81019080805190602001909291905050501515141515611ab2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f7472616e73666572206d7573742073756363656564000000000000000000000081525060200191505060405180910390fd5b50565b600080600080600080600080600060045442101580611b215750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16145b1515611b2c57600080fd5b899750611b3d8c600a60ff166117a2565b9650611b4a8760036117a2565b9550611b5687876117bd565b9450611b628c886117bd565b9350611b6d846117d9565b92506801000000000000000085029150600083118015611b995750600854611b9784600854611edf565b115b1515611ba457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614158015611c0d57508773ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a5750600354600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611cf057611ca8600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611edf565b600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d0b565b611cfa8587611edf565b945068010000000000000000850291505b60006008541115611d7657611d2260085484611edf565b600881905550600854680100000000000000008602811515611d4057fe5b04600960008282540192505081905550600854680100000000000000008602811515611d6857fe5b048302820382039150611d7e565b826008819055505b611dc7600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611edf565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836009540203905080600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508a73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58e86604051808381526020018281526020019250505060405180910390a382985050505050505050509392505050565b6000808284019050838110151515611ef657600080fd5b8091505092915050565b600080600260018401811515611f1257fe5b0490508291505b81811015611f45578091506002818285811515611f3257fe5b0401811515611f3d57fe5b049050611f19565b509190505600a165627a7a72305820c00276ed6100981837650dad0c5eb26fb954dad672c7661303f5acd2d25a63180029
Deployed Bytecode
0x60806040526004361061013d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461014257806306fdde031461019957806310d0ffdd1461022957806318160ddd1461026a5780631fe356581461029557806322609373146102c0578063313ce567146103015780633bc5de30146103325780633ccfd60b1461038e5780634b750334146103a557806356d399e8146103d0578063688abbf7146103fb57806370a082311461043e5780637deb6025146104955780638620410b146104f6578063949e8acd1461052157806395d89b411461054c578063a9059cbb146105dc578063b0d1ac8a14610641578063b5b86a5114610698578063b91d4001146106ef578063e4849b321461071a578063e9fad8ee14610747578063fdb5a03e1461075e575b600080fd5b34801561014e57600080fd5b50610183600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610775565b6040518082815260200191505060405180910390f35b3480156101a557600080fd5b506101ae610817565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ee5780820151818401526020810190506101d3565b50505050905090810190601f16801561021b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023557600080fd5b50610254600480360381019080803590602001909291905050506108b5565b6040518082815260200191505060405180910390f35b34801561027657600080fd5b5061027f6108ed565b6040518082815260200191505060405180910390f35b3480156102a157600080fd5b506102aa6108f7565b6040518082815260200191505060405180910390f35b3480156102cc57600080fd5b506102eb600480360381019080803590602001909291905050506109e8565b6040518082815260200191505060405180910390f35b34801561030d57600080fd5b50610316610a34565b604051808260ff1660ff16815260200191505060405180910390f35b34801561033e57600080fd5b50610347610a39565b604051808981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b34801561039a57600080fd5b506103a3610aa3565b005b3480156103b157600080fd5b506103ba610cf3565b6040518082815260200191505060405180910390f35b3480156103dc57600080fd5b506103e5610d54565b6040518082815260200191505060405180910390f35b34801561040757600080fd5b50610428600480360381019080803515159060200190929190505050610d5a565b6040518082815260200191505060405180910390f35b34801561044a57600080fd5b5061047f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc6565b6040518082815260200191505060405180910390f35b3480156104a157600080fd5b506104e060048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0f565b6040518082815260200191505060405180910390f35b34801561050257600080fd5b5061050b610e2d565b6040518082815260200191505060405180910390f35b34801561052d57600080fd5b50610536610e8b565b6040518082815260200191505060405180910390f35b34801561055857600080fd5b50610561610ea0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a1578082015181840152602081019050610586565b50505050905090810190601f1680156105ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105e857600080fd5b50610627600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f3e565b604051808215151515815260200191505060405180910390f35b34801561064d57600080fd5b50610682600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ed565b6040518082815260200191505060405180910390f35b3480156106a457600080fd5b506106d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e0565b6040518082815260200191505060405180910390f35b3480156106fb57600080fd5b50610704611329565b6040518082815260200191505060405180910390f35b34801561072657600080fd5b506107456004803603810190808035906020019092919050505061132f565b005b34801561075357600080fd5b5061075c6115c6565b005b34801561076a57600080fd5b5061077361162d565b005b600068010000000000000000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954020381151561080f57fe5b049050919050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ad5780601f10610882576101008083540402835291602001916108ad565b820191906000526020600020905b81548152906001019060200180831161089057829003601f168201915b505050505081565b6000806000806108c985600a60ff166117a2565b92506108d585846117bd565b91506108e0826117d9565b9050809350505050919050565b6000600854905090565b600073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b505050506040513d60208110156109d257600080fd5b8101908080519060200190929190505050905090565b60008060008060085485111515156109ff57600080fd5b610a0885611866565b9250610a1b600a60ff16840260646117a2565b9150610a2783836117bd565b9050809350505050919050565b601281565b600080600080600080600080610a4d6108f7565b610a556108ed565b610a5e33610dc6565b610a67336112e0565b610a7033610775565b610a78610cf3565b610a80610e2d565b610a89336111ed565b975097509750975097509750975097509091929394959697565b6000806000610ab26001610d5a565b111515610abe57600080fd5b339150610acb6000610d5a565b9050680100000000000000008102600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b505050506040513d6020811015610c8f57600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b60008060008060006008541415610d18576402540be40064174876e800039350610d4e565b610d29670de0b6b3a7640000611866565b9250610d3c600a60ff16840260646117a2565b9150610d4883836117bd565b90508093505b50505090565b60035481565b60008033905082610d7357610d6e81610775565b610dbe565b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbc82610775565b015b915050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e1a83611911565b610e25838333611ab5565b905092915050565b60008060008060006008541415610e52576402540be40064174876e800019350610e85565b610e63670de0b6b3a7640000611866565b9250610e7383600a60ff166117a2565b9150610e7f8383611edf565b90508093505b50505090565b600080339050610e9a81610dc6565b91505090565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f365780601f10610f0b57610100808354040283529160200191610f36565b820191906000526020600020905b815481529060010190602001808311610f1957829003601f168201915b505050505081565b6000806000610f4b610e8b565b111515610f5757600080fd5b339050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610fa857600080fd5b6000610fb46001610d5a565b1115610fc357610fc2610aa3565b5b61100c600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846117bd565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611098600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611edf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508260095402600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508260095402600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561129e57600080fd5b505af11580156112b2573d6000803e3d6000fd5b505050506040513d60208110156112c857600080fd5b81019080805190602001909291905050509050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b6000806000806000806000611342610e8b565b11151561134e57600080fd5b339550600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054871115151561139f57600080fd5b8694506113ab85611866565b93506113be600a60ff16850260646117a2565b92506113ca84846117bd565b91506113d8600854866117bd565b600881905550611427600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866117bd565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856009540201905080600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060006008541115611501576114fa6009546008546801000000000000000086028115156114f457fe5b04611edf565b6009819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a350505050505050565b600080339150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611621576116208161132f565b5b611629610aa3565b5050565b60008060008061163d6001610d5a565b11151561164957600080fd5b6116536000610d5a565b9250339150680100000000000000008302600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061174583600084611ab5565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b60008082848115156117b057fe5b0490508091505092915050565b60008282111515156117ce57600080fd5b818303905092915050565b6000806000670de0b6b3a764000064174876e8000291506008546402540be40061184f611849600854866402540be400600202020260026008540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101611f00565b856117bd565b81151561185857fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600854019150670de0b6b3a76400006118fa670de0b6b3a764000085036402540be400670de0b6b3a7640000868115156118b857fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a038115156118e357fe5b046402540be400028115156118f457fe5b046117bd565b81151561190357fe5b049050809350505050919050565b6001151573cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b505050506040513d6020811015611a2a57600080fd5b81019080805190602001909291905050501515141515611ab2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f7472616e73666572206d7573742073756363656564000000000000000000000081525060200191505060405180910390fd5b50565b600080600080600080600080600060045442101580611b215750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16145b1515611b2c57600080fd5b899750611b3d8c600a60ff166117a2565b9650611b4a8760036117a2565b9550611b5687876117bd565b9450611b628c886117bd565b9350611b6d846117d9565b92506801000000000000000085029150600083118015611b995750600854611b9784600854611edf565b115b1515611ba457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614158015611c0d57508773ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a5750600354600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611cf057611ca8600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611edf565b600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d0b565b611cfa8587611edf565b945068010000000000000000850291505b60006008541115611d7657611d2260085484611edf565b600881905550600854680100000000000000008602811515611d4057fe5b04600960008282540192505081905550600854680100000000000000008602811515611d6857fe5b048302820382039150611d7e565b826008819055505b611dc7600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611edf565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836009540203905080600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508a73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58e86604051808381526020018281526020019250505060405180910390a382985050505050505050509392505050565b6000808284019050838110151515611ef657600080fd5b8091505092915050565b600080600260018401811515611f1257fe5b0490508291505b81811015611f45578091506002818285811515611f3257fe5b0401811515611f3d57fe5b049050611f19565b509190505600a165627a7a72305820c00276ed6100981837650dad0c5eb26fb954dad672c7661303f5acd2d25a63180029
Deployed Bytecode Sourcemap
736:17800:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2908:8;;;9469:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9469:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1643:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1643:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1643:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11018:388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11018:388:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7521:91:0;;;;;;;;;;;;;;;;;;;;;;;7338:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7338:118:0;;;;;;;;;;;;;;;;;;;;;;;11524:414;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11524:414:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1714:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1714:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12033:1087;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12033:1087:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4291:490;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4291:490:0;;;;;;9887:508;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9887:508:0;;;;;;;;;;;;;;;;;;;;;;;2322:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2322:41:0;;;;;;;;;;;;;;;;;;;;;;;8194:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8194:375:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8657:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8657:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3206:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3206:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10473:428;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10473:428:0;;;;;;;;;;;;;;;;;;;;;;;7687:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7687:151:0;;;;;;;;;;;;;;;;;;;;;;;1679:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1679:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1679:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6241:967;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6241:967:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9000:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9000:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9238:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9238:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:39:0;;;;;;;;;;;;;;;;;;;;;;;4789:1444;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4789:1444:0;;;;;;;;;;;;;;;;;;;;;;;;;;4076:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4076:207:0;;;;;;3461:607;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3461:607:0;;;;;;9469:339;9564:7;2043:5;9745:10;:28;9756:16;9745:28;;;;;;;;;;;;;;;;9686:19;:37;9706:16;9686:37;;;;;;;;;;;;;;;;9668:15;;:55;9637:136;9609:191;;;;;;;;9589:211;;9469:339;;;:::o;1643:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11018:388::-;11125:7;11150:18;11226:22;11304:23;11171:44;11184:16;1795:2;11171:44;;:12;:44::i;:::-;11150:65;;11251:42;11264:16;11282:10;11251:12;:42::i;:::-;11226:67;;11330:33;11348:14;11330:17;:33::i;:::-;11304:59;;11383:15;11376:22;;11018:388;;;;;;:::o;7521:91::-;7565:7;7592:12;;7585:19;;7521:91;:::o;7338:118::-;7387:7;2104:42;7414:19;;;7442:4;7414:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7414:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7414:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7414:34:0;;;;;;;;;;;;;;;;7407:41;;7338:118;:::o;11524:414::-;11630:7;11704:17;11767:18;11838:22;11680:12;;11663:13;:29;;11655:38;;;;;;;;11724:32;11742:13;11724:17;:32::i;:::-;11704:52;;11788:39;1846:2;11802:18;;:9;:18;11823:3;11788:12;:39::i;:::-;11767:60;;11863:35;11876:9;11887:10;11863:12;:35::i;:::-;11838:60;;11916:14;11909:21;;11524:414;;;;;;:::o;1714:35::-;1747:2;1714:35;:::o;12033:1087::-;12116:7;12138;12160;12182;12204;12226;12248;12270;12373:18;:16;:18::i;:::-;12462:13;:11;:13::i;:::-;12553:21;12563:10;12553:9;:21::i;:::-;12656:30;12675:10;12656:18;:30::i;:::-;12762:23;12774:10;12762:11;:23::i;:::-;12859:11;:9;:11::i;:::-;12943:10;:8;:10::i;:::-;13076:25;13090:10;13076:13;:25::i;:::-;12305:807;;;;;;;;;;;;;;;;12033:1087;;;;;;;;:::o;4291:490::-;4347:24;4395:18;919:1;899:17;911:4;899:11;:17::i;:::-;:21;891:30;;;;;;;;4374:10;4347:37;;4416:18;4428:5;4416:11;:18::i;:::-;4395:39;;2043:5;4488:10;:22;4447:10;:28;4458:16;4447:28;;;;;;;;;;;;;;;;:64;;;;;;;;;;;4536:16;:34;4553:16;4536:34;;;;;;;;;;;;;;;;4522:48;;;;4618:1;4581:16;:34;4598:16;4581:34;;;;;;;;;;;;;;;:38;;;;2104:42;4630:18;;;4649:16;4667:10;4630:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4630:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4630:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4630:48:0;;;;;;;;;;;;;;;;;4721:16;4696:77;;;4752:10;4696:77;;;;;;;;;;;;;;;;;;4291:490;;:::o;9887:508::-;9929:7;10145:17;10203:18;10280:22;10044:1;10028:12;;:17;10024:364;;;1982:16;1909:15;10069:43;10062:50;;;;10024:364;10165:23;10183:4;10165:17;:23::i;:::-;10145:43;;10224:41;1846:2;10238:20;;:9;:20;10261:3;10224:12;:41::i;:::-;10203:62;;10305:35;10318:9;10329:10;10305:12;:35::i;:::-;10280:60;;10362:14;10355:21;;9887:508;;;;;:::o;2322:41::-;;;;:::o;8194:375::-;8291:7;8316:24;8343:10;8316:37;;8384:21;:177;;8532:29;8544:16;8532:11;:29::i;:::-;8384:177;;;8478:16;:34;8495:16;8478:34;;;;;;;;;;;;;;;;8425:29;8437:16;8425:11;:29::i;:::-;:87;8384:177;8364:197;;8194:375;;;;:::o;8657:138::-;8723:7;8750:19;:37;8770:16;8750:37;;;;;;;;;;;;;;;;8743:44;;8657:138;;;:::o;3206:247::-;3272:7;3292:25;3309:7;3292:16;:25::i;:::-;3345:100;3374:7;3397:11;3424:10;3345:14;:100::i;:::-;3338:107;;3206:247;;;;:::o;10473:428::-;10514:7;10655:17;10713:18;10786:22;10554:1;10538:12;;:17;10534:360;;;1982:16;1909:15;10579:43;10572:50;;;;10534:360;10675:23;10693:4;10675:17;:23::i;:::-;10655:43;;10734:37;10747:9;1795:2;10734:37;;:12;:37::i;:::-;10713:58;;10811:35;10824:9;10835:10;10811:12;:35::i;:::-;10786:60;;10868:14;10861:21;;10473:428;;;;;:::o;7687:151::-;7728:7;7748:24;7775:10;7748:37;;7803:27;7813:16;7803:9;:27::i;:::-;7796:34;;7687:151;;:::o;1679:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6241:967::-;6364:4;6386:24;823:1;810:10;:8;:10::i;:::-;:14;802:23;;;;;;;;6413:10;6386:37;;6461:19;:37;6481:16;6461:37;;;;;;;;;;;;;;;;6442:15;:56;;6434:65;;;;;;;;6544:1;6524:17;6536:4;6524:11;:17::i;:::-;:21;6520:37;;;6547:10;:8;:10::i;:::-;6520:37;6635:105;6662:19;:37;6682:16;6662:37;;;;;;;;;;;;;;;;6714:15;6635:12;:105::i;:::-;6595:19;:37;6615:16;6595:37;;;;;;;;;;;;;;;:145;;;;6795:99;6822:19;:31;6842:10;6822:31;;;;;;;;;;;;;;;;6868:15;6795:12;:99::i;:::-;6761:19;:31;6781:10;6761:31;;;;;;;;;;;;;;;:133;;;;6966:15;6948;;:33;6907:10;:28;6918:16;6907:28;;;;;;;;;;;;;;;;:75;;;;;;;;;;;7046:15;7028;;:33;6993:10;:22;7004:10;6993:22;;;;;;;;;;;;;;;;:69;;;;;;;;;;;7130:10;7103:55;;7112:16;7103:55;;;7142:15;7103:55;;;;;;;;;;;;;;;;;;7196:4;7189:11;;6241:967;;;;;:::o;9000:151::-;9070:7;2104:42;9097:19;;;9125:16;9097:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9097:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9097:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9097:46:0;;;;;;;;;;;;;;;;9090:53;;9000:151;;;:::o;9238:144::-;9313:7;9340:16;:34;9357:16;9340:34;;;;;;;;;;;;;;;;9333:41;;9238:144;;;:::o;2390:39::-;;;;:::o;4789:1444::-;4863:24;4987:15;5031:17;5088:18;5161:22;5478;823:1;810:10;:8;:10::i;:::-;:14;802:23;;;;;;;;4890:10;4863:37;;4938:19;:37;4958:16;4938:37;;;;;;;;;;;;;;;;4919:15;:56;;4911:65;;;;;;;;5005:15;4987:33;;5051:26;5069:7;5051:17;:26::i;:::-;5031:46;;5109:41;1846:2;5123:20;;:9;:20;5146:3;5109:12;:41::i;:::-;5088:62;;5186:35;5199:9;5210:10;5186:12;:35::i;:::-;5161:60;;5282:35;5295:12;;5309:7;5282:12;:35::i;:::-;5267:12;:50;;;;5368:97;5395:19;:37;5415:16;5395:37;;;;;;;;;;;;;;;;5447:7;5368:12;:97::i;:::-;5328:19;:37;5348:16;5328:37;;;;;;;;;;;;;;;:137;;;;2043:5;5541:14;:26;5530:7;5512:15;;:25;:56;5478:91;;5612:15;5580:10;:28;5591:16;5580:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;5659:1;5644:12;;:16;5640:243;;;5752:119;5783:15;;5844:12;;2043:5;5818:10;:22;5817:39;;;;;;;;5752:12;:119::i;:::-;5734:15;:137;;;;5640:243;5954:16;5928:104;;;5985:7;6007:14;5928:104;;;;;;;;;;;;;;;;;;;;;;;;6149:42;6087:138;;6110:16;6087:138;;;6207:7;6087:138;;;;;;;;;;;;;;;;;;4789:1444;;;;;;;:::o;4076:207::-;4110:24;4158:15;4137:10;4110:37;;4176:19;:37;4196:16;4176:37;;;;;;;;;;;;;;;;4158:55;;4238:1;4228:7;:11;4224:30;;;4241:13;4246:7;4241:4;:13::i;:::-;4224:30;4265:10;:8;:10::i;:::-;4076:207;;:::o;3461:607::-;3517:18;3570:24;3803:15;919:1;899:17;911:4;899:11;:17::i;:::-;:21;891:30;;;;;;;;3538:18;3550:5;3538:11;:18::i;:::-;3517:39;;3597:10;3570:37;;2043:5;3659:10;:22;3618:10;:28;3629:16;3618:28;;;;;;;;;;;;;;;;:64;;;;;;;;;;;3707:16;:34;3724:16;3707:34;;;;;;;;;;;;;;;;3693:48;;;;3789:1;3752:16;:34;3769:16;3752:34;;;;;;;;;;;;;;;:38;;;;3821:110;3850:10;3884:3;3904:16;3821:14;:110::i;:::-;3803:128;;3986:16;3957:103;;;4017:10;4042:7;3957:103;;;;;;;;;;;;;;;;;;;;;;;;3461:607;;;:::o;18564:122::-;18622:7;18642:9;18658:1;18654;:5;;;;;;;;18642:17;;18677:1;18670:8;;18564:122;;;;;:::o;18692:124::-;18750:7;18783:1;18778;:6;;18770:15;;;;;;;;18807:1;18803;:5;18796:12;;18692:124;;;;:::o;16497:998::-;16593:7;16618:26;16683:23;16668:4;1909:15;16647:25;16618:54;;17439:12;;1982:16;16725:671;16779:546;17289:12;;17235:18;1982:16;17138:1;:61;:115;:163;17102:1;17088:12;;:15;17049:1;1982:16;17023:27;17022:82;16983:4;16971:9;:16;16929:4;1982:16;16904:29;16866:1;:68;:122;16831:1;16811:18;:21;16810:179;:295;:492;16779:4;:546::i;:::-;17363:18;16725:12;:671::i;:::-;16710:724;;;;;;;;16709:743;16683:769;;17472:15;17465:22;;16497:998;;;;;:::o;17757:561::-;17851:7;17876:15;17921:20;17976:22;17905:4;17895:7;:14;17876:34;;17960:4;17945:12;;:19;17921:44;;18273:4;18002:268;18176:4;18166:7;:14;1982:16;18112:4;18097:12;:19;;;;;;;;1982:16;18071:46;1909:15;18032:86;18031:130;18030:151;18258:1;18249:4;18238:7;18234:1;18225:7;:10;:20;18224:29;;;;;;;;1982:16;18198:56;18197:62;;;;;;;;18002:12;:268::i;:::-;:275;;;;;;;;17976:302;;18296:14;18289:21;;17757:561;;;;;;:::o;2936:262::-;3150:4;3020:134;;2104:42;3020:22;;;3061:10;3099:4;3124:7;3020:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3020:126:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3020:126:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3020:126:0;;;;;;;;;;;;;;;;:134;;;2998:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2936:262;:::o;13128:3073::-;13289:7;13397:24;13442:27;13565:22;13637:18;13718:22;13843:23;13913:12;15837:22;13343:11;;13324:15;:30;;13323:62;;;;13371:13;;;;;;;;;;;13360:24;;:7;:24;;;13323:62;13315:71;;;;;;;;13424:7;13397:34;;13472:82;13499:17;1795:2;13472:82;;:12;:82::i;:::-;13442:112;;13590:36;13603:19;13624:1;13590:12;:36::i;:::-;13565:61;;13658:49;13671:19;13692:14;13658:12;:49::i;:::-;13637:70;;13743:89;13770:17;13802:19;13743:12;:89::i;:::-;13718:114;;13869:33;13887:14;13869:17;:33::i;:::-;13843:59;;2043:5;13928:10;:22;13913:37;;14003:1;13985:15;:19;:100;;;;;14072:12;;14026:43;14039:15;14056:12;;14026;:43::i;:::-;:58;13985:100;13963:133;;;;;;;;14187:42;14172:57;;:11;:57;;;;:134;;;;;14290:16;14275:31;;:11;:31;;;;14172:134;:269;;;;;14423:18;;14387:19;:32;14407:11;14387:32;;;;;;;;;;;;;;;;:54;;14172:269;14109:779;;;14538:108;14569:16;:29;14586:11;14569:29;;;;;;;;;;;;;;;;14617:14;14538:12;:108::i;:::-;14506:16;:29;14523:11;14506:29;;;;;;;;;;;;;;;:140;;;;14109:779;;;14792:40;14805:10;14817:14;14792:12;:40::i;:::-;14779:53;;2043:5;14854:10;:22;14847:29;;14109:779;14969:1;14954:12;;:16;14950:717;;;15041:43;15054:12;;15068:15;15041:12;:43::i;:::-;15026:12;:58;;;;15271:12;;2043:5;15244:10;:22;15243:41;;;;;;;;15223:15;;:62;;;;;;;;;;;15537:12;;2043:5;15510:10;:22;15509:41;;;;;;;;15465:15;:86;15436:4;:116;15411:4;:142;15387:166;;14950:717;;;15640:15;15625:12;:30;;;;14950:717;15719:105;15746:19;:37;15766:16;15746:37;;;;;;;;;;;;;;;;15798:15;15719:12;:105::i;:::-;15679:19;:37;15699:16;15679:37;;;;;;;;;;;;;;;:145;;;;15909:4;15890:15;15872;;:33;15871:42;15837:77;;15957:15;15925:10;:28;15936:16;15925:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;16136:11;16013:145;;16043:16;16013:145;;;16074:17;16106:15;16013:145;;;;;;;;;;;;;;;;;;;;;;;;16178:15;16171:22;;13128:3073;;;;;;;;;;;;;:::o;18822:148::-;18880:7;18900:9;18916:1;18912;:5;18900:17;;18941:1;18936;:6;;18928:15;;;;;;;;18961:1;18954:8;;18822:148;;;;;:::o;18326:207::-;18374:9;18396;18418:1;18413;18409;:5;18408:11;;;;;;;;18396:23;;18434:1;18430:5;;18446:80;18457:1;18453;:5;18446:80;;;18479:1;18475:5;;18513:1;18508;18504;18500;:5;;;;;;;;:9;18499:15;;;;;;;;18495:19;;18446:80;;;18326:207;;;;:::o
Swarm Source
bzzr://c00276ed6100981837650dad0c5eb26fb954dad672c7661303f5acd2d25a6318
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.