Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 8601297 | 6 days ago | IN | 0 S | 0.00284786 | ||||
Approve | 8601294 | 6 days ago | IN | 0 S | 0.00284786 | ||||
Approve | 8601293 | 6 days ago | IN | 0 S | 0.00284786 | ||||
Approve | 8601286 | 6 days ago | IN | 0 S | 0.00284786 | ||||
Approve | 8601235 | 6 days ago | IN | 0 S | 0.0026169 | ||||
Enable Trade | 8601076 | 6 days ago | IN | 0 S | 0.00250866 | ||||
Set Max Tx Amoun... | 8601060 | 6 days ago | IN | 0 S | 0.00252626 | ||||
Exclude From Max... | 8601033 | 6 days ago | IN | 0 S | 0.00254419 |
Loading...
Loading
Contract Name:
Contract
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-19 */ /** ░▒▓██████████████▓▒░░▒▓████████▓▒░▒▓███████▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓███████▓▒░ ░▒▓██████▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓██████▓▒░ ░▒▓███████▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░ */ // SPDX-License-Identifier: MIT/** pragma solidity ^0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ 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; } } 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; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); 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 // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ 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 Contract 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; uint256 public constant MAX = ~uint256(0); uint256 public _tTotal = 1_000_000_000 * 10**18; uint256 public _rTotal = (MAX - (MAX % _tTotal)); uint256 public _tFeeTotal; uint256 private _tBurnTotal; string private _name = "Merinda Token"; string private _symbol = "MERINDA"; uint8 private _decimals = 18; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _burnFee = 0; uint256 private _previousburnFee = _burnFee; bool public tradeEnabled; constructor () public { _rOwned[_msgSender()] = _rTotal; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } 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 _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } // State variable to store exclusions from maxTxAmount mapping(address => bool) private _isExcludedFromMaxTx; // Function to set maxTxAmount (already provided earlier) uint256 public maxTxAmount; // Function to set maxTxAmount limit function setMaxTxAmount(uint256 _maxTxAmount) external onlyOwner { maxTxAmount = _maxTxAmount; } // Functions to exclude and include addresses from maxTxAmount function excludeFromMaxTx(address account) external onlyOwner { _isExcludedFromMaxTx[account] = true; } function includeInMaxTx(address account) external onlyOwner { _isExcludedFromMaxTx[account] = false; } function transfer(address recipient, uint256 amount) public override returns (bool) { if (!_isExcludedFromMaxTx[_msgSender()] && !_isExcludedFromMaxTx[recipient]) { require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount"); } _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) { if (!_isExcludedFromMaxTx[sender] && !_isExcludedFromMaxTx[recipient]) { require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount"); } _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 totalFees() public view returns (uint256) { return _tFeeTotal; } function totalBurn() public view returns (uint256) { return _tBurnTotal; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,) = _getValues(tAmount); return 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); } 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 already 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 _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(_getRate()); _reflectFee(rFee, tFee, rburnfee,tburnFee ); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setRewardFeePercent(uint256 taxFee) external onlyOwner() { uint256 newfees = taxFee + _burnFee; require (newfees <= 20, "Slippage must be less than 20%"); _taxFee = taxFee; } function setBurnFeePercent(uint256 burnfee) external onlyOwner() { uint256 newfees = _taxFee + burnfee; require (newfees <= 20, "Slippage must be less than 20%"); _burnFee = burnfee; } function _reflectFee(uint256 rFee, uint256 tFee, uint256 rBurn, uint256 tBurn ) private { _rTotal = _rTotal.sub(rFee).sub(rBurn); _tFeeTotal = _tFeeTotal.add(tFee); _tBurnTotal = _tBurnTotal.add(tBurn); _tTotal = _tTotal.sub(tBurn); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tburnFee); return (tTransferAmount, tFee); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private view returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rburnfee); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; 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 calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_burnFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _burnFee == 0 ) return; _previousTaxFee = _taxFee; _previousburnFee = _burnFee; _taxFee = 0; _burnFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _burnFee = _previousburnFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (!tradeEnabled) { require(from == owner() || to == owner(), "transfer: trade not enabled"); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(_getRate()); _reflectFee(rFee, tFee, rburnfee,tburnFee ); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(_getRate()); _reflectFee(rFee, tFee, rburnfee,tburnFee ); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(_getRate()); _reflectFee(rFee, tFee, rburnfee,tburnFee ); emit Transfer(sender, recipient, tTransferAmount); } function enableTrade() external onlyOwner { tradeEnabled = true; } }
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":"MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[],"name":"enableTrade","outputs":[],"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":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxTx","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":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnfee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setRewardFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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
60806040526b033b2e3c9fd0803ce8000000600955600954600019816200002257fe5b0660001903600a556040518060400160405280600d81526020017f4d6572696e646120546f6b656e00000000000000000000000000000000000000815250600d90805190602001906200007792919062000378565b506040518060400160405280600781526020017f4d4552494e444100000000000000000000000000000000000000000000000000815250600e9080519060200190620000c592919062000378565b506012600f60006101000a81548160ff021916908360ff160217905550600060105560105460115560006012556012546013553480156200010557600080fd5b506000620001186200034760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a5460036000620001cd6200034760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620002216200034f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002da6200034760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a36200041e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003bb57805160ff1916838001178555620003ec565b82800160010185558215620003ec579182015b82811115620003eb578251825591602001919060010190620003ce565b5b509050620003fb9190620003ff565b5090565b5b808211156200041a57600081600090555060010162000400565b5090565b6144e2806200042e6000396000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c806370a0823111610130578063c0b0fda2116100b8578063dd62ed3e1161007c578063dd62ed3e14610a33578063ea2f0b3714610aab578063ec28438a14610aef578063f2fde38b14610b1d578063fb1eb14b14610b6157610231565b8063c0b0fda214610965578063cea2695814610983578063d49d5181146109b1578063d621e813146109cf578063db4cf1e0146109ef57610231565b80638da5cb5b116100ff5780638da5cb5b146107c857806395d89b41146107fc578063a457c2d71461087f578063a9059cbb146108e3578063af465a271461094757610231565b806370a08231146106ee578063715018a61461074657806388f82020146107505780638c0b5e22146107aa57610231565b80633685d419116101be5780634549b039116101825780634549b039146105b657806345e0b9d41461060457806352390c02146106225780635342acb4146106665780636bebaf97146106c057610231565b80633685d4191461048e57806339509351146104d25780633b124fe7146105365780633c9f861d14610554578063437823ec1461057257610231565b806318160ddd1161020557806318160ddd1461034557806318621fe51461036357806323b872dd146103a75780632d8381191461042b578063313ce5671461046d57610231565b806299d3861461023657806306fdde0314610240578063095ea7b3146102c357806313114a9d14610327575b600080fd5b61023e610b7f565b005b610248610c64565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028857808201518184015260208101905061026d565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030f600480360360408110156102d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d06565b60405180821515815260200191505060405180910390f35b61032f610d24565b6040518082815260200191505060405180910390f35b61034d610d2e565b6040518082815260200191505060405180910390f35b6103a56004803603602081101561037957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d38565b005b610413600480360360608110156103bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e5b565b60405180821515815260200191505060405180910390f35b6104576004803603602081101561044157600080fd5b8101908080359060200190929190505050611039565b6040518082815260200191505060405180910390f35b6104756110bd565b604051808260ff16815260200191505060405180910390f35b6104d0600480360360208110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d4565b005b61051e600480360360408110156104e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061145e565b60405180821515815260200191505060405180910390f35b61053e611511565b6040518082815260200191505060405180910390f35b61055c611517565b6040518082815260200191505060405180910390f35b6105b46004803603602081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611521565b005b6105ee600480360360408110156105cc57600080fd5b8101908080359060200190929190803515159060200190929190505050611644565b6040518082815260200191505060405180910390f35b61060c6116f9565b6040518082815260200191505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ff565b005b6106a86004803603602081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a19565b60405180821515815260200191505060405180910390f35b6106ec600480360360208110156106d657600080fd5b8101908080359060200190929190505050611a6f565b005b6107306004803603602081101561070457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bc2565b6040518082815260200191505060405180910390f35b61074e611cad565b005b6107926004803603602081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e33565b60405180821515815260200191505060405180910390f35b6107b2611e89565b6040518082815260200191505060405180910390f35b6107d0611e8f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610804611eb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610844578082015181840152602081019050610829565b50505050905090810190601f1680156108715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108cb6004803603604081101561089557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f5a565b60405180821515815260200191505060405180910390f35b61092f600480360360408110156108f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612027565b60405180821515815260200191505060405180910390f35b61094f612151565b6040518082815260200191505060405180910390f35b61096d612157565b6040518082815260200191505060405180910390f35b6109af6004803603602081101561099957600080fd5b810190808035906020019092919050505061215d565b005b6109b96122b0565b6040518082815260200191505060405180910390f35b6109d76122b6565b60405180821515815260200191505060405180910390f35b610a3160048036036020811015610a0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c9565b005b610a9560048036036040811015610a4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ec565b6040518082815260200191505060405180910390f35b610aed60048036036020811015610ac157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b610b1b60048036036020811015610b0557600080fd5b8101908080359060200190929190505050612596565b005b610b5f60048036036020811015610b3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612668565b005b610b69612873565b6040518082815260200191505060405180910390f35b610b87612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601460006101000a81548160ff021916908315150217905550565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cfc5780601f10610cd157610100808354040283529160200191610cfc565b820191906000526020600020905b815481529060010190602001808311610cdf57829003601f168201915b5050505050905090565b6000610d1a610d13612879565b8484612881565b6001905092915050565b6000600b54905090565b6000600954905090565b610d40612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f015750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f6257601654821115610f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b610f6d848484612a78565b61102e84610f79612879565b611029856040518060600160405280602881526020016143c760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fdf612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b600190509392505050565b6000600a54821115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614334602a913960400191505060405180910390fd5b60006110a0612e5a565b90506110b58184612e8590919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6110dc612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661125b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561145a578173ffffffffffffffffffffffffffffffffffffffff166008828154811061128f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561144d576008600160088054905003815481106112eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061132357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061141357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561145a565b808060010191505061125e565b5050565b600061150761146b612879565b84611502856005600061147c612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b612881565b6001905092915050565b60105481565b6000600c54905090565b611529612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156116be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816116dd5760006116ce84612f57565b505050509050809150506116f3565b60006116e884612f57565b505050915050809150505b92915050565b600a5481565b611707612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561195b57611917600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611a77612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601254820190506014811115611bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816010819055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5d57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ca8565b611ca5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b90505b919050565b611cb5612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f505780601f10611f2557610100808354040283529160200191611f50565b820191906000526020600020905b815481529060010190602001808311611f3357829003601f168201915b5050505050905090565b600061201d611f67612879565b84612018856040518060600160405280602581526020016144886025913960056000611f91612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b6001905092915050565b600060156000612035612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213557601654821115612134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b612147612140612879565b8484612a78565b6001905092915050565b60095481565b60125481565b612165612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008160105401905060148111156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816012819055505050565b60001981565b601460009054906101000a900460ff1681565b6122d1612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247b612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61259e612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b612670612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061435e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061443d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561298d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143846022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612afe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806144186025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143116023913960400191505060405180910390fd5b60008111612bdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143ef6029913960400191505060405180910390fd5b601460009054906101000a900460ff16612cd757612bf9611e8f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c645750612c35611e8f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7472616e736665723a207472616465206e6f7420656e61626c6564000000000081525060200191505060405180910390fd5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8857600090505b612d9484848484612fa9565b50505050565b6000838311158290612e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e0c578082015181840152602081019050612df1565b50505050905090810190601f168015612e395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000612e676132ba565b91509150612e7e8183612e8590919063ffffffff16565b9250505090565b6000612ec783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061354b565b905092915050565b600080828401905083811015612f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000612f6b88613611565b915091506000806000612f868b85612f81612e5a565b613665565b925092509250828282878799509950995099509950505050505091939590929450565b80612fb757612fb66136fb565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306f5761306a84848461373e565b6132a6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131125750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613127576131228484846139c0565b6132a5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131cb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e0576131db848484613c42565b6132a4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132825750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561329757613292848484613e2f565b6132a3565b6132a2848484613c42565b5b5b5b5b806132b4576132b3614146565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561350e578260036000600884815481106132ed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133d4575081600460006008848154811061336c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133eb57600a5460095494509450505050613547565b61347460036000600884815481106133ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461415a90919063ffffffff16565b92506134ff600460006008848154811061348a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361415a90919063ffffffff16565b915080806001019150506132ce565b50613526600954600a54612e8590919063ffffffff16565b82101561353e57600a54600954935093505050613547565b81819350935050505b9091565b600080831182906135f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135bc5780820151818401526020810190506135a1565b50505050905090810190601f1680156135e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161360357fe5b049050809150509392505050565b600080600061361f846141a4565b9050600061362c856141d5565b9050600061365582613647858961415a90919063ffffffff16565b61415a90919063ffffffff16565b9050808394509450505050915091565b60008060008061367e858861420690919063ffffffff16565b90506000613695868861420690919063ffffffff16565b905060006136a2896141d5565b905060006136b9888361420690919063ffffffff16565b905060006136e2826136d4868861415a90919063ffffffff16565b61415a90919063ffffffff16565b9050848185975097509750505050505093509350939050565b600060105414801561370f57506000601254145b156137195761373c565b601054601181905550601254601381905550600060108190555060006012819055505b565b600080600080600061374f86612f57565b945094509450945094506137ab86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061384085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d584600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613923876141d5565b90506000613941613932612e5a565b8361420690919063ffffffff16565b905061394f8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060006139d186612f57565b94509450945094509450613a2d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac282600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b5784600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ba5876141d5565b90506000613bc3613bb4612e5a565b8361420690919063ffffffff16565b9050613bd18584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613c5386612f57565b94509450945094509450613caf85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4484600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613d92876141d5565b90506000613db0613da1612e5a565b8361420690919063ffffffff16565b9050613dbe8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613e4086612f57565b94509450945094509450613e9c86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fc682600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405b84600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140a9876141d5565b905060006140c76140b8612e5a565b8361420690919063ffffffff16565b90506140d58584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601154601081905550601354601281905550565b600061419c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d9a565b905092915050565b60006141ce60646141c06010548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b60006141ff60646141f16012548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b6000808314156142195760009050614286565b600082840290508284828161422a57fe5b0414614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143a66021913960400191505060405180910390fd5b809150505b92915050565b6142b3826142a586600a5461415a90919063ffffffff16565b61415a90919063ffffffff16565b600a819055506142ce83600b54612ecf90919063ffffffff16565b600b819055506142e981600c54612ecf90919063ffffffff16565b600c819055506143048160095461415a90919063ffffffff16565b6009819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e7445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bd6da28bbe140577ed7debc85d76b55c4ac0fcdc13b578e30a69a60e7de4ae1964736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102315760003560e01c806370a0823111610130578063c0b0fda2116100b8578063dd62ed3e1161007c578063dd62ed3e14610a33578063ea2f0b3714610aab578063ec28438a14610aef578063f2fde38b14610b1d578063fb1eb14b14610b6157610231565b8063c0b0fda214610965578063cea2695814610983578063d49d5181146109b1578063d621e813146109cf578063db4cf1e0146109ef57610231565b80638da5cb5b116100ff5780638da5cb5b146107c857806395d89b41146107fc578063a457c2d71461087f578063a9059cbb146108e3578063af465a271461094757610231565b806370a08231146106ee578063715018a61461074657806388f82020146107505780638c0b5e22146107aa57610231565b80633685d419116101be5780634549b039116101825780634549b039146105b657806345e0b9d41461060457806352390c02146106225780635342acb4146106665780636bebaf97146106c057610231565b80633685d4191461048e57806339509351146104d25780633b124fe7146105365780633c9f861d14610554578063437823ec1461057257610231565b806318160ddd1161020557806318160ddd1461034557806318621fe51461036357806323b872dd146103a75780632d8381191461042b578063313ce5671461046d57610231565b806299d3861461023657806306fdde0314610240578063095ea7b3146102c357806313114a9d14610327575b600080fd5b61023e610b7f565b005b610248610c64565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028857808201518184015260208101905061026d565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030f600480360360408110156102d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d06565b60405180821515815260200191505060405180910390f35b61032f610d24565b6040518082815260200191505060405180910390f35b61034d610d2e565b6040518082815260200191505060405180910390f35b6103a56004803603602081101561037957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d38565b005b610413600480360360608110156103bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e5b565b60405180821515815260200191505060405180910390f35b6104576004803603602081101561044157600080fd5b8101908080359060200190929190505050611039565b6040518082815260200191505060405180910390f35b6104756110bd565b604051808260ff16815260200191505060405180910390f35b6104d0600480360360208110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d4565b005b61051e600480360360408110156104e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061145e565b60405180821515815260200191505060405180910390f35b61053e611511565b6040518082815260200191505060405180910390f35b61055c611517565b6040518082815260200191505060405180910390f35b6105b46004803603602081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611521565b005b6105ee600480360360408110156105cc57600080fd5b8101908080359060200190929190803515159060200190929190505050611644565b6040518082815260200191505060405180910390f35b61060c6116f9565b6040518082815260200191505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ff565b005b6106a86004803603602081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a19565b60405180821515815260200191505060405180910390f35b6106ec600480360360208110156106d657600080fd5b8101908080359060200190929190505050611a6f565b005b6107306004803603602081101561070457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bc2565b6040518082815260200191505060405180910390f35b61074e611cad565b005b6107926004803603602081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e33565b60405180821515815260200191505060405180910390f35b6107b2611e89565b6040518082815260200191505060405180910390f35b6107d0611e8f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610804611eb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610844578082015181840152602081019050610829565b50505050905090810190601f1680156108715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108cb6004803603604081101561089557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f5a565b60405180821515815260200191505060405180910390f35b61092f600480360360408110156108f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612027565b60405180821515815260200191505060405180910390f35b61094f612151565b6040518082815260200191505060405180910390f35b61096d612157565b6040518082815260200191505060405180910390f35b6109af6004803603602081101561099957600080fd5b810190808035906020019092919050505061215d565b005b6109b96122b0565b6040518082815260200191505060405180910390f35b6109d76122b6565b60405180821515815260200191505060405180910390f35b610a3160048036036020811015610a0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c9565b005b610a9560048036036040811015610a4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ec565b6040518082815260200191505060405180910390f35b610aed60048036036020811015610ac157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b610b1b60048036036020811015610b0557600080fd5b8101908080359060200190929190505050612596565b005b610b5f60048036036020811015610b3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612668565b005b610b69612873565b6040518082815260200191505060405180910390f35b610b87612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601460006101000a81548160ff021916908315150217905550565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cfc5780601f10610cd157610100808354040283529160200191610cfc565b820191906000526020600020905b815481529060010190602001808311610cdf57829003601f168201915b5050505050905090565b6000610d1a610d13612879565b8484612881565b6001905092915050565b6000600b54905090565b6000600954905090565b610d40612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f015750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f6257601654821115610f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b610f6d848484612a78565b61102e84610f79612879565b611029856040518060600160405280602881526020016143c760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fdf612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b600190509392505050565b6000600a54821115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614334602a913960400191505060405180910390fd5b60006110a0612e5a565b90506110b58184612e8590919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6110dc612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661125b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561145a578173ffffffffffffffffffffffffffffffffffffffff166008828154811061128f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561144d576008600160088054905003815481106112eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061132357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061141357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561145a565b808060010191505061125e565b5050565b600061150761146b612879565b84611502856005600061147c612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b612881565b6001905092915050565b60105481565b6000600c54905090565b611529612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156116be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816116dd5760006116ce84612f57565b505050509050809150506116f3565b60006116e884612f57565b505050915050809150505b92915050565b600a5481565b611707612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561195b57611917600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611a77612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601254820190506014811115611bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816010819055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5d57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ca8565b611ca5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b90505b919050565b611cb5612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f505780601f10611f2557610100808354040283529160200191611f50565b820191906000526020600020905b815481529060010190602001808311611f3357829003601f168201915b5050505050905090565b600061201d611f67612879565b84612018856040518060600160405280602581526020016144886025913960056000611f91612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b6001905092915050565b600060156000612035612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213557601654821115612134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b612147612140612879565b8484612a78565b6001905092915050565b60095481565b60125481565b612165612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008160105401905060148111156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816012819055505050565b60001981565b601460009054906101000a900460ff1681565b6122d1612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247b612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61259e612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b612670612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061435e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061443d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561298d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143846022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612afe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806144186025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143116023913960400191505060405180910390fd5b60008111612bdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143ef6029913960400191505060405180910390fd5b601460009054906101000a900460ff16612cd757612bf9611e8f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c645750612c35611e8f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7472616e736665723a207472616465206e6f7420656e61626c6564000000000081525060200191505060405180910390fd5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8857600090505b612d9484848484612fa9565b50505050565b6000838311158290612e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e0c578082015181840152602081019050612df1565b50505050905090810190601f168015612e395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000612e676132ba565b91509150612e7e8183612e8590919063ffffffff16565b9250505090565b6000612ec783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061354b565b905092915050565b600080828401905083811015612f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000612f6b88613611565b915091506000806000612f868b85612f81612e5a565b613665565b925092509250828282878799509950995099509950505050505091939590929450565b80612fb757612fb66136fb565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306f5761306a84848461373e565b6132a6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131125750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613127576131228484846139c0565b6132a5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131cb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e0576131db848484613c42565b6132a4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132825750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561329757613292848484613e2f565b6132a3565b6132a2848484613c42565b5b5b5b5b806132b4576132b3614146565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561350e578260036000600884815481106132ed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133d4575081600460006008848154811061336c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133eb57600a5460095494509450505050613547565b61347460036000600884815481106133ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461415a90919063ffffffff16565b92506134ff600460006008848154811061348a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361415a90919063ffffffff16565b915080806001019150506132ce565b50613526600954600a54612e8590919063ffffffff16565b82101561353e57600a54600954935093505050613547565b81819350935050505b9091565b600080831182906135f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135bc5780820151818401526020810190506135a1565b50505050905090810190601f1680156135e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161360357fe5b049050809150509392505050565b600080600061361f846141a4565b9050600061362c856141d5565b9050600061365582613647858961415a90919063ffffffff16565b61415a90919063ffffffff16565b9050808394509450505050915091565b60008060008061367e858861420690919063ffffffff16565b90506000613695868861420690919063ffffffff16565b905060006136a2896141d5565b905060006136b9888361420690919063ffffffff16565b905060006136e2826136d4868861415a90919063ffffffff16565b61415a90919063ffffffff16565b9050848185975097509750505050505093509350939050565b600060105414801561370f57506000601254145b156137195761373c565b601054601181905550601254601381905550600060108190555060006012819055505b565b600080600080600061374f86612f57565b945094509450945094506137ab86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061384085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d584600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613923876141d5565b90506000613941613932612e5a565b8361420690919063ffffffff16565b905061394f8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060006139d186612f57565b94509450945094509450613a2d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac282600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b5784600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ba5876141d5565b90506000613bc3613bb4612e5a565b8361420690919063ffffffff16565b9050613bd18584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613c5386612f57565b94509450945094509450613caf85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4484600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613d92876141d5565b90506000613db0613da1612e5a565b8361420690919063ffffffff16565b9050613dbe8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613e4086612f57565b94509450945094509450613e9c86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fc682600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405b84600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140a9876141d5565b905060006140c76140b8612e5a565b8361420690919063ffffffff16565b90506140d58584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601154601081905550601354601281905550565b600061419c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d9a565b905092915050565b60006141ce60646141c06010548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b60006141ff60646141f16012548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b6000808314156142195760009050614286565b600082840290508284828161422a57fe5b0414614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143a66021913960400191505060405180910390fd5b809150505b92915050565b6142b3826142a586600a5461415a90919063ffffffff16565b61415a90919063ffffffff16565b600a819055506142ce83600b54612ecf90919063ffffffff16565b600b819055506142e981600c54612ecf90919063ffffffff16565b600c819055506143048160095461415a90919063ffffffff16565b6009819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e7445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bd6da28bbe140577ed7debc85d76b55c4ac0fcdc13b578e30a69a60e7de4ae1964736f6c634300060c0033
Deployed Bytecode Sourcemap
18672:14852:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33433:80;;;:::i;:::-;;20024:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21788:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23066:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20301:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21175:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21957:470;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23703:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20210:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24305:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22435:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19487:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23165:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25550:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23261:434;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19227:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23964:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29154:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25795:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20404:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18114:148;;;:::i;:::-;;22938:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20795:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17471:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20115:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22661:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21295:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19173:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19574:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26022:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19125:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19660:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21054:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21637:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25673:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20872:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18417:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19282:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33433:80;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33501:4:::1;33486:12;;:19;;;;;;;;;;;;;;;;;;33433:80::o:0;20024:83::-;20061:13;20094:5;20087:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20024:83;:::o;21788:161::-;21863:4;21880:39;21889:12;:10;:12::i;:::-;21903:7;21912:6;21880:8;:39::i;:::-;21937:4;21930:11;;21788:161;;;;:::o;23066:87::-;23108:7;23135:10;;23128:17;;23066:87;:::o;20301:95::-;20354:7;20381;;20374:14;;20301:95;:::o;21175:112::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21274:5:::1;21242:20;:29;21263:7;21242:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;21175:112:::0;:::o;21957:470::-;22055:4;22073:20;:28;22094:6;22073:28;;;;;;;;;;;;;;;;;;;;;;;;;22072:29;:65;;;;;22106:20;:31;22127:9;22106:31;;;;;;;;;;;;;;;;;;;;;;;;;22105:32;22072:65;22068:163;;;22168:11;;22158:6;:21;;22150:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22068:163;22237:36;22247:6;22255:9;22266:6;22237:9;:36::i;:::-;22280:121;22289:6;22297:12;:10;:12::i;:::-;22311:89;22349:6;22311:89;;;;;;;;;;;;;;;;;:11;:19;22323:6;22311:19;;;;;;;;;;;;;;;:33;22331:12;:10;:12::i;:::-;22311:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22280:8;:121::i;:::-;22415:4;22408:11;;21957:470;;;;;:::o;23703:253::-;23769:7;23808;;23797;:18;;23789:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23873:19;23896:10;:8;:10::i;:::-;23873:33;;23924:24;23936:11;23924:7;:11;;:24;;;;:::i;:::-;23917:31;;;23703:253;;;:::o;20210:83::-;20251:5;20276:9;;;;;;;;;;;20269:16;;20210:83;:::o;24305:479::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24387:11:::1;:20;24399:7;24387:20;;;;;;;;;;;;;;;;;;;;;;;;;24379:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24455:9;24450:327;24474:9;:16;;;;24470:1;:20;24450:327;;;24532:7;24516:23;;:9;24526:1;24516:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;24512:254;;;24575:9;24604:1;24585:9;:16;;;;:20;24575:31;;;;;;;;;;;;;;;;;;;;;;;;;24560:9;24570:1;24560:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24644:1;24625:7;:16;24633:7;24625:16;;;;;;;;;;;;;;;:20;;;;24687:5;24664:11;:20;24676:7;24664:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24711:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24745:5;;24512:254;24492:3;;;;;;;24450:327;;;;24305:479:::0;:::o;22435:218::-;22523:4;22540:83;22549:12;:10;:12::i;:::-;22563:7;22572:50;22611:10;22572:11;:25;22584:12;:10;:12::i;:::-;22572:25;;;;;;;;;;;;;;;:34;22598:7;22572:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;22540:8;:83::i;:::-;22641:4;22634:11;;22435:218;;;;:::o;19487:26::-;;;;:::o;23165:88::-;23207:7;23234:11;;23227:18;;23165:88;:::o;25550:111::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25649:4:::1;25619:18;:27;25638:7;25619:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;25550:111:::0;:::o;23261:434::-;23351:7;23390;;23379;:18;;23371:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23449:17;23444:244;;23484:15;23507:19;23518:7;23507:10;:19::i;:::-;23483:43;;;;;;23548:7;23541:14;;;;;23444:244;23590:23;23620:19;23631:7;23620:10;:19::i;:::-;23588:51;;;;;;23661:15;23654:22;;;23261:434;;;;;:::o;19227:48::-;;;;:::o;23964:333::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24047:11:::1;:20;24059:7;24047:20;;;;;;;;;;;;;;;;;;;;;;;;;24046:21;24038:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24132:1;24113:7;:16;24121:7;24113:16;;;;;;;;;;;;;;;;:20;24110:108;;;24169:37;24189:7;:16;24197:7;24189:16;;;;;;;;;;;;;;;;24169:19;:37::i;:::-;24150:7;:16;24158:7;24150:16;;;;;;;;;;;;;;;:56;;;;24110:108;24251:4;24228:11;:20;24240:7;24228:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;24266:9;24281:7;24266:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23964:333:::0;:::o;29154:123::-;29218:4;29242:18;:27;29261:7;29242:27;;;;;;;;;;;;;;;;;;;;;;;;;29235:34;;29154:123;;;:::o;25795:215::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25872:15:::1;25899:8;;25890:6;:17;25872:35;;25938:2;25927:7;:13;;25918:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25996:6;25986:7;:16;;;;17753:1;25795:215:::0;:::o;20404:198::-;20470:7;20494:11;:20;20506:7;20494:20;;;;;;;;;;;;;;;;;;;;;;;;;20490:49;;;20523:7;:16;20531:7;20523:16;;;;;;;;;;;;;;;;20516:23;;;;20490:49;20557:37;20577:7;:16;20585:7;20577:16;;;;;;;;;;;;;;;;20557:19;:37::i;:::-;20550:44;;20404:198;;;;:::o;18114:148::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18221:1:::1;18184:40;;18205:6;::::0;::::1;;;;;;;;18184:40;;;;;;;;;;;;18252:1;18235:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;18114:148::o:0;22938:120::-;23006:4;23030:11;:20;23042:7;23030:20;;;;;;;;;;;;;;;;;;;;;;;;;23023:27;;22938:120;;;:::o;20795:26::-;;;;:::o;17471:79::-;17509:7;17536:6;;;;;;;;;;;17529:13;;17471:79;:::o;20115:87::-;20154:13;20187:7;20180:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20115:87;:::o;22661:269::-;22754:4;22771:129;22780:12;:10;:12::i;:::-;22794:7;22803:96;22842:15;22803:96;;;;;;;;;;;;;;;;;:11;:25;22815:12;:10;:12::i;:::-;22803:25;;;;;;;;;;;;;;;:34;22829:7;22803:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;22771:8;:129::i;:::-;22918:4;22911:11;;22661:269;;;;:::o;21295:334::-;21373:4;21391:20;:34;21412:12;:10;:12::i;:::-;21391:34;;;;;;;;;;;;;;;;;;;;;;;;;21390:35;:71;;;;;21430:20;:31;21451:9;21430:31;;;;;;;;;;;;;;;;;;;;;;;;;21429:32;21390:71;21386:169;;;21492:11;;21482:6;:21;;21474:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21386:169;21561:42;21571:12;:10;:12::i;:::-;21585:9;21596:6;21561:9;:42::i;:::-;21617:4;21610:11;;21295:334;;;;:::o;19173:47::-;;;;:::o;19574:27::-;;;;:::o;26022:217::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26098:15:::1;26127:7;26116;;:18;26098:36;;26165:2;26154:7;:13;;26145:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26224:7;26213:8;:18;;;;17753:1;26022:217:::0;:::o;19125:41::-;19164:1;19155:11;19125:41;:::o;19660:24::-;;;;;;;;;;;;;:::o;21054:113::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21155:4:::1;21123:20;:29;21144:7;21123:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21054:113:::0;:::o;21637:143::-;21718:7;21745:11;:18;21757:5;21745:18;;;;;;;;;;;;;;;:27;21764:7;21745:27;;;;;;;;;;;;;;;;21738:34;;21637:143;;;;:::o;25673:110::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25770:5:::1;25740:18;:27;25759:7;25740:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25673:110:::0;:::o;20872:106::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20958:12:::1;20944:11;:26;;;;20872:106:::0;:::o;18417:244::-;17693:12;:10;:12::i;:::-;17683:22;;:6;;;;;;;;;;:22;;;17675:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18526:1:::1;18506:22;;:8;:22;;;;18498:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18616:8;18587:38;;18608:6;::::0;::::1;;;;;;;;18587:38;;;;;;;;;;;;18645:8;18636:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;18417:244:::0;:::o;19282:25::-;;;;:::o;9879:106::-;9932:15;9967:10;9960:17;;9879:106;:::o;29285:337::-;29395:1;29378:19;;:5;:19;;;;29370:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29476:1;29457:21;;:7;:21;;;;29449:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29560:6;29530:11;:18;29542:5;29530:18;;;;;;;;;;;;;;;:27;29549:7;29530:27;;;;;;;;;;;;;;;:36;;;;29598:7;29582:32;;29591:5;29582:32;;;29607:6;29582:32;;;;;;;;;;;;;;;;;;29285:337;;;:::o;29630:896::-;29768:1;29752:18;;:4;:18;;;;29744:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29845:1;29831:16;;:2;:16;;;;29823:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29915:1;29906:6;:10;29898:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29988:12;;;;;;;;;;;29983:118;;30033:7;:5;:7::i;:::-;30025:15;;:4;:15;;;:32;;;;30050:7;:5;:7::i;:::-;30044:13;;:2;:13;;;30025:32;30017:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29983:118;30174:12;30189:4;30174:19;;30301:18;:24;30320:4;30301:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;30329:18;:22;30348:2;30329:22;;;;;;;;;;;;;;;;;;;;;;;;;30301:50;30298:96;;;30377:5;30367:15;;30298:96;30480:38;30495:4;30500:2;30503:6;30510:7;30480:14;:38::i;:::-;29630:896;;;;:::o;6289:192::-;6375:7;6408:1;6403;:6;;6411:12;6395:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:9;6451:1;6447;:5;6435:17;;6472:1;6465:8;;;6289:192;;;;;:::o;27710:163::-;27751:7;27772:15;27789;27808:19;:17;:19::i;:::-;27771:56;;;;27845:20;27857:7;27845;:11;;:20;;;;:::i;:::-;27838:27;;;;27710:163;:::o;7687:132::-;7745:7;7772:39;7776:1;7779;7772:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7765:46;;7687:132;;;;:::o;5386:181::-;5444:7;5464:9;5480:1;5476;:5;5464:17;;5505:1;5500;:6;;5492:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5558:1;5551:8;;;5386:181;;;;:::o;26530:366::-;26589:7;26598;26607;26616;26625;26646:23;26671:12;26687:20;26699:7;26687:11;:20::i;:::-;26645:62;;;;26719:15;26736:23;26761:12;26777:38;26789:7;26798:4;26804:10;:8;:10::i;:::-;26777:11;:38::i;:::-;26718:97;;;;;;26834:7;26843:15;26860:4;26866:15;26883:4;26826:62;;;;;;;;;;;;;;;26530:366;;;;;;;:::o;30613:834::-;30724:7;30720:40;;30746:14;:12;:14::i;:::-;30720:40;30785:11;:19;30797:6;30785:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30809:11;:22;30821:9;30809:22;;;;;;;;;;;;;;;;;;;;;;;;;30808:23;30785:46;30781:597;;;30848:48;30870:6;30878:9;30889:6;30848:21;:48::i;:::-;30781:597;;;30919:11;:19;30931:6;30919:19;;;;;;;;;;;;;;;;;;;;;;;;;30918:20;:46;;;;;30942:11;:22;30954:9;30942:22;;;;;;;;;;;;;;;;;;;;;;;;;30918:46;30914:464;;;30981:46;31001:6;31009:9;31020:6;30981:19;:46::i;:::-;30914:464;;;31050:11;:19;31062:6;31050:19;;;;;;;;;;;;;;;;;;;;;;;;;31049:20;:47;;;;;31074:11;:22;31086:9;31074:22;;;;;;;;;;;;;;;;;;;;;;;;;31073:23;31049:47;31045:333;;;31113:44;31131:6;31139:9;31150:6;31113:17;:44::i;:::-;31045:333;;;31179:11;:19;31191:6;31179:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31202:11;:22;31214:9;31202:22;;;;;;;;;;;;;;;;;;;;;;;;;31179:45;31175:203;;;31241:48;31263:6;31271:9;31282:6;31241:21;:48::i;:::-;31175:203;;;31322:44;31340:6;31348:9;31359:6;31322:17;:44::i;:::-;31175:203;31045:333;30914:464;30781:597;31402:7;31398:41;;31424:15;:13;:15::i;:::-;31398:41;30613:834;;;;:::o;27881:561::-;27931:7;27940;27960:15;27978:7;;27960:25;;27996:15;28014:7;;27996:25;;28043:9;28038:289;28062:9;:16;;;;28058:1;:20;28038:289;;;28128:7;28104;:21;28112:9;28122:1;28112:12;;;;;;;;;;;;;;;;;;;;;;;;;28104:21;;;;;;;;;;;;;;;;:31;:66;;;;28163:7;28139;:21;28147:9;28157:1;28147:12;;;;;;;;;;;;;;;;;;;;;;;;;28139:21;;;;;;;;;;;;;;;;:31;28104:66;28100:97;;;28180:7;;28189;;28172:25;;;;;;;;;28100:97;28222:34;28234:7;:21;28242:9;28252:1;28242:12;;;;;;;;;;;;;;;;;;;;;;;;;28234:21;;;;;;;;;;;;;;;;28222:7;:11;;:34;;;;:::i;:::-;28212:44;;28281:34;28293:7;:21;28301:9;28311:1;28301:12;;;;;;;;;;;;;;;;;;;;;;;;;28293:21;;;;;;;;;;;;;;;;28281:7;:11;;:34;;;;:::i;:::-;28271:44;;28080:3;;;;;;;28038:289;;;;28351:20;28363:7;;28351;;:11;;:20;;;;:::i;:::-;28341:7;:30;28337:61;;;28381:7;;28390;;28373:25;;;;;;;;28337:61;28417:7;28426;28409:25;;;;;;27881:561;;;:::o;8315:278::-;8401:7;8433:1;8429;:5;8436:12;8421:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8460:9;8476:1;8472;:5;;;;;;8460:17;;8584:1;8577:8;;;8315:278;;;;;:::o;26904:302::-;26964:7;26973;26993:12;27008:24;27024:7;27008:15;:24::i;:::-;26993:39;;27043:16;27062:25;27079:7;27062:16;:25::i;:::-;27043:44;;27100:23;27126:31;27148:8;27126:17;27138:4;27126:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;27100:57;;27176:15;27193:4;27168:30;;;;;;;26904:302;;;:::o;27218:478::-;27313:7;27322;27331;27351:15;27369:24;27381:11;27369:7;:11;;:24;;;;:::i;:::-;27351:42;;27404:12;27419:21;27428:11;27419:4;:8;;:21;;;;:::i;:::-;27404:36;;27461:16;27480:25;27497:7;27480:16;:25::i;:::-;27461:44;;27516:16;27535:25;27548:11;27535:8;:12;;:25;;;;:::i;:::-;27516:44;;27581:23;27607:31;27629:8;27607:17;27619:4;27607:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;27581:57;;27657:7;27666:15;27683:4;27649:39;;;;;;;;;;;27218:478;;;;;;;:::o;28784:231::-;28841:1;28830:7;;:12;:29;;;;;28858:1;28846:8;;:13;28830:29;28827:42;;;28862:7;;28827:42;28907:7;;28889:15;:25;;;;28944:8;;28925:16;:27;;;;28983:1;28973:7;:11;;;;29006:1;28995:8;:12;;;;28784:231;:::o;32763:662::-;32866:15;32883:23;32908:12;32922:23;32947:12;32963:19;32974:7;32963:10;:19::i;:::-;32865:117;;;;;;;;;;33011:28;33031:7;33011;:15;33019:6;33011:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32993:7;:15;33001:6;32993:15;;;;;;;;;;;;;;;:46;;;;33068:28;33088:7;33068;:15;33076:6;33068:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33050:7;:15;33058:6;33050:15;;;;;;;;;;;;;;;:46;;;;33128:39;33151:15;33128:7;:18;33136:9;33128:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33107:7;:18;33115:9;33107:18;;;;;;;;;;;;;;;:60;;;;33191:16;33210:25;33227:7;33210:16;:25::i;:::-;33191:44;;33246:16;33265:24;33278:10;:8;:10::i;:::-;33265:8;:12;;:24;;;;:::i;:::-;33246:43;;33314;33326:4;33332;33338:8;33347;33314:11;:43::i;:::-;33390:9;33373:44;;33382:6;33373:44;;;33401:15;33373:44;;;;;;;;;;;;;;;;;;32763:662;;;;;;;;;;:::o;32082:667::-;32183:15;32200:23;32225:12;32239:23;32264:12;32280:19;32291:7;32280:10;:19::i;:::-;32182:117;;;;;;;;;;32328:28;32348:7;32328;:15;32336:6;32328:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32310:7;:15;32318:6;32310:15;;;;;;;;;;;;;;;:46;;;;32388:39;32411:15;32388:7;:18;32396:9;32388:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32367:7;:18;32375:9;32367:18;;;;;;;;;;;;;;;:60;;;;32459:39;32482:15;32459:7;:18;32467:9;32459:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32438:7;:18;32446:9;32438:18;;;;;;;;;;;;;;;:60;;;;32523:16;32542:25;32559:7;32542:16;:25::i;:::-;32523:44;;32578:16;32597:24;32610:10;:8;:10::i;:::-;32597:8;:12;;:24;;;;:::i;:::-;32578:43;;32638;32650:4;32656;32662:8;32671;32638:11;:43::i;:::-;32714:9;32697:44;;32706:6;32697:44;;;32725:15;32697:44;;;;;;;;;;;;;;;;;;32082:667;;;;;;;;;;:::o;31455:603::-;31554:15;31571:23;31596:12;31610:23;31635:12;31651:19;31662:7;31651:10;:19::i;:::-;31553:117;;;;;;;;;;31699:28;31719:7;31699;:15;31707:6;31699:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31681:7;:15;31689:6;31681:15;;;;;;;;;;;;;;;:46;;;;31759:39;31782:15;31759:7;:18;31767:9;31759:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31738:7;:18;31746:9;31738:18;;;;;;;;;;;;;;;:60;;;;31819:16;31838:25;31855:7;31838:16;:25::i;:::-;31819:44;;31874:16;31893:24;31906:10;:8;:10::i;:::-;31893:8;:12;;:24;;;;:::i;:::-;31874:43;;31937;31949:4;31955;31961:8;31970;31937:11;:43::i;:::-;32023:9;32006:44;;32015:6;32006:44;;;32034:15;32006:44;;;;;;;;;;;;;;;;;;31455:603;;;;;;;;;;:::o;24796:742::-;24899:15;24916:23;24941:12;24955:23;24980:12;24996:19;25007:7;24996:10;:19::i;:::-;24898:117;;;;;;;;;;25044:28;25064:7;25044;:15;25052:6;25044:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25026:7;:15;25034:6;25026:15;;;;;;;;;;;;;;;:46;;;;25101:28;25121:7;25101;:15;25109:6;25101:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25083:7;:15;25091:6;25083:15;;;;;;;;;;;;;;;:46;;;;25161:39;25184:15;25161:7;:18;25169:9;25161:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25140:7;:18;25148:9;25140:18;;;;;;;;;;;;;;;:60;;;;25232:39;25255:15;25232:7;:18;25240:9;25232:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25211:7;:18;25219:9;25211:18;;;;;;;;;;;;;;;:60;;;;25301:16;25320:25;25337:7;25320:16;:25::i;:::-;25301:44;;25356:16;25375:24;25388:10;:8;:10::i;:::-;25375:8;:12;;:24;;;;:::i;:::-;25356:43;;25427;25439:4;25445;25451:8;25460;25427:11;:43::i;:::-;25503:9;25486:44;;25495:6;25486:44;;;25514:15;25486:44;;;;;;;;;;;;;;;;;;24796:742;;;;;;;;;;:::o;29027:115::-;29081:15;;29071:7;:25;;;;29118:16;;29107:8;:27;;;;29027:115::o;5850:136::-;5908:7;5935:43;5939:1;5942;5935:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5928:50;;5850:136;;;;:::o;28450:154::-;28514:7;28541:55;28580:5;28541:20;28553:7;;28541;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;28534:62;;28450:154;;;:::o;28616:156::-;28681:7;28708:56;28748:5;28708:21;28720:8;;28708:7;:11;;:21;;;;:::i;:::-;:25;;:56;;;;:::i;:::-;28701:63;;28616:156;;;:::o;6740:471::-;6798:7;7048:1;7043;:6;7039:47;;;7073:1;7066:8;;;;7039:47;7098:9;7114:1;7110;:5;7098:17;;7143:1;7138;7134;:5;;;;;;:10;7126:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7202:1;7195:8;;;6740:471;;;;;:::o;26247:275::-;26356:28;26378:5;26356:17;26368:4;26356:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;26346:7;:38;;;;26408:20;26423:4;26408:10;;:14;;:20;;;;:::i;:::-;26395:10;:33;;;;26453:22;26469:5;26453:11;;:15;;:22;;;;:::i;:::-;26439:11;:36;;;;26496:18;26508:5;26496:7;;:11;;:18;;;;:::i;:::-;26486:7;:28;;;;26247:275;;;;:::o
Swarm Source
ipfs://bd6da28bbe140577ed7debc85d76b55c4ac0fcdc13b578e30a69a60e7de4ae19
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.