ERC-20
Deflationary Token
Overview
Max Total Supply
999,606,181,080,180.985626484 DEF
Holders
13 (0.00%)
Total Transfers
-
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
Deflationary
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2023-01-20 */ // SPDX-License-Identifier: UNILICENSE pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } 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; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } 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"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract Deflationary is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; 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; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tRfiFeeTotal; uint256 private _tBurnFeeTotal; string private constant _name = "Deflationary"; string private constant _symbol = "DEF"; struct feeRatesStruct { uint8 rfi; uint8 burn; } feeRatesStruct public feeRates = feeRatesStruct( {rfi: 0, burn: 3 }); struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rBurn; uint256 tTransferAmount; uint256 tRfi; uint256 tBurn; } event FeesChanged(); constructor () { _rOwned[owner()] = _rTotal; _isExcludedFromFee[owner()] = true; emit Transfer(address(0), owner(), _tTotal); } //std ERC20: 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 ERC20: 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 transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalRfiFees() public view returns (uint256) { return _tRfiFeeTotal; } function totalBurnFees() public view returns (uint256) { return _tBurnFeeTotal; } 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.div(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 setFeeRates(uint8 _burn) public onlyOwner { feeRates.burn = _burn; emit FeesChanged(); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal = _rTotal.sub(rRfi); _tRfiFeeTotal = _tRfiFeeTotal.add(tRfi); } function _takeBurn(uint256 rBurn, uint256 tBurn) private { _tBurnFeeTotal=_tBurnFeeTotal.add(tBurn); _tTotal = _tTotal.sub(tBurn); _rTotal = _rTotal.sub(rBurn); } 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.rBurn) = _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.mul(feeRates.rfi).div(100); s.tBurn = tAmount.mul(feeRates.burn).div(100); s.tTransferAmount = tAmount.sub(s.tRfi).sub(s.tBurn); return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rBurn) { rAmount = tAmount.mul(currentRate); if(!takeFee) { return(rAmount, rAmount, 0,0); } rRfi = s.tRfi.mul(currentRate); rBurn = s.tBurn.mul(currentRate); rTransferAmount = rAmount.sub(rRfi).sub(rBurn); return (rAmount, rTransferAmount, rRfi,rBurn); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to])); } //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] && !_isExcluded[recipient]) { //from excluded _tOwned[sender] = _tOwned[sender].sub(tAmount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient].add(s.tTransferAmount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { //both excl _tOwned[sender] = _tOwned[sender].sub(tAmount); _tOwned[recipient] = _tOwned[recipient].add(s.tTransferAmount); } _rOwned[sender] = _rOwned[sender].sub(s.rAmount); _rOwned[recipient] = _rOwned[recipient].add(s.rTransferAmount); _reflectRfi(s.rRfi, s.tRfi); _takeBurn(s.rBurn,s.tBurn); emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(0), s.tBurn); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","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":[],"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":[],"name":"feeRates","outputs":[{"internalType":"uint8","name":"rfi","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"}],"stateMutability":"view","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":"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":[{"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":"uint8","name":"_burn","type":"uint8"}],"name":"setFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRfiFees","outputs":[{"internalType":"uint256","name":"","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"}]
Contract Creation Code
6080604052620000126009600a6200020d565b620000259066038d7ea4c6800062000305565b6007819055620000389060001962000341565b620000469060001962000327565b60085560408051808201909152600081526003602090910152600b805461ffff19166103001790553480156200007b57600080fd5b50600062000088620001a4565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060085460016000620000e3620001a8565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600460006200011d620001a860201b60201c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200014f620001a8565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620001969190620001b7565b60405180910390a362000378565b3390565b6000546001600160a01b031690565b90815260200190565b80825b6001808611620001d4575062000204565b818704821115620001e957620001e962000362565b80861615620001f757918102915b9490941c938002620001c3565b94509492505050565b60006200022160001960ff85168462000228565b9392505050565b600082620002395750600162000221565b81620002485750600062000221565b81600181146200026157600281146200026c57620002a0565b600191505062000221565b60ff84111562000280576200028062000362565b6001841b91508482111562000299576200029962000362565b5062000221565b5060208310610133831016604e8410600b8410161715620002d8575081810a83811115620002d257620002d262000362565b62000221565b620002e78484846001620001c0565b808604821115620002fc57620002fc62000362565b02949350505050565b600081600019048311821515161562000322576200032262000362565b500290565b6000828210156200033c576200033c62000362565b500390565b6000826200035d57634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b611b2780620003886000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de57806395d89b4111610097578063d4deb14111610071578063d4deb14114610337578063dd62ed3e1461033f578063ea2f0b3714610352578063f2fde38b146103655761018e565b806395d89b4114610309578063a457c2d714610311578063a9059cbb146103245761018e565b806370a082311461029d578063715018a6146102b05780637688c584146102b857806388f82020146102ce5780638da5cb5b146102e15780639417ac7c146102f65761018e565b8063317653e01161014b578063437823ec11610125578063437823ec146102515780634549b0391461026457806352390c02146102775780635342acb41461028a5761018e565b8063317653e0146102215780633685d41914610229578063395093511461023e5761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d157806323b872dd146101e65780632d838119146101f9578063313ce5671461020c575b600080fd5b61019b610378565b6040516101a89190611675565b60405180910390f35b6101c46101bf3660046115c1565b61039e565b6040516101a8919061166a565b6101d96103bc565b6040516101a891906119da565b6101c46101f4366004611586565b6103c2565b6101d96102073660046115ea565b610449565b610214610495565b6040516101a891906119e3565b6101d961049a565b61023c61023736600461153a565b6104a0565b005b6101c461024c3660046115c1565b610675565b61023c61025f36600461153a565b6106c3565b6101d9610272366004611602565b610726565b61023c61028536600461153a565b610780565b6101c461029836600461153a565b6108b8565b6101d96102ab36600461153a565b6108d6565b61023c610938565b6102c06109c1565b6040516101a89291906119f1565b6101c46102dc36600461153a565b6109d3565b6102e96109f1565b6040516101a89190611656565b61023c610304366004611635565b610a00565b61019b610a7f565b6101c461031f3660046115c1565b610a9c565b6101c46103323660046115c1565b610b04565b6101d9610b18565b6101d961034d366004611554565b610b1e565b61023c61036036600461153a565b610b49565b61023c61037336600461153a565b610ba9565b60408051808201909152600c81526b4465666c6174696f6e61727960a01b602082015290565b60006103b26103ab610c69565b8484610c6d565b5060015b92915050565b60075490565b60006103cf848484610d21565b61043f846103db610c69565b61043a85604051806060016040528060288152602001611aa5602891396001600160a01b038a16600090815260036020526040812090610419610c69565b6001600160a01b031681526020810191909152604001600020549190610e09565b610c6d565b5060019392505050565b60006008548211156104765760405162461bcd60e51b815260040161046d9061175c565b60405180910390fd5b6000610480610e35565b905061048c8382610e58565b9150505b919050565b600990565b600a5490565b6104a8610c69565b6001600160a01b03166104b96109f1565b6001600160a01b0316146104df5760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b03811660009081526005602052604090205460ff166105175760405162461bcd60e51b815260040161046d90611865565b60005b60065481101561067157816001600160a01b03166006828154811061054f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561065f576006805461057a90600190611a5c565b8154811061059857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b0390921691839081106105d257634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600680548061063857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610671565b8061066981611a73565b91505061051a565b5050565b60006103b2610682610c69565b8461043a8560036000610693610c69565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610e6b565b6106cb610c69565b6001600160a01b03166106dc6109f1565b6001600160a01b0316146107025760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b600060075483111561074a5760405162461bcd60e51b815260040161046d9061189c565b8161076657600061075c846001610e77565b5191506103b69050565b6000610773846001610e77565b6020015191506103b69050565b610788610c69565b6001600160a01b03166107996109f1565b6001600160a01b0316146107bf5760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b03811660009081526005602052604090205460ff16156107f85760405162461bcd60e51b815260040161046d9061182e565b6001600160a01b03811660009081526001602052604090205415610852576001600160a01b03811660009081526001602052604090205461083890610449565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b031660009081526004602052604090205460ff1690565b6001600160a01b03811660009081526005602052604081205460ff161561091657506001600160a01b038116600090815260026020526040902054610490565b6001600160a01b0382166000908152600160205260409020546103b690610449565b610940610c69565b6001600160a01b03166109516109f1565b6001600160a01b0316146109775760405162461bcd60e51b815260040161046d906118d3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600b5460ff8082169161010090041682565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b031690565b610a08610c69565b6001600160a01b0316610a196109f1565b6001600160a01b031614610a3f5760405162461bcd60e51b815260040161046d906118d3565b600b805461ff00191661010060ff8416021790556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150565b6040805180820190915260038152622222a360e91b602082015290565b60006103b2610aa9610c69565b8461043a85604051806060016040528060258152602001611acd6025913960036000610ad3610c69565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610e09565b60006103b2610b11610c69565b8484610d21565b60095490565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610b51610c69565b6001600160a01b0316610b626109f1565b6001600160a01b031614610b885760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b03166000908152600460205260409020805460ff19169055565b610bb1610c69565b6001600160a01b0316610bc26109f1565b6001600160a01b031614610be85760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b038116610c0e5760405162461bcd60e51b815260040161046d906117a6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038316610c935760405162461bcd60e51b815260040161046d90611996565b6001600160a01b038216610cb95760405162461bcd60e51b815260040161046d906117ec565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d149085906119da565b60405180910390a3505050565b6001600160a01b038316610d475760405162461bcd60e51b815260040161046d90611951565b6001600160a01b038216610d6d5760405162461bcd60e51b815260040161046d906116c8565b60008111610d8d5760405162461bcd60e51b815260040161046d90611908565b610d96836108d6565b811115610db55760405162461bcd60e51b815260040161046d9061170b565b6001600160a01b038316600090815260046020526040902054610e049084908490849060ff1680610dfe57506001600160a01b03861660009081526004602052604090205460ff165b15610eb5565b505050565b60008184841115610e2d5760405162461bcd60e51b815260040161046d9190611675565b505050900390565b6000806000610e426111d0565b9092509050610e518282610e58565b9250505090565b6000610e648284611a1d565b9392505050565b6000610e648284611a05565b610e7f6114e6565b610e89838361138d565b9050610e9e818484610e99610e35565b611413565b606085015260408401526020830152815292915050565b6000610ec18383610e77565b6001600160a01b03861660009081526005602052604090205490915060ff168015610f0557506001600160a01b03841660009081526005602052604090205460ff16155b15610f4b576001600160a01b038516600090815260026020526040902054610f2d9084611476565b6001600160a01b03861660009081526002602052604090205561108e565b6001600160a01b03851660009081526005602052604090205460ff16158015610f8c57506001600160a01b03841660009081526005602052604090205460ff165b15610fd65760808101516001600160a01b038516600090815260026020526040902054610fb891610e6b565b6001600160a01b03851660009081526002602052604090205561108e565b6001600160a01b03851660009081526005602052604090205460ff16801561101657506001600160a01b03841660009081526005602052604090205460ff165b1561108e576001600160a01b03851660009081526002602052604090205461103e9084611476565b6001600160a01b038087166000908152600260205260408082209390935560808401519187168152919091205461107491610e6b565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546110b291611476565b6001600160a01b03808716600090815260016020908152604080832094909455840151918716815291909120546110e891610e6b565b6001600160a01b038516600090815260016020526040908190209190915581015160a08201516111189190611482565b61112a81606001518260c001516114a6565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836080015160405161117191906119da565b60405180910390a360006001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c001516040516111c191906119da565b60405180910390a35050505050565b6008546007546000918291825b60065481101561135b5782600160006006848154811061120d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611286575081600260006006848154811061125f57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561129d5760085460075494509450505050611389565b6112f160016000600684815481106112c557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611476565b9250611347600260006006848154811061131b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611476565b91508061135381611a73565b9150506111dd565b5060075460085461136b91610e58565b82101561138357600854600754935093505050611389565b90925090505b9091565b6113956114e6565b816113a657608081018390526103b6565b600b546113c4906064906113be90869060ff166114da565b90610e58565b60a0820152600b546113e6906064906113be908690610100900460ff166114da565b60c0820181905260a08201516114089190611402908690611476565b90611476565b608082015292915050565b600080808061142287866114da565b9350856114375750829150600090508061146b565b60a088015161144690866114da565b60c089015190925061145890866114da565b9050611468816114028685611476565b92505b945094509450949050565b6000610e648284611a5c565b60085461148f9083611476565b60085560095461149f9082610e6b565b6009555050565b600a546114b39082610e6b565b600a556007546114c39082611476565b6007556008546114d39083611476565b6008555050565b6000610e648284611a3d565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b038116811461049057600080fd5b60006020828403121561154b578081fd5b610e6482611523565b60008060408385031215611566578081fd5b61156f83611523565b915061157d60208401611523565b90509250929050565b60008060006060848603121561159a578081fd5b6115a384611523565b92506115b160208501611523565b9150604084013590509250925092565b600080604083850312156115d3578182fd5b6115dc83611523565b946020939093013593505050565b6000602082840312156115fb578081fd5b5035919050565b60008060408385031215611614578182fd5b823591506020830135801515811461162a578182fd5b809150509250929050565b600060208284031215611646578081fd5b813560ff81168114610e64578182fd5b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b818110156116a157858101830151858201604001528201611685565b818111156116b25783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526031908201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206040820152707468616e20796f75722062616c616e636560781b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b60208082526017908201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60ff92831681529116602082015260400190565b60008219821115611a1857611a18611a8e565b500190565b600082611a3857634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611a5757611a57611a8e565b500290565b600082821015611a6e57611a6e611a8e565b500390565b6000600019821415611a8757611a87611a8e565b5060010190565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d8a46af5758e18c4c72081ab29c44c71085fad11ff7b7307aa4483bcfe3f1b1564736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de57806395d89b4111610097578063d4deb14111610071578063d4deb14114610337578063dd62ed3e1461033f578063ea2f0b3714610352578063f2fde38b146103655761018e565b806395d89b4114610309578063a457c2d714610311578063a9059cbb146103245761018e565b806370a082311461029d578063715018a6146102b05780637688c584146102b857806388f82020146102ce5780638da5cb5b146102e15780639417ac7c146102f65761018e565b8063317653e01161014b578063437823ec11610125578063437823ec146102515780634549b0391461026457806352390c02146102775780635342acb41461028a5761018e565b8063317653e0146102215780633685d41914610229578063395093511461023e5761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d157806323b872dd146101e65780632d838119146101f9578063313ce5671461020c575b600080fd5b61019b610378565b6040516101a89190611675565b60405180910390f35b6101c46101bf3660046115c1565b61039e565b6040516101a8919061166a565b6101d96103bc565b6040516101a891906119da565b6101c46101f4366004611586565b6103c2565b6101d96102073660046115ea565b610449565b610214610495565b6040516101a891906119e3565b6101d961049a565b61023c61023736600461153a565b6104a0565b005b6101c461024c3660046115c1565b610675565b61023c61025f36600461153a565b6106c3565b6101d9610272366004611602565b610726565b61023c61028536600461153a565b610780565b6101c461029836600461153a565b6108b8565b6101d96102ab36600461153a565b6108d6565b61023c610938565b6102c06109c1565b6040516101a89291906119f1565b6101c46102dc36600461153a565b6109d3565b6102e96109f1565b6040516101a89190611656565b61023c610304366004611635565b610a00565b61019b610a7f565b6101c461031f3660046115c1565b610a9c565b6101c46103323660046115c1565b610b04565b6101d9610b18565b6101d961034d366004611554565b610b1e565b61023c61036036600461153a565b610b49565b61023c61037336600461153a565b610ba9565b60408051808201909152600c81526b4465666c6174696f6e61727960a01b602082015290565b60006103b26103ab610c69565b8484610c6d565b5060015b92915050565b60075490565b60006103cf848484610d21565b61043f846103db610c69565b61043a85604051806060016040528060288152602001611aa5602891396001600160a01b038a16600090815260036020526040812090610419610c69565b6001600160a01b031681526020810191909152604001600020549190610e09565b610c6d565b5060019392505050565b60006008548211156104765760405162461bcd60e51b815260040161046d9061175c565b60405180910390fd5b6000610480610e35565b905061048c8382610e58565b9150505b919050565b600990565b600a5490565b6104a8610c69565b6001600160a01b03166104b96109f1565b6001600160a01b0316146104df5760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b03811660009081526005602052604090205460ff166105175760405162461bcd60e51b815260040161046d90611865565b60005b60065481101561067157816001600160a01b03166006828154811061054f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561065f576006805461057a90600190611a5c565b8154811061059857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b0390921691839081106105d257634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600680548061063857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610671565b8061066981611a73565b91505061051a565b5050565b60006103b2610682610c69565b8461043a8560036000610693610c69565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610e6b565b6106cb610c69565b6001600160a01b03166106dc6109f1565b6001600160a01b0316146107025760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b600060075483111561074a5760405162461bcd60e51b815260040161046d9061189c565b8161076657600061075c846001610e77565b5191506103b69050565b6000610773846001610e77565b6020015191506103b69050565b610788610c69565b6001600160a01b03166107996109f1565b6001600160a01b0316146107bf5760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b03811660009081526005602052604090205460ff16156107f85760405162461bcd60e51b815260040161046d9061182e565b6001600160a01b03811660009081526001602052604090205415610852576001600160a01b03811660009081526001602052604090205461083890610449565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b031660009081526004602052604090205460ff1690565b6001600160a01b03811660009081526005602052604081205460ff161561091657506001600160a01b038116600090815260026020526040902054610490565b6001600160a01b0382166000908152600160205260409020546103b690610449565b610940610c69565b6001600160a01b03166109516109f1565b6001600160a01b0316146109775760405162461bcd60e51b815260040161046d906118d3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600b5460ff8082169161010090041682565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b031690565b610a08610c69565b6001600160a01b0316610a196109f1565b6001600160a01b031614610a3f5760405162461bcd60e51b815260040161046d906118d3565b600b805461ff00191661010060ff8416021790556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150565b6040805180820190915260038152622222a360e91b602082015290565b60006103b2610aa9610c69565b8461043a85604051806060016040528060258152602001611acd6025913960036000610ad3610c69565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610e09565b60006103b2610b11610c69565b8484610d21565b60095490565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610b51610c69565b6001600160a01b0316610b626109f1565b6001600160a01b031614610b885760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b03166000908152600460205260409020805460ff19169055565b610bb1610c69565b6001600160a01b0316610bc26109f1565b6001600160a01b031614610be85760405162461bcd60e51b815260040161046d906118d3565b6001600160a01b038116610c0e5760405162461bcd60e51b815260040161046d906117a6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038316610c935760405162461bcd60e51b815260040161046d90611996565b6001600160a01b038216610cb95760405162461bcd60e51b815260040161046d906117ec565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d149085906119da565b60405180910390a3505050565b6001600160a01b038316610d475760405162461bcd60e51b815260040161046d90611951565b6001600160a01b038216610d6d5760405162461bcd60e51b815260040161046d906116c8565b60008111610d8d5760405162461bcd60e51b815260040161046d90611908565b610d96836108d6565b811115610db55760405162461bcd60e51b815260040161046d9061170b565b6001600160a01b038316600090815260046020526040902054610e049084908490849060ff1680610dfe57506001600160a01b03861660009081526004602052604090205460ff165b15610eb5565b505050565b60008184841115610e2d5760405162461bcd60e51b815260040161046d9190611675565b505050900390565b6000806000610e426111d0565b9092509050610e518282610e58565b9250505090565b6000610e648284611a1d565b9392505050565b6000610e648284611a05565b610e7f6114e6565b610e89838361138d565b9050610e9e818484610e99610e35565b611413565b606085015260408401526020830152815292915050565b6000610ec18383610e77565b6001600160a01b03861660009081526005602052604090205490915060ff168015610f0557506001600160a01b03841660009081526005602052604090205460ff16155b15610f4b576001600160a01b038516600090815260026020526040902054610f2d9084611476565b6001600160a01b03861660009081526002602052604090205561108e565b6001600160a01b03851660009081526005602052604090205460ff16158015610f8c57506001600160a01b03841660009081526005602052604090205460ff165b15610fd65760808101516001600160a01b038516600090815260026020526040902054610fb891610e6b565b6001600160a01b03851660009081526002602052604090205561108e565b6001600160a01b03851660009081526005602052604090205460ff16801561101657506001600160a01b03841660009081526005602052604090205460ff165b1561108e576001600160a01b03851660009081526002602052604090205461103e9084611476565b6001600160a01b038087166000908152600260205260408082209390935560808401519187168152919091205461107491610e6b565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546110b291611476565b6001600160a01b03808716600090815260016020908152604080832094909455840151918716815291909120546110e891610e6b565b6001600160a01b038516600090815260016020526040908190209190915581015160a08201516111189190611482565b61112a81606001518260c001516114a6565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836080015160405161117191906119da565b60405180910390a360006001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c001516040516111c191906119da565b60405180910390a35050505050565b6008546007546000918291825b60065481101561135b5782600160006006848154811061120d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611286575081600260006006848154811061125f57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561129d5760085460075494509450505050611389565b6112f160016000600684815481106112c557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611476565b9250611347600260006006848154811061131b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611476565b91508061135381611a73565b9150506111dd565b5060075460085461136b91610e58565b82101561138357600854600754935093505050611389565b90925090505b9091565b6113956114e6565b816113a657608081018390526103b6565b600b546113c4906064906113be90869060ff166114da565b90610e58565b60a0820152600b546113e6906064906113be908690610100900460ff166114da565b60c0820181905260a08201516114089190611402908690611476565b90611476565b608082015292915050565b600080808061142287866114da565b9350856114375750829150600090508061146b565b60a088015161144690866114da565b60c089015190925061145890866114da565b9050611468816114028685611476565b92505b945094509450949050565b6000610e648284611a5c565b60085461148f9083611476565b60085560095461149f9082610e6b565b6009555050565b600a546114b39082610e6b565b600a556007546114c39082611476565b6007556008546114d39083611476565b6008555050565b6000610e648284611a3d565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b038116811461049057600080fd5b60006020828403121561154b578081fd5b610e6482611523565b60008060408385031215611566578081fd5b61156f83611523565b915061157d60208401611523565b90509250929050565b60008060006060848603121561159a578081fd5b6115a384611523565b92506115b160208501611523565b9150604084013590509250925092565b600080604083850312156115d3578182fd5b6115dc83611523565b946020939093013593505050565b6000602082840312156115fb578081fd5b5035919050565b60008060408385031215611614578182fd5b823591506020830135801515811461162a578182fd5b809150509250929050565b600060208284031215611646578081fd5b813560ff81168114610e64578182fd5b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b818110156116a157858101830151858201604001528201611685565b818111156116b25783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526031908201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206040820152707468616e20796f75722062616c616e636560781b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b60208082526017908201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60ff92831681529116602082015260400190565b60008219821115611a1857611a18611a8e565b500190565b600082611a3857634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611a5757611a57611a8e565b500290565b600082821015611a6e57611a6e611a8e565b500390565b6000600019821415611a8757611a87611a8e565b5060010190565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d8a46af5758e18c4c72081ab29c44c71085fad11ff7b7307aa4483bcfe3f1b1564736f6c63430008000033
Deployed Bytecode Sourcemap
8475:10199:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9924:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10855:161;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10220:95::-;;;:::i;:::-;;;;;;;:::i;11024:313::-;;;;;;:::i;:::-;;:::i;12646:253::-;;;;;;:::i;:::-;;:::i;10106:83::-;;;:::i;:::-;;;;;;;:::i;12077:95::-;;;:::i;13314:475::-;;;;;;:::i;:::-;;:::i;:::-;;11345:218;;;;;;:::i;:::-;;:::i;13797:111::-;;;;;;:::i;:::-;;:::i;12180:456::-;;;;;;:::i;:::-;;:::i;12973:333::-;;;;;;:::i;:::-;;:::i;14034:123::-;;;;;;:::i;:::-;;:::i;10323:198::-;;;;;;:::i;:::-;;:::i;8068:148::-;;;:::i;9390:86::-;;;:::i;:::-;;;;;;;;:::i;11848:120::-;;;;;;:::i;:::-;;:::i;7845:87::-;;;:::i;:::-;;;;;;;:::i;14165:116::-;;;;;;:::i;:::-;;:::i;10013:87::-;;;:::i;11571:269::-;;;;;;:::i;:::-;;:::i;10529:167::-;;;;;;:::i;:::-;;:::i;11976:93::-;;;:::i;10704:143::-;;;;;;:::i;:::-;;:::i;13916:110::-;;;;;;:::i;:::-;;:::i;8224:244::-;;;;;;:::i;:::-;;:::i;9924:83::-;9994:5;;;;;;;;;;;;-1:-1:-1;;;9994:5:0;;;;9924:83;:::o;10855:161::-;10930:4;10947:39;10956:12;:10;:12::i;:::-;10970:7;10979:6;10947:8;:39::i;:::-;-1:-1:-1;11004:4:0;10855:161;;;;;:::o;10220:95::-;10300:7;;10220:95;:::o;11024:313::-;11122:4;11139:36;11149:6;11157:9;11168:6;11139:9;:36::i;:::-;11186:121;11195:6;11203:12;:10;:12::i;:::-;11217:89;11255:6;11217:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11217:19:0;;;;;;:11;:19;;;;;;11237:12;:10;:12::i;:::-;-1:-1:-1;;;;;11217:33:0;;;;;;;;;;;;-1:-1:-1;11217:33:0;;;:89;:37;:89::i;:::-;11186:8;:121::i;:::-;-1:-1:-1;11325:4:0;11024:313;;;;;:::o;12646:253::-;12712:7;12751;;12740;:18;;12732:73;;;;-1:-1:-1;;;12732:73:0;;;;;;;:::i;:::-;;;;;;;;;12816:19;12839:10;:8;:10::i;:::-;12816:33;-1:-1:-1;12867:24:0;:7;12816:33;12867:11;:24::i;:::-;12860:31;;;12646:253;;;;:::o;10106:83::-;8959:1;10106:83;:::o;12077:95::-;12150:14;;12077:95;:::o;13314:475::-;7991:12;:10;:12::i;:::-;-1:-1:-1;;;;;7980:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;7980:23:0;;7972:68;;;;-1:-1:-1;;;7972:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13396:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;13388:56;;;;-1:-1:-1::0;;;13388:56:0::1;;;;;;;:::i;:::-;13460:9;13455:327;13479:9;:16:::0;13475:20;::::1;13455:327;;;13537:7;-1:-1:-1::0;;;;;13521:23:0::1;:9;13531:1;13521:12;;;;;;-1:-1:-1::0;;;13521:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;13521:12:0::1;:23;13517:254;;;13580:9;13590:16:::0;;:20:::1;::::0;13609:1:::1;::::0;13590:20:::1;:::i;:::-;13580:31;;;;;;-1:-1:-1::0;;;13580:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;13565:9:::1;:12:::0;;-1:-1:-1;;;;;13580:31:0;;::::1;::::0;13575:1;;13565:12;::::1;;;-1:-1:-1::0;;;13565:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;13565:46:0::1;-1:-1:-1::0;;;;;13565:46:0;;::::1;;::::0;;13630:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;13669:11:::1;:20:::0;;;;:28;;-1:-1:-1;;13669:28:0::1;::::0;;13716:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;13716:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;13716:15:0;;;;;-1:-1:-1;;;;;;13716:15:0::1;::::0;;;;;13750:5:::1;;13517:254;13497:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13455:327;;;;13314:475:::0;:::o;11345:218::-;11433:4;11450:83;11459:12;:10;:12::i;:::-;11473:7;11482:50;11521:10;11482:11;:25;11494:12;:10;:12::i;:::-;-1:-1:-1;;;;;11482:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;11482:25:0;;;:34;;;;;;;;;;;:38;:50::i;13797:111::-;7991:12;:10;:12::i;:::-;-1:-1:-1;;;;;7980:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;7980:23:0;;7972:68;;;;-1:-1:-1;;;7972:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13866:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;13866:34:0::1;13896:4;13866:34;::::0;;13797:111::o;12180:456::-;12270:7;12309;;12298;:18;;12290:62;;;;-1:-1:-1;;;12290:62:0;;;;;;;:::i;:::-;12368:17;12363:266;;12402:28;12433:25;12444:7;12453:4;12433:10;:25::i;:::-;12480:9;;-1:-1:-1;12473:16:0;;-1:-1:-1;12473:16:0;12363:266;12522:28;12553:25;12564:7;12573:4;12553:10;:25::i;:::-;12600:17;;;;-1:-1:-1;12593:24:0;;-1:-1:-1;12593:24:0;12973:333;7991:12;:10;:12::i;:::-;-1:-1:-1;;;;;7980:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;7980:23:0;;7972:68;;;;-1:-1:-1;;;7972:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13056:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;13055:21;13047:61;;;;-1:-1:-1::0;;;13047:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13122:16:0;::::1;13141:1;13122:16:::0;;;:7:::1;:16;::::0;;;;;:20;13119:108:::1;;-1:-1:-1::0;;;;;13198:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;13178:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;13159:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;13119:108:::1;-1:-1:-1::0;;;;;13237:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;13237:27:0::1;13260:4;13237:27:::0;;::::1;::::0;;;13275:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;13275:23:0::1;::::0;;::::1;::::0;;12973:333::o;14034:123::-;-1:-1:-1;;;;;14122:27:0;14098:4;14122:27;;;:18;:27;;;;;;;;;14034:123::o;10323:198::-;-1:-1:-1;;;;;10413:20:0;;10389:7;10413:20;;;:11;:20;;;;;;;;10409:49;;;-1:-1:-1;;;;;;10442:16:0;;;;;;:7;:16;;;;;;10435:23;;10409:49;-1:-1:-1;;;;;10496:16:0;;;;;;:7;:16;;;;;;10476:37;;:19;:37::i;8068:148::-;7991:12;:10;:12::i;:::-;-1:-1:-1;;;;;7980:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;7980:23:0;;7972:68;;;;-1:-1:-1;;;7972:68:0;;;;;;;:::i;:::-;8175:1:::1;8159:6:::0;;8138:40:::1;::::0;-1:-1:-1;;;;;8159:6:0;;::::1;::::0;8138:40:::1;::::0;8175:1;;8138:40:::1;8206:1;8189:19:::0;;-1:-1:-1;;;;;;8189:19:0::1;::::0;;8068:148::o;9390:86::-;;;;;;;;;;;;;:::o;11848:120::-;-1:-1:-1;;;;;11940:20:0;11916:4;11940:20;;;:11;:20;;;;;;;;;11848:120::o;7845:87::-;7891:7;7918:6;-1:-1:-1;;;;;7918:6:0;7845:87;:::o;14165:116::-;7991:12;:10;:12::i;:::-;-1:-1:-1;;;;;7980:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;7980:23:0;;7972:68;;;;-1:-1:-1;;;7972:68:0;;;;;;;:::i;:::-;14225:8:::1;:21:::0;;-1:-1:-1;;14225:21:0::1;;;::::0;::::1;;;::::0;;14260:13:::1;::::0;::::1;::::0;-1:-1:-1;;14260:13:0::1;14165:116:::0;:::o;10013:87::-;10085:7;;;;;;;;;;;;-1:-1:-1;;;10085:7:0;;;;10013:87;:::o;11571:269::-;11664:4;11681:129;11690:12;:10;:12::i;:::-;11704:7;11713:96;11752:15;11713:96;;;;;;;;;;;;;;;;;:11;:25;11725:12;:10;:12::i;:::-;-1:-1:-1;;;;;11713:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;11713:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;10529:167::-;10607:4;10624:42;10634:12;:10;:12::i;:::-;10648:9;10659:6;10624:9;:42::i;11976:93::-;12048:13;;11976:93;:::o;10704:143::-;-1:-1:-1;;;;;10812:18:0;;;10785:7;10812:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10704:143::o;13916:110::-;7991:12;:10;:12::i;:::-;-1:-1:-1;;;;;7980:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;7980:23:0;;7972:68;;;;-1:-1:-1;;;7972:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13983:27:0::1;14013:5;13983:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;13983:35:0::1;::::0;;13916:110::o;8224:244::-;7991:12;:10;:12::i;:::-;-1:-1:-1;;;;;7980:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;7980:23:0;;7972:68;;;;-1:-1:-1;;;7972:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8313:22:0;::::1;8305:73;;;;-1:-1:-1::0;;;8305:73:0::1;;;;;;;:::i;:::-;8415:6;::::0;;8394:38:::1;::::0;-1:-1:-1;;;;;8394:38:0;;::::1;::::0;8415:6;::::1;::::0;8394:38:::1;::::0;::::1;8443:6;:17:::0;;-1:-1:-1;;;;;;8443:17:0::1;-1:-1:-1::0;;;;;8443:17:0;;;::::1;::::0;;;::::1;::::0;;8224:244::o;3467:98::-;3547:10;3467:98;:::o;16684:335::-;-1:-1:-1;;;;;16777:19:0;;16769:68;;;;-1:-1:-1;;;16769:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16856:21:0;;16848:68;;;;-1:-1:-1;;;16848:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16927:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;16979:32;;;;;16957:6;;16979:32;:::i;:::-;;;;;;;;16684:335;;;:::o;17027:511::-;-1:-1:-1;;;;;17115:18:0;;17107:68;;;;-1:-1:-1;;;17107:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17194:16:0;;17186:64;;;;-1:-1:-1;;;17186:64:0;;;;;;;:::i;:::-;17278:1;17269:6;:10;17261:64;;;;-1:-1:-1;;;17261:64:0;;;;;;;:::i;:::-;17354:15;17364:4;17354:9;:15::i;:::-;17344:6;:25;;17336:86;;;;-1:-1:-1;;;17336:86:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17478:24:0;;;;;;:18;:24;;;;;;17443:87;;17458:4;;17464:2;;17468:6;;17478:24;;;:50;;-1:-1:-1;;;;;;17506:22:0;;;;;;:18;:22;;;;;;;;17478:50;17476:53;17443:14;:87::i;:::-;17027:511;;;:::o;2693:240::-;2813:7;2874:12;2866:6;;;;2858:29;;;;-1:-1:-1;;;2858:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2909:5:0;;;2693:240::o;15948:163::-;15989:7;16010:15;16027;16046:19;:17;:19::i;:::-;16009:56;;-1:-1:-1;16009:56:0;-1:-1:-1;16083:20:0;16009:56;;16083:11;:20::i;:::-;16076:27;;;;15948:163;:::o;2481:98::-;2539:7;2566:5;2570:1;2566;:5;:::i;:::-;2559:12;2481:98;-1:-1:-1;;;2481:98:0:o;2163:::-;2221:7;2248:5;2252:1;2248;:5;:::i;14652:342::-;14725:36;;:::i;:::-;14786:29;14798:7;14807;14786:11;:29::i;:::-;14774:41;;14907:52;14919:9;14930:7;14939;14948:10;:8;:10::i;:::-;14907:11;:52::i;:::-;14888:15;;;14826:133;14873:14;;;14826:133;14846:25;;;14826:133;;;14652:342;;;;:::o;17619:1052::-;17730:28;17761;17772:7;17781;17761:10;:28::i;:::-;-1:-1:-1;;;;;17806:19:0;;;;;;:11;:19;;;;;;17730:59;;-1:-1:-1;17806:19:0;;:46;;;;-1:-1:-1;;;;;;17830:22:0;;;;;;:11;:22;;;;;;;;17829:23;17806:46;17802:538;;;-1:-1:-1;;;;;17908:15:0;;;;;;:7;:15;;;;;;:28;;17928:7;17908:19;:28::i;:::-;-1:-1:-1;;;;;17890:15:0;;;;;;:7;:15;;;;;:46;17802:538;;;-1:-1:-1;;;;;17959:19:0;;;;;;:11;:19;;;;;;;;17958:20;:46;;;;-1:-1:-1;;;;;;17982:22:0;;;;;;:11;:22;;;;;;;;17958:46;17954:386;;;18083:17;;;;-1:-1:-1;;;;;18060:18:0;;;;;;:7;:18;;;;;;:41;;:22;:41::i;:::-;-1:-1:-1;;;;;18039:18:0;;;;;;:7;:18;;;;;:62;17954:386;;;-1:-1:-1;;;;;18123:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;18146:22:0;;;;;;:11;:22;;;;;;;;18123:45;18119:221;;;-1:-1:-1;;;;;18219:15:0;;;;;;:7;:15;;;;;;:28;;18239:7;18219:19;:28::i;:::-;-1:-1:-1;;;;;18201:15:0;;;;;;;:7;:15;;;;;;:46;;;;18310:17;;;;18287:18;;;;;;;;;;:41;;:22;:41::i;:::-;-1:-1:-1;;;;;18266:18:0;;;;;;:7;:18;;;;;:62;18119:221;18390:9;;-1:-1:-1;;;;;18370:15:0;;18390:9;18370:15;;;:7;:15;;;;;;:30;;:19;:30::i;:::-;-1:-1:-1;;;;;18352:15:0;;;;;;;:7;:15;;;;;;;;:48;;;;18455:17;;;18432:18;;;;;;;;;;:41;;:22;:41::i;:::-;-1:-1:-1;;;;;18411:18:0;;;;;;:7;:18;;;;;;;:62;;;;18496:6;;;18504;;;;18484:27;;18496:6;18484:11;:27::i;:::-;18522:26;18532:1;:7;;;18540:1;:7;;;18522:9;:26::i;:::-;18581:9;-1:-1:-1;;;;;18564:46:0;18573:6;-1:-1:-1;;;;;18564:46:0;;18592:1;:17;;;18564:46;;;;;;:::i;:::-;;;;;;;;18651:1;-1:-1:-1;;;;;18626:37:0;18635:6;-1:-1:-1;;;;;18626:37:0;;18655:1;:7;;;18626:37;;;;;;:::i;:::-;;;;;;;;17619:1052;;;;;:::o;16119:555::-;16216:7;;16252;;16169;;;;;16270:289;16294:9;:16;16290:20;;16270:289;;;16360:7;16336;:21;16344:9;16354:1;16344:12;;;;;;-1:-1:-1;;;16344:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16344:12:0;16336:21;;;;;;;;;;;;;:31;;:66;;;16395:7;16371;:21;16379:9;16389:1;16379:12;;;;;;-1:-1:-1;;;16379:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16379:12:0;16371:21;;;;;;;;;;;;;:31;16336:66;16332:97;;;16412:7;;16421;;16404:25;;;;;;;;;16332:97;16454:34;16466:7;:21;16474:9;16484:1;16474:12;;;;;;-1:-1:-1;;;16474:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16474:12:0;16466:21;;;;;;;;;;;;;16454:7;;:11;:34::i;:::-;16444:44;;16513:34;16525:7;:21;16533:9;16543:1;16533:12;;;;;;-1:-1:-1;;;16533:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16533:12:0;16525:21;;;;;;;;;;;;;16513:7;;:11;:34::i;:::-;16503:44;-1:-1:-1;16312:3:0;;;;:::i;:::-;;;;16270:289;;;-1:-1:-1;16595:7:0;;16583;;:20;;:11;:20::i;:::-;16573:7;:30;16569:61;;;16613:7;;16622;;16605:25;;;;;;;;16569:61;16649:7;;-1:-1:-1;16658:7:0;-1:-1:-1;16119:555:0;;;:::o;15002:402::-;15076:28;;:::i;:::-;15123:7;15119:86;;15145:17;;;:27;;;15185:8;;15119:86;15236:8;:12;15224:34;;15254:3;;15224:25;;:7;;15236:12;;15224:11;:25::i;:::-;:29;;:34::i;:::-;15215:6;;;:43;15291:8;:13;15279:35;;15310:3;;15279:26;;:7;;15291:13;;;;;15279:11;:26::i;:35::-;15269:7;;;:45;;;15357:6;;;;15345:32;;15269:45;15345:19;;:7;;:11;:19::i;:::-;:23;;:32::i;:::-;15325:17;;;:52;15002:402;;;;:::o;15412:528::-;15537:15;;;;15629:24;:7;15641:11;15629;:24::i;:::-;15619:34;;15670:7;15666:67;;-1:-1:-1;15699:7:0;;-1:-1:-1;15717:1:0;;-1:-1:-1;15717:1:0;15692:29;;15666:67;15752:6;;;;:23;;15763:11;15752:10;:23::i;:::-;15794:7;;;;15745:30;;-1:-1:-1;15794:24:0;;15806:11;15794;:24::i;:::-;15786:32;-1:-1:-1;15848:28:0;15786:32;15848:17;:7;15860:4;15848:11;:17::i;:28::-;15829:47;;15412:528;;;;;;;;;;:::o;2269:98::-;2327:7;2354:5;2358:1;2354;:5;:::i;14289:153::-;14367:7;;:17;;14379:4;14367:11;:17::i;:::-;14357:7;:27;14411:13;;:23;;14429:4;14411:17;:23::i;:::-;14395:13;:39;-1:-1:-1;;14289:153:0:o;14450:194::-;14533:14;;:25;;14552:5;14533:18;:25::i;:::-;14518:14;:40;14579:7;;:18;;14591:5;14579:11;:18::i;:::-;14569:7;:28;14618:7;;:18;;14630:5;14618:11;:18::i;:::-;14608:7;:28;-1:-1:-1;;14450:194:0:o;2375:98::-;2433:7;2460:5;2464:1;2460;:5;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:266::-;;;1152:2;1140:9;1131:7;1127:23;1123:32;1120:2;;;1173:6;1165;1158:22;1120:2;1201:31;1222:9;1201:31;:::i;:::-;1191:41;1279:2;1264:18;;;;1251:32;;-1:-1:-1;;;1110:179:1:o;1294:190::-;;1406:2;1394:9;1385:7;1381:23;1377:32;1374:2;;;1427:6;1419;1412:22;1374:2;-1:-1:-1;1455:23:1;;1364:120;-1:-1:-1;1364:120:1:o;1489:361::-;;;1615:2;1603:9;1594:7;1590:23;1586:32;1583:2;;;1636:6;1628;1621:22;1583:2;1677:9;1664:23;1654:33;;1737:2;1726:9;1722:18;1709:32;1784:5;1777:13;1770:21;1763:5;1760:32;1750:2;;1811:6;1803;1796:22;1750:2;1839:5;1829:15;;;1573:277;;;;;:::o;1855:289::-;;1965:2;1953:9;1944:7;1940:23;1936:32;1933:2;;;1986:6;1978;1971:22;1933:2;2030:9;2017:23;2080:4;2073:5;2069:16;2062:5;2059:27;2049:2;;2105:6;2097;2090:22;2149:203;-1:-1:-1;;;;;2313:32:1;;;;2295:51;;2283:2;2268:18;;2250:102::o;2357:187::-;2522:14;;2515:22;2497:41;;2485:2;2470:18;;2452:92::o;2549:603::-;;2690:2;2719;2708:9;2701:21;2751:6;2745:13;2794:6;2789:2;2778:9;2774:18;2767:34;2819:4;2832:140;2846:6;2843:1;2840:13;2832:140;;;2941:14;;;2937:23;;2931:30;2907:17;;;2926:2;2903:26;2896:66;2861:10;;2832:140;;;2990:6;2987:1;2984:13;2981:2;;;3060:4;3055:2;3046:6;3035:9;3031:22;3027:31;3020:45;2981:2;-1:-1:-1;3136:2:1;3115:15;-1:-1:-1;;3111:29:1;3096:45;;;;3143:2;3092:54;;2670:482;-1:-1:-1;;;2670:482:1:o;3157:399::-;3359:2;3341:21;;;3398:2;3378:18;;;3371:30;3437:34;3432:2;3417:18;;3410:62;-1:-1:-1;;;3503:2:1;3488:18;;3481:33;3546:3;3531:19;;3331:225::o;3561:413::-;3763:2;3745:21;;;3802:2;3782:18;;;3775:30;3841:34;3836:2;3821:18;;3814:62;-1:-1:-1;;;3907:2:1;3892:18;;3885:47;3964:3;3949:19;;3735:239::o;3979:406::-;4181:2;4163:21;;;4220:2;4200:18;;;4193:30;4259:34;4254:2;4239:18;;4232:62;-1:-1:-1;;;4325:2:1;4310:18;;4303:40;4375:3;4360:19;;4153:232::o;4390:402::-;4592:2;4574:21;;;4631:2;4611:18;;;4604:30;4670:34;4665:2;4650:18;;4643:62;-1:-1:-1;;;4736:2:1;4721:18;;4714:36;4782:3;4767:19;;4564:228::o;4797:398::-;4999:2;4981:21;;;5038:2;5018:18;;;5011:30;5077:34;5072:2;5057:18;;5050:62;-1:-1:-1;;;5143:2:1;5128:18;;5121:32;5185:3;5170:19;;4971:224::o;5200:351::-;5402:2;5384:21;;;5441:2;5421:18;;;5414:30;5480:29;5475:2;5460:18;;5453:57;5542:2;5527:18;;5374:177::o;5556:347::-;5758:2;5740:21;;;5797:2;5777:18;;;5770:30;5836:25;5831:2;5816:18;;5809:53;5894:2;5879:18;;5730:173::o;5908:355::-;6110:2;6092:21;;;6149:2;6129:18;;;6122:30;6188:33;6183:2;6168:18;;6161:61;6254:2;6239:18;;6082:181::o;6268:356::-;6470:2;6452:21;;;6489:18;;;6482:30;6548:34;6543:2;6528:18;;6521:62;6615:2;6600:18;;6442:182::o;6629:405::-;6831:2;6813:21;;;6870:2;6850:18;;;6843:30;6909:34;6904:2;6889:18;;6882:62;-1:-1:-1;;;6975:2:1;6960:18;;6953:39;7024:3;7009:19;;6803:231::o;7039:401::-;7241:2;7223:21;;;7280:2;7260:18;;;7253:30;7319:34;7314:2;7299:18;;7292:62;-1:-1:-1;;;7385:2:1;7370:18;;7363:35;7430:3;7415:19;;7213:227::o;7445:400::-;7647:2;7629:21;;;7686:2;7666:18;;;7659:30;7725:34;7720:2;7705:18;;7698:62;-1:-1:-1;;;7791:2:1;7776:18;;7769:34;7835:3;7820:19;;7619:226::o;7850:177::-;7996:25;;;7984:2;7969:18;;7951:76::o;8032:184::-;8204:4;8192:17;;;;8174:36;;8162:2;8147:18;;8129:87::o;8221:262::-;8417:4;8405:17;;;8387:36;;8459:17;;8454:2;8439:18;;8432:45;8375:2;8360:18;;8342:141::o;8488:128::-;;8559:1;8555:6;8552:1;8549:13;8546:2;;;8565:18;;:::i;:::-;-1:-1:-1;8601:9:1;;8536:80::o;8621:217::-;;8687:1;8677:2;;-1:-1:-1;;;8712:31:1;;8766:4;8763:1;8756:15;8794:4;8719:1;8784:15;8677:2;-1:-1:-1;8823:9:1;;8667:171::o;8843:168::-;;8949:1;8945;8941:6;8937:14;8934:1;8931:21;8926:1;8919:9;8912:17;8908:45;8905:2;;;8956:18;;:::i;:::-;-1:-1:-1;8996:9:1;;8895:116::o;9016:125::-;;9084:1;9081;9078:8;9075:2;;;9089:18;;:::i;:::-;-1:-1:-1;9126:9:1;;9065:76::o;9146:135::-;;-1:-1:-1;;9206:17:1;;9203:2;;;9226:18;;:::i;:::-;-1:-1:-1;9273:1:1;9262:13;;9193:88::o;9286:127::-;9347:10;9342:3;9338:20;9335:1;9328:31;9378:4;9375:1;9368:15;9402:4;9399:1;9392:15
Swarm Source
ipfs://d8a46af5758e18c4c72081ab29c44c71085fad11ff7b7307aa4483bcfe3f1b15
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.