Feature Tip: Add private address tag to any address under My Name Tag !
Bishu Finance: BISHU Token
Source Code
Token Contract
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 6,480 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 24557527 | 6 days ago | IN | 0 ETH | 0.0000139 | ||||
| Approve | 24479554 | 17 days ago | IN | 0 ETH | 0.00000572 | ||||
| Approve | 24302070 | 41 days ago | IN | 0 ETH | 0.00000533 | ||||
| Approve | 24290907 | 43 days ago | IN | 0 ETH | 0.00000849 | ||||
| Approve | 24281926 | 44 days ago | IN | 0 ETH | 0.00000574 | ||||
| Approve | 24250314 | 49 days ago | IN | 0 ETH | 0.00000168 | ||||
| Approve | 24234975 | 51 days ago | IN | 0 ETH | 0.00000934 | ||||
| Approve | 24234972 | 51 days ago | IN | 0 ETH | 0.00000998 | ||||
| Approve | 24228437 | 52 days ago | IN | 0 ETH | 0.00000525 | ||||
| Approve | 24194361 | 56 days ago | IN | 0 ETH | 0.00000167 | ||||
| Approve | 24002390 | 83 days ago | IN | 0 ETH | 0.0000435 | ||||
| Approve | 23941596 | 92 days ago | IN | 0 ETH | 0.00004398 | ||||
| Approve | 23941593 | 92 days ago | IN | 0 ETH | 0.00004394 | ||||
| Approve | 23937969 | 92 days ago | IN | 0 ETH | 0.00000121 | ||||
| Approve | 23874520 | 101 days ago | IN | 0 ETH | 0.00002224 | ||||
| Approve | 23874497 | 101 days ago | IN | 0 ETH | 0.00009709 | ||||
| Approve | 23855162 | 104 days ago | IN | 0 ETH | 0.00000622 | ||||
| Transfer | 23712355 | 124 days ago | IN | 0 ETH | 0.000093 | ||||
| Approve | 23712338 | 124 days ago | IN | 0 ETH | 0.00002106 | ||||
| Approve | 23687790 | 127 days ago | IN | 0 ETH | 0.00010667 | ||||
| Approve | 23659371 | 131 days ago | IN | 0 ETH | 0.00002705 | ||||
| Approve | 23645870 | 133 days ago | IN | 0 ETH | 0.00000887 | ||||
| Approve | 23618140 | 137 days ago | IN | 0 ETH | 0.00001107 | ||||
| Approve | 23618137 | 137 days ago | IN | 0 ETH | 0.00001105 | ||||
| Approve | 23618134 | 137 days ago | IN | 0 ETH | 0.00001098 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24601595 | 2 hrs ago | 0.0000014 ETH | ||||
| Transfer | 24601595 | 2 hrs ago | 0.0000014 ETH | ||||
| Transfer | 24601595 | 2 hrs ago | 0.0000028 ETH | ||||
| Transfer | 24565415 | 5 days ago | 0.00002374 ETH | ||||
| Transfer | 24565415 | 5 days ago | 0.00002374 ETH | ||||
| Transfer | 24565415 | 5 days ago | 0.00004748 ETH | ||||
| Transfer | 24557527 | 6 days ago | 0.00001704 ETH | ||||
| Transfer | 24557527 | 6 days ago | 0.00001704 ETH | ||||
| Transfer | 24557527 | 6 days ago | 0.00003408 ETH | ||||
| Transfer | 24482135 | 16 days ago | 0.0000142 ETH | ||||
| Transfer | 24482135 | 16 days ago | 0.0000142 ETH | ||||
| Transfer | 24482135 | 16 days ago | 0.00002841 ETH | ||||
| Transfer | 24482122 | 16 days ago | 0.0000142 ETH | ||||
| Transfer | 24482122 | 16 days ago | 0.0000142 ETH | ||||
| Transfer | 24482122 | 16 days ago | 0.00002841 ETH | ||||
| Transfer | 24479554 | 17 days ago | 0.00002028 ETH | ||||
| Transfer | 24479554 | 17 days ago | 0.00002028 ETH | ||||
| Transfer | 24479554 | 17 days ago | 0.00004056 ETH | ||||
| Transfer | 24462759 | 19 days ago | 0.00001515 ETH | ||||
| Transfer | 24462759 | 19 days ago | 0.00001515 ETH | ||||
| Transfer | 24462759 | 19 days ago | 0.0000303 ETH | ||||
| Transfer | 24330414 | 37 days ago | 0.00000043 ETH | ||||
| Transfer | 24330414 | 37 days ago | 0.00000043 ETH | ||||
| Transfer | 24330414 | 37 days ago | 0.00000086 ETH | ||||
| Transfer | 24302183 | 41 days ago | 0.00000866 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BlackKishu
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-04-29
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;
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;
}
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
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);
}
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;
}
}
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);
}
}
}
}
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;
}
function geUnlockTime() public view returns (uint256) {
return _lockTime;
}
//Locks the contract for owner for the amount of time provided
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = now + time;
emit OwnershipTransferred(_owner, address(0));
}
//Unlocks the contract for owner when _lockTime is exceeds
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(now > _lockTime , "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
// Contract implementation
contract BlackKishu 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 private constant MAX = ~uint256(0);
uint256 private _tTotal = 1000000000000 * 10**9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
string private _name = 'Black Kishu Inu';
string private _symbol = 'BISHU';
uint8 private _decimals = 9;
// Tax and charity fees will start at 0 so we don't have a big impact when deploying to Uniswap
// Charity wallet address is null but the method to set the address is exposed
uint256 private _taxFee = 2;
uint256 private _charityFee = 1;
uint256 private _previousTaxFee = _taxFee;
uint256 private _previousCharityFee = _charityFee;
address payable public _charityWalletAddress;
address payable public _marketingWalletAddress;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
bool inSwap = false;
bool public swapEnabled = true;
uint256 private _maxTxAmount = 100000000000000 * 10**9;
// We will set a minimum amount of tokens to be swaped => 5M
uint256 private _numOfTokensToExchangeForCharity = 5 * 10**3 * 10**9;
event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
event SwapEnabledUpdated(bool enabled);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor (address payable charityWalletAddress, address payable marketingWalletAddress) public {
_charityWalletAddress = charityWalletAddress;
_marketingWalletAddress = marketingWalletAddress;
_rOwned[_msgSender()] = _rTotal;
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network
// Create a uniswap pair for this new token
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
// set the rest of the contract variables
uniswapV2Router = _uniswapV2Router;
// 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]);
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function isExcluded(address account) public view returns (bool) {
return _isExcluded[account];
}
function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
_isExcludedFromFee[account] = excluded;
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function deliver(uint256 tAmount) public {
address sender = _msgSender();
require(!_isExcluded[sender], "Excluded addresses cannot call this function");
(uint256 rAmount,,,,,) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rTotal = _rTotal.sub(rAmount);
_tFeeTotal = _tFeeTotal.add(tAmount);
}
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 excludeAccount(address account) external onlyOwner() {
require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
require(!_isExcluded[account], "Account is already excluded");
if(_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeAccount(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 removeAllFee() private {
if(_taxFee == 0 && _charityFee == 0) return;
_previousTaxFee = _taxFee;
_previousCharityFee = _charityFee;
_taxFee = 0;
_charityFee = 0;
}
function restoreAllFee() private {
_taxFee = _previousTaxFee;
_charityFee = _previousCharityFee;
}
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 sender, address recipient, uint256 amount) private {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
if(sender != owner() && recipient != owner())
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
// is the token balance of this contract address over the min number of
// tokens that we need to initiate a swap?
// also, don't get caught in a circular charity event.
// also, don't swap if sender is uniswap pair.
uint256 contractTokenBalance = balanceOf(address(this));
if(contractTokenBalance >= _maxTxAmount)
{
contractTokenBalance = _maxTxAmount;
}
bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForCharity;
if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
// We need to swap the current tokens to ETH and send to the charity wallet
swapTokensForEth(contractTokenBalance);
uint256 contractETHBalance = address(this).balance;
if(contractETHBalance > 0) {
sendETHToCharity(address(this).balance);
}
}
//indicates if fee should be deducted from transfer
bool takeFee = true;
//if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
takeFee = false;
}
//transfer amount, it will take tax and charity fee
_tokenTransfer(sender,recipient,amount,takeFee);
}
function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function sendETHToCharity(uint256 amount) private {
_charityWalletAddress.transfer(amount.div(2));
_marketingWalletAddress.transfer(amount.div(2));
}
// We are exposing these functions to be able to manual swap and send
// in case the token is highly valued and 5M becomes too much
function manualSwap() external onlyOwner() {
uint256 contractBalance = balanceOf(address(this));
swapTokensForEth(contractBalance);
}
function manualSend() external onlyOwner() {
uint256 contractETHBalance = address(this).balance;
sendETHToCharity(contractETHBalance);
}
function setSwapEnabled(bool enabled) external onlyOwner(){
swapEnabled = enabled;
}
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, uint256 tCharity) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeCharity(tCharity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tCharity) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeCharity(tCharity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tCharity) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeCharity(tCharity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tCharity) = _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);
_takeCharity(tCharity);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _takeCharity(uint256 tCharity) private {
uint256 currentRate = _getRate();
uint256 rCharity = tCharity.mul(currentRate);
_rOwned[address(this)] = _rOwned[address(this)].add(rCharity);
if(_isExcluded[address(this)])
_tOwned[address(this)] = _tOwned[address(this)].add(tCharity);
}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
(uint256 tTransferAmount, uint256 tFee, uint256 tCharity) = _getTValues(tAmount, _taxFee, _charityFee);
uint256 currentRate = _getRate();
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tCharity);
}
function _getTValues(uint256 tAmount, uint256 taxFee, uint256 charityFee) private pure returns (uint256, uint256, uint256) {
uint256 tFee = tAmount.mul(taxFee).div(100);
uint256 tCharity = tAmount.mul(charityFee).div(100);
uint256 tTransferAmount = tAmount.sub(tFee).sub(tCharity);
return (tTransferAmount, tFee, tCharity);
}
function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee);
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 _getTaxFee() private view returns(uint256) {
return _taxFee;
}
function _getMaxTxAmount() private view returns(uint256) {
return _maxTxAmount;
}
function _getETHBalance() public view returns(uint256 balance) {
return address(this).balance;
}
function _setTaxFee(uint256 taxFee) external onlyOwner() {
require(taxFee >= 1 && taxFee <= 10, 'taxFee should be in 1 - 10');
_taxFee = taxFee;
}
function _setCharityFee(uint256 charityFee) external onlyOwner() {
require(charityFee >= 1 && charityFee <= 11, 'charityFee should be in 1 - 11');
_charityFee = charityFee;
}
function _setCharityWallet(address payable charityWalletAddress) external onlyOwner() {
_charityWalletAddress = charityWalletAddress;
}
function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
require(maxTxAmount >= 100000000000000e9 , 'maxTxAmount should be greater than 100000000000000e9');
_maxTxAmount = maxTxAmount;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address payable","name":"charityWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_charityWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"charityFee","type":"uint256"}],"name":"_setCharityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"charityWalletAddress","type":"address"}],"name":"_setCharityWallet","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":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c0604052683635c9adc5dea00000600955600954600019816200001f57fe5b0660001903600a556040518060400160405280600f81526020017f426c61636b204b6973687520496e750000000000000000000000000000000000815250600c908051906020019062000074929190620006d8565b506040518060400160405280600581526020017f4249534855000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c2929190620006d8565b506009600e60006101000a81548160ff021916908360ff1602179055506002600f556001601055600f5460115560105460125560006014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff02191690831515021790555069152d02c7e14af680000060155565048c273950006016553480156200014f57600080fd5b506040516200590c3803806200590c833981810160405260408110156200017557600080fd5b8101908080519060200190929190805190602001909291905050506000620001a2620006a760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5460036000620002d9620006a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037757600080fd5b505afa1580156200038c573d6000803e3d6000fd5b505050506040513d6020811015620003a357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041757600080fd5b505afa1580156200042c573d6000803e3d6000fd5b505050506040513d60208110156200044357600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004be57600080fd5b505af1158015620004d3573d6000803e3d6000fd5b505050506040513d6020811015620004ea57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200057e620006af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000637620006a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a35050506200077e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200071b57805160ff19168380011785556200074c565b828001600101855582156200074c579182015b828111156200074b5782518255916020019190600101906200072e565b5b5090506200075b91906200075f565b5090565b5b808211156200077a57600081600090555060010162000760565b5090565b60805160601c60a05160601c615150620007bc6000398061148852806133b9525080610e90528061381352806138ff528061392652506151506000f3fe6080604052600436106102345760003560e01c8063715018a61161012e578063cba0e996116100ab578063f2cc0c181161006f578063f2cc0c1814610c8f578063f2fde38b14610ce0578063f429389014610d31578063f815a84214610d48578063f84354f114610d735761023b565b8063cba0e99614610ada578063d047e4b714610b41578063dd46706414610b92578063dd62ed3e14610bcd578063e01af92c14610c525761023b565b8063a457c2d7116100f2578063a457c2d714610959578063a69df4b5146109ca578063a9059cbb146109e1578063af9549e014610a52578063b6c5232414610aaf5761023b565b8063715018a6146107f557806376d4ab991461080c5780638da5cb5b1461084d57806395d89b411461088e578063a24a8d0f1461091e5761023b565b806339509351116101bc57806351bc3c851161018057806351bc3c85146106aa5780635342acb4146106c15780635880b873146107285780636ddd17131461076357806370a08231146107905761023b565b806339509351146105215780633bd5d173146105925780634144d9e4146105cd5780634549b0391461060e57806349bd5a5e146106695761023b565b806318160ddd1161020357806318160ddd146103ad5780631bbae6e0146103d857806323b872dd146104135780632d838119146104a4578063313ce567146104f35761023b565b806306fdde0314610240578063095ea7b3146102d057806313114a9d146103415780631694505e1461036c5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610dc4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029557808201518184015260208101905061027a565b50505050905090810190601f1680156102c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102dc57600080fd5b50610329600480360360408110156102f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e66565b60405180821515815260200191505060405180910390f35b34801561034d57600080fd5b50610356610e84565b6040518082815260200191505060405180910390f35b34801561037857600080fd5b50610381610e8e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103b957600080fd5b506103c2610eb2565b6040518082815260200191505060405180910390f35b3480156103e457600080fd5b50610411600480360360208110156103fb57600080fd5b8101908080359060200190929190505050610ebc565b005b34801561041f57600080fd5b5061048c6004803603606081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff1565b60405180821515815260200191505060405180910390f35b3480156104b057600080fd5b506104dd600480360360208110156104c757600080fd5b81019080803590602001909291905050506110ca565b6040518082815260200191505060405180910390f35b3480156104ff57600080fd5b5061050861114e565b604051808260ff16815260200191505060405180910390f35b34801561052d57600080fd5b5061057a6004803603604081101561054457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611165565b60405180821515815260200191505060405180910390f35b34801561059e57600080fd5b506105cb600480360360208110156105b557600080fd5b8101908080359060200190929190505050611218565b005b3480156105d957600080fd5b506105e26113a9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061a57600080fd5b506106536004803603604081101561063157600080fd5b81019080803590602001909291908035151590602001909291905050506113cf565b6040518082815260200191505060405180910390f35b34801561067557600080fd5b5061067e611486565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b657600080fd5b506106bf6114aa565b005b3480156106cd57600080fd5b50610710600480360360208110156106e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061158b565b60405180821515815260200191505060405180910390f35b34801561073457600080fd5b506107616004803603602081101561074b57600080fd5b81019080803590602001909291905050506115e1565b005b34801561076f57600080fd5b50610778611737565b60405180821515815260200191505060405180910390f35b34801561079c57600080fd5b506107df600480360360208110156107b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174a565b6040518082815260200191505060405180910390f35b34801561080157600080fd5b5061080a611835565b005b34801561081857600080fd5b506108216119bb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561085957600080fd5b506108626119e1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089a57600080fd5b506108a3611a0a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108e35780820151818401526020810190506108c8565b50505050905090810190601f1680156109105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561092a57600080fd5b506109576004803603602081101561094157600080fd5b8101908080359060200190929190505050611aac565b005b34801561096557600080fd5b506109b26004803603604081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c02565b60405180821515815260200191505060405180910390f35b3480156109d657600080fd5b506109df611ccf565b005b3480156109ed57600080fd5b50610a3a60048036036040811015610a0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611eec565b60405180821515815260200191505060405180910390f35b348015610a5e57600080fd5b50610aad60048036036040811015610a7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f0a565b005b348015610abb57600080fd5b50610ac461202d565b6040518082815260200191505060405180910390f35b348015610ae657600080fd5b50610b2960048036036020811015610afd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612037565b60405180821515815260200191505060405180910390f35b348015610b4d57600080fd5b50610b9060048036036020811015610b6457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061208d565b005b348015610b9e57600080fd5b50610bcb60048036036020811015610bb557600080fd5b8101908080359060200190929190505050612199565b005b348015610bd957600080fd5b50610c3c60048036036040811015610bf057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061238a565b6040518082815260200191505060405180910390f35b348015610c5e57600080fd5b50610c8d60048036036020811015610c7557600080fd5b81019080803515159060200190929190505050612411565b005b348015610c9b57600080fd5b50610cde60048036036020811015610cb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124f6565b005b348015610cec57600080fd5b50610d2f60048036036020811015610d0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a9565b005b348015610d3d57600080fd5b50610d46612ab4565b005b348015610d5457600080fd5b50610d5d612b8d565b6040518082815260200191505060405180910390f35b348015610d7f57600080fd5b50610dc260048036036020811015610d9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b95565b005b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b820191906000526020600020905b815481529060010190602001808311610e3f57829003601f168201915b5050505050905090565b6000610e7a610e73612f1f565b8484612f27565b6001905092915050565b6000600b54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b610ec4612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b69152d02c7e14af6800000811015610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180614f6e6034913960400191505060405180910390fd5b8060158190555050565b6000610ffe84848461311e565b6110bf8461100a612f1f565b6110ba85604051806060016040528060288152602001614feb60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611070612f1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f59092919063ffffffff16565b612f27565b600190509392505050565b6000600a54821115611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614efc602a913960400191505060405180910390fd5b60006111316135b5565b905061114681846135e090919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b600061120e611172612f1f565b846112098560056000611183612f1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b612f27565b6001905092915050565b6000611222612f1f565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806150a7602c913960400191505060405180910390fd5b60006112d2836136b2565b5050505050905061132b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061138381600a5461371990919063ffffffff16565b600a8190555061139e83600b5461362a90919063ffffffff16565b600b81905550505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954831115611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611469576000611459846136b2565b5050505050905080915050611480565b6000611474846136b2565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6114b2612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061157d3061174a565b905061158881613763565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6115e9612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600181101580156116bb5750600a8111155b61172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2031202d20313000000000000081525060200191505060405180910390fd5b80600f8190555050565b601460159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117e557600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611830565b61182d600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ca565b90505b919050565b61183d612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611aa25780601f10611a7757610100808354040283529160200191611aa2565b820191906000526020600020905b815481529060010190602001808311611a8557829003601f168201915b5050505050905090565b611ab4612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611b865750600b8111155b611bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636861726974794665652073686f756c6420626520696e2031202d203131000081525060200191505060405180910390fd5b8060108190555050565b6000611cc5611c0f612f1f565b84611cc0856040518060600160405280602581526020016150f66025913960056000611c39612f1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f59092919063ffffffff16565b612f27565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806150d36023913960400191505060405180910390fd5b6002544211611dec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611f00611ef9612f1f565b848461311e565b6001905092915050565b611f12612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b612095612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612155576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121a1612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612419612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b6124fe612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612657576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806150856022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156127eb576127a7600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ca565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128b1612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614f266026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612abc612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612b8a81613a45565b50565b600047905090565b612b9d612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015612f1b578173ffffffffffffffffffffffffffffffffffffffff1660088281548110612d5057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612f0e57600860016008805490500381548110612dac57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110612de457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480612ed457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612f1b565b8080600101915050612d1f565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806150616024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613033576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614f4c6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061503c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561322a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614ed96023913960400191505060405180910390fd5b60008111613283576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806150136029913960400191505060405180910390fd5b61328b6119e1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132f957506132c96119e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561335a57601554811115613359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614fa26028913960400191505060405180910390fd5b5b60006133653061174a565b905060155481106133765760155490505b6000601654821015905060148054906101000a900460ff161580156133a75750601460159054906101000a900460ff165b80156133b05750805b801561340857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156134305761341682613763565b6000479050600081111561342e5761342d47613a45565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134d75750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134e157600090505b6134ed86868684613b40565b505050505050565b60008383111582906135a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561356757808201518184015260208101905061354c565b50505050905090810190601f1680156135945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006135c2613e51565b915091506135d981836135e090919063ffffffff16565b9250505090565b600061362283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140e2565b905092915050565b6000808284019050838110156136a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006136cf8a600f546010546141a8565b92509250925060006136df6135b5565b905060008060006136f18e878661423e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061375b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134f5565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561379757600080fd5b506040519080825280602002602001820160405280156137c65781602001602082028036833780820191505090505b50905030816000815181106137d757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561387757600080fd5b505afa15801561388b573d6000803e3d6000fd5b505050506040513d60208110156138a157600080fd5b8101908080519060200190929190505050816001815181106138bf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613924307f000000000000000000000000000000000000000000000000000000000000000084612f27565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156139e65780820151818401526020810190506139cb565b505050509050019650505050505050600060405180830381600087803b158015613a0f57600080fd5b505af1158015613a23573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613a956002846135e090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613ac0573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613b116002846135e090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613b3c573d6000803e3d6000fd5b5050565b80613b4e57613b4d61429c565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613bf15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c0657613c018484846142df565b613e3d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613ca95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613cbe57613cb984848461453f565b613e3c565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d625750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d7757613d7284848461479f565b613e3b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613e195750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e2e57613e2984848461496a565b613e3a565b613e3984848461479f565b5b5b5b5b80613e4b57613e4a614c5f565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156140a557826003600060088481548110613e8457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613f6b5750816004600060088481548110613f0357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613f8257600a54600954945094505050506140de565b61400b6003600060088481548110613f9657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461371990919063ffffffff16565b9250614096600460006008848154811061402157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361371990919063ffffffff16565b91508080600101915050613e65565b506140bd600954600a546135e090919063ffffffff16565b8210156140d557600a546009549350935050506140de565b81819350935050505b9091565b6000808311829061418e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614153578082015181840152602081019050614138565b50505050905090810190601f1680156141805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161419a57fe5b049050809150509392505050565b6000806000806141d460646141c6888a614c7390919063ffffffff16565b6135e090919063ffffffff16565b905060006141fe60646141f0888b614c7390919063ffffffff16565b6135e090919063ffffffff16565b9050600061422782614219858c61371990919063ffffffff16565b61371990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806142578588614c7390919063ffffffff16565b9050600061426e8688614c7390919063ffffffff16565b90506000614285828461371990919063ffffffff16565b905082818395509550955050505093509350939050565b6000600f541480156142b057506000601054145b156142ba576142dd565b600f546011819055506010546012819055506000600f8190555060006010819055505b565b6000806000806000806142f1876136b2565b95509550955095509550955061434f87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143e486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061447985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144c581614cf9565b6144cf8483614e9e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614551876136b2565b9550955095509550955095506145af86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061464483600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146d985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472581614cf9565b61472f8483614e9e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806147b1876136b2565b95509550955095509550955061480f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148a485600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148f081614cf9565b6148fa8483614e9e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061497c876136b2565b9550955095509550955095506149da87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a6f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b0483600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b9985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614be581614cf9565b614bef8483614e9e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601154600f81905550601254601081905550565b600080831415614c865760009050614cf3565b6000828402905082848281614c9757fe5b0414614cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614fca6021913960400191505060405180910390fd5b809150505b92915050565b6000614d036135b5565b90506000614d1a8284614c7390919063ffffffff16565b9050614d6e81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614e9957614e5583600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614eb382600a5461371990919063ffffffff16565b600a81905550614ece81600b5461362a90919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e2031303030303030303030303030303065395472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aa018c5c05862825974ff3b2125296fe831be7d38f1751debe9d383577f7d90b64736f6c634300060c0033000000000000000000000000fd38565f9f344523fb68b665f6b02c94c5b07549000000000000000000000000fd38565f9f344523fb68b665f6b02c94c5b07549
Deployed Bytecode
0x6080604052600436106102345760003560e01c8063715018a61161012e578063cba0e996116100ab578063f2cc0c181161006f578063f2cc0c1814610c8f578063f2fde38b14610ce0578063f429389014610d31578063f815a84214610d48578063f84354f114610d735761023b565b8063cba0e99614610ada578063d047e4b714610b41578063dd46706414610b92578063dd62ed3e14610bcd578063e01af92c14610c525761023b565b8063a457c2d7116100f2578063a457c2d714610959578063a69df4b5146109ca578063a9059cbb146109e1578063af9549e014610a52578063b6c5232414610aaf5761023b565b8063715018a6146107f557806376d4ab991461080c5780638da5cb5b1461084d57806395d89b411461088e578063a24a8d0f1461091e5761023b565b806339509351116101bc57806351bc3c851161018057806351bc3c85146106aa5780635342acb4146106c15780635880b873146107285780636ddd17131461076357806370a08231146107905761023b565b806339509351146105215780633bd5d173146105925780634144d9e4146105cd5780634549b0391461060e57806349bd5a5e146106695761023b565b806318160ddd1161020357806318160ddd146103ad5780631bbae6e0146103d857806323b872dd146104135780632d838119146104a4578063313ce567146104f35761023b565b806306fdde0314610240578063095ea7b3146102d057806313114a9d146103415780631694505e1461036c5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610dc4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029557808201518184015260208101905061027a565b50505050905090810190601f1680156102c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102dc57600080fd5b50610329600480360360408110156102f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e66565b60405180821515815260200191505060405180910390f35b34801561034d57600080fd5b50610356610e84565b6040518082815260200191505060405180910390f35b34801561037857600080fd5b50610381610e8e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103b957600080fd5b506103c2610eb2565b6040518082815260200191505060405180910390f35b3480156103e457600080fd5b50610411600480360360208110156103fb57600080fd5b8101908080359060200190929190505050610ebc565b005b34801561041f57600080fd5b5061048c6004803603606081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff1565b60405180821515815260200191505060405180910390f35b3480156104b057600080fd5b506104dd600480360360208110156104c757600080fd5b81019080803590602001909291905050506110ca565b6040518082815260200191505060405180910390f35b3480156104ff57600080fd5b5061050861114e565b604051808260ff16815260200191505060405180910390f35b34801561052d57600080fd5b5061057a6004803603604081101561054457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611165565b60405180821515815260200191505060405180910390f35b34801561059e57600080fd5b506105cb600480360360208110156105b557600080fd5b8101908080359060200190929190505050611218565b005b3480156105d957600080fd5b506105e26113a9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061a57600080fd5b506106536004803603604081101561063157600080fd5b81019080803590602001909291908035151590602001909291905050506113cf565b6040518082815260200191505060405180910390f35b34801561067557600080fd5b5061067e611486565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b657600080fd5b506106bf6114aa565b005b3480156106cd57600080fd5b50610710600480360360208110156106e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061158b565b60405180821515815260200191505060405180910390f35b34801561073457600080fd5b506107616004803603602081101561074b57600080fd5b81019080803590602001909291905050506115e1565b005b34801561076f57600080fd5b50610778611737565b60405180821515815260200191505060405180910390f35b34801561079c57600080fd5b506107df600480360360208110156107b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174a565b6040518082815260200191505060405180910390f35b34801561080157600080fd5b5061080a611835565b005b34801561081857600080fd5b506108216119bb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561085957600080fd5b506108626119e1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089a57600080fd5b506108a3611a0a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108e35780820151818401526020810190506108c8565b50505050905090810190601f1680156109105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561092a57600080fd5b506109576004803603602081101561094157600080fd5b8101908080359060200190929190505050611aac565b005b34801561096557600080fd5b506109b26004803603604081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c02565b60405180821515815260200191505060405180910390f35b3480156109d657600080fd5b506109df611ccf565b005b3480156109ed57600080fd5b50610a3a60048036036040811015610a0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611eec565b60405180821515815260200191505060405180910390f35b348015610a5e57600080fd5b50610aad60048036036040811015610a7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f0a565b005b348015610abb57600080fd5b50610ac461202d565b6040518082815260200191505060405180910390f35b348015610ae657600080fd5b50610b2960048036036020811015610afd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612037565b60405180821515815260200191505060405180910390f35b348015610b4d57600080fd5b50610b9060048036036020811015610b6457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061208d565b005b348015610b9e57600080fd5b50610bcb60048036036020811015610bb557600080fd5b8101908080359060200190929190505050612199565b005b348015610bd957600080fd5b50610c3c60048036036040811015610bf057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061238a565b6040518082815260200191505060405180910390f35b348015610c5e57600080fd5b50610c8d60048036036020811015610c7557600080fd5b81019080803515159060200190929190505050612411565b005b348015610c9b57600080fd5b50610cde60048036036020811015610cb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124f6565b005b348015610cec57600080fd5b50610d2f60048036036020811015610d0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a9565b005b348015610d3d57600080fd5b50610d46612ab4565b005b348015610d5457600080fd5b50610d5d612b8d565b6040518082815260200191505060405180910390f35b348015610d7f57600080fd5b50610dc260048036036020811015610d9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b95565b005b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b820191906000526020600020905b815481529060010190602001808311610e3f57829003601f168201915b5050505050905090565b6000610e7a610e73612f1f565b8484612f27565b6001905092915050565b6000600b54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b610ec4612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b69152d02c7e14af6800000811015610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180614f6e6034913960400191505060405180910390fd5b8060158190555050565b6000610ffe84848461311e565b6110bf8461100a612f1f565b6110ba85604051806060016040528060288152602001614feb60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611070612f1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f59092919063ffffffff16565b612f27565b600190509392505050565b6000600a54821115611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614efc602a913960400191505060405180910390fd5b60006111316135b5565b905061114681846135e090919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b600061120e611172612f1f565b846112098560056000611183612f1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b612f27565b6001905092915050565b6000611222612f1f565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806150a7602c913960400191505060405180910390fd5b60006112d2836136b2565b5050505050905061132b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061138381600a5461371990919063ffffffff16565b600a8190555061139e83600b5461362a90919063ffffffff16565b600b81905550505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954831115611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611469576000611459846136b2565b5050505050905080915050611480565b6000611474846136b2565b50505050915050809150505b92915050565b7f000000000000000000000000fc6f3e19d82868a9386acd23c7118552d04d41e881565b6114b2612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061157d3061174a565b905061158881613763565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6115e9612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600181101580156116bb5750600a8111155b61172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2031202d20313000000000000081525060200191505060405180910390fd5b80600f8190555050565b601460159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117e557600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611830565b61182d600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ca565b90505b919050565b61183d612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611aa25780601f10611a7757610100808354040283529160200191611aa2565b820191906000526020600020905b815481529060010190602001808311611a8557829003601f168201915b5050505050905090565b611ab4612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611b865750600b8111155b611bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636861726974794665652073686f756c6420626520696e2031202d203131000081525060200191505060405180910390fd5b8060108190555050565b6000611cc5611c0f612f1f565b84611cc0856040518060600160405280602581526020016150f66025913960056000611c39612f1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f59092919063ffffffff16565b612f27565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806150d36023913960400191505060405180910390fd5b6002544211611dec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611f00611ef9612f1f565b848461311e565b6001905092915050565b611f12612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b612095612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612155576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121a1612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612419612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b6124fe612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612657576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806150856022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156127eb576127a7600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ca565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128b1612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614f266026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612abc612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612b8a81613a45565b50565b600047905090565b612b9d612f1f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015612f1b578173ffffffffffffffffffffffffffffffffffffffff1660088281548110612d5057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612f0e57600860016008805490500381548110612dac57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110612de457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480612ed457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612f1b565b8080600101915050612d1f565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806150616024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613033576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614f4c6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061503c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561322a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614ed96023913960400191505060405180910390fd5b60008111613283576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806150136029913960400191505060405180910390fd5b61328b6119e1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132f957506132c96119e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561335a57601554811115613359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614fa26028913960400191505060405180910390fd5b5b60006133653061174a565b905060155481106133765760155490505b6000601654821015905060148054906101000a900460ff161580156133a75750601460159054906101000a900460ff165b80156133b05750805b801561340857507f000000000000000000000000fc6f3e19d82868a9386acd23c7118552d04d41e873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156134305761341682613763565b6000479050600081111561342e5761342d47613a45565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134d75750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134e157600090505b6134ed86868684613b40565b505050505050565b60008383111582906135a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561356757808201518184015260208101905061354c565b50505050905090810190601f1680156135945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006135c2613e51565b915091506135d981836135e090919063ffffffff16565b9250505090565b600061362283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140e2565b905092915050565b6000808284019050838110156136a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006136cf8a600f546010546141a8565b92509250925060006136df6135b5565b905060008060006136f18e878661423e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061375b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134f5565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561379757600080fd5b506040519080825280602002602001820160405280156137c65781602001602082028036833780820191505090505b50905030816000815181106137d757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561387757600080fd5b505afa15801561388b573d6000803e3d6000fd5b505050506040513d60208110156138a157600080fd5b8101908080519060200190929190505050816001815181106138bf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613924307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612f27565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156139e65780820151818401526020810190506139cb565b505050509050019650505050505050600060405180830381600087803b158015613a0f57600080fd5b505af1158015613a23573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613a956002846135e090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613ac0573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613b116002846135e090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613b3c573d6000803e3d6000fd5b5050565b80613b4e57613b4d61429c565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613bf15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c0657613c018484846142df565b613e3d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613ca95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613cbe57613cb984848461453f565b613e3c565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d625750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d7757613d7284848461479f565b613e3b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613e195750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e2e57613e2984848461496a565b613e3a565b613e3984848461479f565b5b5b5b5b80613e4b57613e4a614c5f565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156140a557826003600060088481548110613e8457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613f6b5750816004600060088481548110613f0357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613f8257600a54600954945094505050506140de565b61400b6003600060088481548110613f9657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461371990919063ffffffff16565b9250614096600460006008848154811061402157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361371990919063ffffffff16565b91508080600101915050613e65565b506140bd600954600a546135e090919063ffffffff16565b8210156140d557600a546009549350935050506140de565b81819350935050505b9091565b6000808311829061418e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614153578082015181840152602081019050614138565b50505050905090810190601f1680156141805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161419a57fe5b049050809150509392505050565b6000806000806141d460646141c6888a614c7390919063ffffffff16565b6135e090919063ffffffff16565b905060006141fe60646141f0888b614c7390919063ffffffff16565b6135e090919063ffffffff16565b9050600061422782614219858c61371990919063ffffffff16565b61371990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806142578588614c7390919063ffffffff16565b9050600061426e8688614c7390919063ffffffff16565b90506000614285828461371990919063ffffffff16565b905082818395509550955050505093509350939050565b6000600f541480156142b057506000601054145b156142ba576142dd565b600f546011819055506010546012819055506000600f8190555060006010819055505b565b6000806000806000806142f1876136b2565b95509550955095509550955061434f87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143e486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061447985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144c581614cf9565b6144cf8483614e9e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614551876136b2565b9550955095509550955095506145af86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061464483600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146d985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472581614cf9565b61472f8483614e9e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806147b1876136b2565b95509550955095509550955061480f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148a485600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148f081614cf9565b6148fa8483614e9e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061497c876136b2565b9550955095509550955095506149da87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a6f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b0483600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b9985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614be581614cf9565b614bef8483614e9e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601154600f81905550601254601081905550565b600080831415614c865760009050614cf3565b6000828402905082848281614c9757fe5b0414614cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614fca6021913960400191505060405180910390fd5b809150505b92915050565b6000614d036135b5565b90506000614d1a8284614c7390919063ffffffff16565b9050614d6e81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614e9957614e5583600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614eb382600a5461371990919063ffffffff16565b600a81905550614ece81600b5461362a90919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e2031303030303030303030303030303065395472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aa018c5c05862825974ff3b2125296fe831be7d38f1751debe9d383577f7d90b64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fd38565f9f344523fb68b665f6b02c94c5b07549000000000000000000000000fd38565f9f344523fb68b665f6b02c94c5b07549
-----Decoded View---------------
Arg [0] : charityWalletAddress (address): 0xFD38565f9F344523Fb68b665f6b02C94C5b07549
Arg [1] : marketingWalletAddress (address): 0xFD38565f9F344523Fb68b665f6b02C94C5b07549
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000fd38565f9f344523fb68b665f6b02c94c5b07549
Arg [1] : 000000000000000000000000fd38565f9f344523fb68b665f6b02c94c5b07549
Deployed Bytecode Sourcemap
26519:19469:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29492:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30496:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31844:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27872:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29805:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45748:233;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30681:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32852:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29702:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31022:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31951:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27805:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32368:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27934:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;38214:168;;;;;;;;;;;;;:::i;:::-;;34593:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45149:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28015:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29920:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16354:160;;;;;;;;;;;;;:::i;:::-;;27750:44;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15652:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29595:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45342:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31264:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17461:313;;;;;;;;;;;;;:::i;:::-;;30142:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31687:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16958:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31557:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45571:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17139:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30333:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38585:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33133:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16686:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38402:171;;;;;;;;;;;;;:::i;:::-;;45011:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33620:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29492:91;29529:13;29566:5;29559:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29492:91;:::o;30496:173::-;30571:4;30592:39;30601:12;:10;:12::i;:::-;30615:7;30624:6;30592:8;:39::i;:::-;30653:4;30646:11;;30496:173;;;;:::o;31844:95::-;31886:7;31917:10;;31910:17;;31844:95;:::o;27872:51::-;;;:::o;29805:103::-;29858:7;29889;;29882:14;;29805:103;:::o;45748:233::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45853:17:::1;45838:11;:32;;45830:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45958:11;45943:12;:26;;;;45748:233:::0;:::o;30681:329::-;30779:4;30800:36;30810:6;30818:9;30829:6;30800:9;:36::i;:::-;30851:121;30860:6;30868:12;:10;:12::i;:::-;30882:89;30920:6;30882:89;;;;;;;;;;;;;;;;;:11;:19;30894:6;30882:19;;;;;;;;;;;;;;;:33;30902:12;:10;:12::i;:::-;30882:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30851:8;:121::i;:::-;30994:4;30987:11;;30681:329;;;;;:::o;32852:269::-;32918:7;32961;;32950;:18;;32942:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33030:19;33053:10;:8;:10::i;:::-;33030:33;;33085:24;33097:11;33085:7;:11;;:24;;;;:::i;:::-;33078:31;;;32852:269;;;:::o;29702:91::-;29743:5;29772:9;;;;;;;;;;;29765:16;;29702:91;:::o;31022:230::-;31110:4;31131:83;31140:12;:10;:12::i;:::-;31154:7;31163:50;31202:10;31163:11;:25;31175:12;:10;:12::i;:::-;31163:25;;;;;;;;;;;;;;;:34;31189:7;31163:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;31131:8;:83::i;:::-;31236:4;31229:11;;31022:230;;;;:::o;31951:405::-;32007:14;32024:12;:10;:12::i;:::-;32007:29;;32060:11;:19;32072:6;32060:19;;;;;;;;;;;;;;;;;;;;;;;;;32059:20;32051:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32144:15;32168:19;32179:7;32168:10;:19::i;:::-;32143:44;;;;;;;32220:28;32240:7;32220;:15;32228:6;32220:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32202:7;:15;32210:6;32202:15;;;;;;;;;;;;;;;:46;;;;32273:20;32285:7;32273;;:11;;:20;;;;:::i;:::-;32263:7;:30;;;;32321:23;32336:7;32321:10;;:14;;:23;;;;:::i;:::-;32308:10;:36;;;;31951:405;;;:::o;27805:46::-;;;;;;;;;;;;;:::o;32368:472::-;32458:7;32501;;32490;:18;;32482:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32564:17;32559:270;;32603:15;32627:19;32638:7;32627:10;:19::i;:::-;32602:44;;;;;;;32672:7;32665:14;;;;;32559:270;32722:23;32753:19;32764:7;32753:10;:19::i;:::-;32720:52;;;;;;;32798:15;32791:22;;;32368:472;;;;;:::o;27934:38::-;;;:::o;38214:168::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38272:23:::1;38298:24;38316:4;38298:9;:24::i;:::-;38272:50;;38337:33;38354:15;38337:16;:33::i;:::-;15964:1;38214:168::o:0;34593:131::-;34657:4;34685:18;:27;34704:7;34685:27;;;;;;;;;;;;;;;;;;;;;;;;;34678:34;;34593:131;;;:::o;45149:181::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45239:1:::1;45229:6;:11;;:27;;;;;45254:2;45244:6;:12;;45229:27;45221:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;45312:6;45302:7;:16;;;;45149:181:::0;:::o;28015:30::-;;;;;;;;;;;;;:::o;29920:210::-;29986:7;30014:11;:20;30026:7;30014:20;;;;;;;;;;;;;;;;;;;;;;;;;30010:49;;;30043:7;:16;30051:7;30043:16;;;;;;;;;;;;;;;;30036:23;;;;30010:49;30081:37;30101:7;:16;30109:7;30101:16;;;;;;;;;;;;;;;;30081:19;:37::i;:::-;30074:44;;29920:210;;;;:::o;16354:160::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16465:1:::1;16428:40;;16449:6;::::0;::::1;;;;;;;;16428:40;;;;;;;;;;;;16500:1;16483:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16354:160::o:0;27750:44::-;;;;;;;;;;;;;:::o;15652:87::-;15690:7;15721:6;;;;;;;;;;;15714:13;;15652:87;:::o;29595:95::-;29634:13;29671:7;29664:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29595:95;:::o;45342:209::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45444:1:::1;45430:10;:15;;:35;;;;;45463:2;45449:10;:16;;45430:35;45422:78;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;45529:10;45515:11;:24;;;;45342:209:::0;:::o;31264:281::-;31357:4;31378:129;31387:12;:10;:12::i;:::-;31401:7;31410:96;31449:15;31410:96;;;;;;;;;;;;;;;;;:11;:25;31422:12;:10;:12::i;:::-;31410:25;;;;;;;;;;;;;;;:34;31436:7;31410:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;31378:8;:129::i;:::-;31529:4;31522:11;;31264:281;;;;:::o;17461:313::-;17535:10;17517:28;;:14;;;;;;;;;;;:28;;;17509:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17614:9;;17608:3;:15;17600:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17709:14;;;;;;;;;;;17680:44;;17701:6;;;;;;;;;;17680:44;;;;;;;;;;;;17748:14;;;;;;;;;;;17739:6;;:23;;;;;;;;;;;;;;;;;;17461:313::o;30142:179::-;30220:4;30241:42;30251:12;:10;:12::i;:::-;30265:9;30276:6;30241:9;:42::i;:::-;30305:4;30298:11;;30142:179;;;;:::o;31687:145::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31812:8:::1;31782:18;:27;31801:7;31782:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;31687:145:::0;;:::o;16958:97::-;17003:7;17034:9;;17027:16;;16958:97;:::o;31557:118::-;31615:4;31643:11;:20;31655:7;31643:20;;;;;;;;;;;;;;;;;;;;;;;;;31636:27;;31557:118;;;:::o;45571:157::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45696:20:::1;45672:21;;:44;;;;;;;;;;;;;;;;;;45571:157:::0;:::o;17139:234::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17224:6:::1;::::0;::::1;;;;;;;;17207:14;;:23;;;;;;;;;;;;;;;;;;17262:1;17245:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17297:4;17291:3;:10;17279:9;:22;;;;17358:1;17321:40;;17342:6;::::0;::::1;;;;;;;;17321:40;;;;;;;;;;;;17139:234:::0;:::o;30333:151::-;30414:7;30445:11;:18;30457:5;30445:18;;;;;;;;;;;;;;;:27;30464:7;30445:27;;;;;;;;;;;;;;;;30438:34;;30333:151;;;;:::o;38585:106::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38672:7:::1;38658:11;;:21;;;;;;;;;;;;;;;;;;38585:106:::0;:::o;33133:475::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33229:42:::1;33218:53;;:7;:53;;;;33210:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33334:11;:20;33346:7;33334:20;;;;;;;;;;;;;;;;;;;;;;;;;33333:21;33325:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33423:1;33404:7;:16;33412:7;33404:16;;;;;;;;;;;;;;;;:20;33401:116;;;33464:37;33484:7;:16;33492:7;33484:16;;;;;;;;;;;;;;;;33464:19;:37::i;:::-;33445:7;:16;33453:7;33445:16;;;;;;;;;;;;;;;:56;;;;33401:116;33554:4;33531:11;:20;33543:7;33531:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;33573:9;33588:7;33573:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33133:475:::0;:::o;16686:260::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16799:1:::1;16779:22;;:8;:22;;;;16771:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16893:8;16864:38;;16885:6;::::0;::::1;;;;;;;;16864:38;;;;;;;;;;;;16926:8;16917:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16686:260:::0;:::o;38402:171::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38460:26:::1;38489:21;38460:50;;38525:36;38542:18;38525:16;:36::i;:::-;15964:1;38402:171::o:0;45011:118::-;45057:15;45096:21;45089:28;;45011:118;:::o;33620:522::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33705:11:::1;:20;33717:7;33705:20;;;;;;;;;;;;;;;;;;;;;;;;;33697:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33777:9;33772:359;33796:9;:16;;;;33792:1;:20;33772:359;;;33858:7;33842:23;;:9;33852:1;33842:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;33838:278;;;33905:9;33934:1;33915:9;:16;;;;:20;33905:31;;;;;;;;;;;;;;;;;;;;;;;;;33890:9;33900:1;33890:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33978:1;33959:7;:16;33967:7;33959:16;;;;;;;;;;;;;;;:20;;;;34025:5;34002:11;:20;34014:7;34002:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;34053:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34091:5;;33838:278;33814:3;;;;;;;33772:359;;;;33620:522:::0;:::o;109:114::-;162:15;201:10;194:17;;109:114;:::o;34736:357::-;34850:1;34833:19;;:5;:19;;;;34825:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34935:1;34916:21;;:7;:21;;;;34908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35023:6;34993:11;:18;35005:5;34993:18;;;;;;;;;;;;;;;:27;35012:7;34993:27;;;;;;;;;;;;;;;:36;;;;35065:7;35049:32;;35058:5;35049:32;;;35074:6;35049:32;;;;;;;;;;;;;;;;;;34736:357;;;:::o;35105:2067::-;35224:1;35206:20;;:6;:20;;;;35198:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35312:1;35291:23;;:9;:23;;;;35283:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35386:1;35377:6;:10;35369:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35475:7;:5;:7::i;:::-;35465:17;;:6;:17;;;;:41;;;;;35499:7;:5;:7::i;:::-;35486:20;;:9;:20;;;;35465:41;35462:138;;;35543:12;;35533:6;:22;;35525:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35462:138;35886:28;35917:24;35935:4;35917:9;:24::i;:::-;35886:55;;35997:12;;35973:20;:36;35970:124;;36066:12;;36043:35;;35970:124;36122:24;36173:32;;36149:20;:56;;36122:83;;36225:6;;;;;;;;;;36224:7;:22;;;;;36235:11;;;;;;;;;;;36224:22;:45;;;;;36250:19;36224:45;:72;;;;;36283:13;36273:23;;:6;:23;;;;36224:72;36220:458;;;36410:38;36427:20;36410:16;:38::i;:::-;36485:26;36514:21;36485:50;;36578:1;36557:18;:22;36554:109;;;36604:39;36621:21;36604:16;:39::i;:::-;36554:109;36220:458;;36771:12;36786:4;36771:19;;36910:18;:26;36929:6;36910:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;36940:18;:29;36959:9;36940:29;;;;;;;;;;;;;;;;;;;;;;;;;36910:59;36907:113;;;36999:5;36989:15;;36907:113;37113:47;37128:6;37135:9;37145:6;37152:7;37113:14;:47::i;:::-;35105:2067;;;;;;:::o;4636:208::-;4722:7;4759:1;4754;:6;;4762:12;4746:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4790:9;4806:1;4802;:5;4790:17;;4831:1;4824:8;;;4636:208;;;;;:::o;43983:175::-;44024:7;44049:15;44066;44085:19;:17;:19::i;:::-;44048:56;;;;44126:20;44138:7;44126;:11;;:20;;;;:::i;:::-;44119:27;;;;43983:175;:::o;6166:140::-;6224:7;6255:39;6259:1;6262;6255:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6248:46;;6166:140;;;;:::o;3639:197::-;3697:7;3721:9;3737:1;3733;:5;3721:17;;3766:1;3761;:6;;3753:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:1;3816:8;;;3639:197;;;;:::o;42717:490::-;42776:7;42785;42794;42803;42812;42821;42846:23;42871:12;42885:16;42905:42;42917:7;42926;;42935:11;;42905;:42::i;:::-;42845:102;;;;;;42962:19;42985:10;:8;:10::i;:::-;42962:33;;43011:15;43028:23;43053:12;43069:39;43081:7;43090:4;43096:11;43069;:39::i;:::-;43010:98;;;;;;43131:7;43140:15;43157:4;43163:15;43180:4;43186:8;43123:72;;;;;;;;;;;;;;;;;;;42717:490;;;;;;;:::o;4154:144::-;4212:7;4243:43;4247:1;4250;4243:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4236:50;;4154:144;;;;:::o;37184:656::-;28442:4;28433:6;;:13;;;;;;;;;;;;;;;;;;37329:21:::1;37367:1;37353:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37329:40;;37402:4;37384;37389:1;37384:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;37432:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;37422:4;37427:1;37422:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;37471:62;37488:4;37503:15;37521:11;37471:8;:62::i;:::-;37580:15;:66;;;37665:11;37695:1;37743:4;37774;37798:15;37580:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28461:1;28486:5:::0;28477:6;;:14;;;;;;;;;;;;;;;;;;37184:656;:::o;37860:184::-;37925:21;;;;;;;;;;;:30;;:45;37956:13;37967:1;37956:6;:10;;:13;;;;:::i;:::-;37925:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37985:23;;;;;;;;;;;:32;;:47;38018:13;38029:1;38018:6;:10;;:13;;;;:::i;:::-;37985:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37860:184;:::o;38711:883::-;38827:7;38823:44;;38853:14;:12;:14::i;:::-;38823:44;38888:11;:19;38900:6;38888:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;38912:11;:22;38924:9;38912:22;;;;;;;;;;;;;;;;;;;;;;;;;38911:23;38888:46;38884:637;;;38955:48;38977:6;38985:9;38996:6;38955:21;:48::i;:::-;38884:637;;;39030:11;:19;39042:6;39030:19;;;;;;;;;;;;;;;;;;;;;;;;;39029:20;:46;;;;;39053:11;:22;39065:9;39053:22;;;;;;;;;;;;;;;;;;;;;;;;;39029:46;39025:496;;;39096:46;39116:6;39124:9;39135:6;39096:19;:46::i;:::-;39025:496;;;39169:11;:19;39181:6;39169:19;;;;;;;;;;;;;;;;;;;;;;;;;39168:20;:47;;;;;39193:11;:22;39205:9;39193:22;;;;;;;;;;;;;;;;;;;;;;;;;39192:23;39168:47;39164:357;;;39236:44;39254:6;39262:9;39273:6;39236:17;:44::i;:::-;39164:357;;;39306:11;:19;39318:6;39306:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;39329:11;:22;39341:9;39329:22;;;;;;;;;;;;;;;;;;;;;;;;;39306:45;39302:219;;;39372:48;39394:6;39402:9;39413:6;39372:21;:48::i;:::-;39302:219;;;39461:44;39479:6;39487:9;39498:6;39461:17;:44::i;:::-;39302:219;39164:357;39025:496;38884:637;39541:7;39537:45;;39567:15;:13;:15::i;:::-;39537:45;38711:883;;;;:::o;44170:601::-;44220:7;44229;44253:15;44271:7;;44253:25;;44293:15;44311:7;;44293:25;;44344:9;44339:305;44363:9;:16;;;;44359:1;:20;44339:305;;;44433:7;44409;:21;44417:9;44427:1;44417:12;;;;;;;;;;;;;;;;;;;;;;;;;44409:21;;;;;;;;;;;;;;;;:31;:66;;;;44468:7;44444;:21;44452:9;44462:1;44452:12;;;;;;;;;;;;;;;;;;;;;;;;;44444:21;;;;;;;;;;;;;;;;:31;44409:66;44405:97;;;44485:7;;44494;;44477:25;;;;;;;;;44405:97;44531:34;44543:7;:21;44551:9;44561:1;44551:12;;;;;;;;;;;;;;;;;;;;;;;;;44543:21;;;;;;;;;;;;;;;;44531:7;:11;;:34;;;;:::i;:::-;44521:44;;44594:34;44606:7;:21;44614:9;44624:1;44614:12;;;;;;;;;;;;;;;;;;;;;;;;;44606:21;;;;;;;;;;;;;;;;44594:7;:11;;:34;;;;:::i;:::-;44584:44;;44381:3;;;;;;;44339:305;;;;44672:20;44684:7;;44672;;:11;;:20;;;;:::i;:::-;44662:7;:30;44658:61;;;44702:7;;44711;;44694:25;;;;;;;;44658:61;44742:7;44751;44734:25;;;;;;44170:601;;;:::o;6843:298::-;6929:7;6965:1;6961;:5;6968:12;6953:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6996:9;7012:1;7008;:5;;;;;;6996:17;;7128:1;7121:8;;;6843:298;;;;;:::o;43219:386::-;43315:7;43324;43333;43357:12;43372:28;43396:3;43372:19;43384:6;43372:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;43357:43;;43415:16;43434:32;43462:3;43434:23;43446:10;43434:7;:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;43415:51;;43481:23;43507:31;43529:8;43507:17;43519:4;43507:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;43481:57;;43561:15;43578:4;43584:8;43553:40;;;;;;;;;43219:386;;;;;;;:::o;43617:354::-;43712:7;43721;43730;43754:15;43772:24;43784:11;43772:7;:11;;:24;;;;:::i;:::-;43754:42;;43811:12;43826:21;43835:11;43826:4;:8;;:21;;;;:::i;:::-;43811:36;;43862:23;43888:17;43900:4;43888:7;:11;;:17;;;;:::i;:::-;43862:43;;43928:7;43937:15;43954:4;43920:39;;;;;;;;;43617:354;;;;;;;:::o;34154:274::-;34215:1;34204:7;;:12;:32;;;;;34235:1;34220:11;;:16;34204:32;34201:44;;;34238:7;;34201:44;34291:7;;34273:15;:25;;;;34335:11;;34313:19;:33;;;;34385:1;34375:7;:11;;;;34415:1;34401:11;:15;;;;34154:274;:::o;40772:593::-;40879:15;40896:23;40921:12;40935:23;40960:12;40974:16;40994:19;41005:7;40994:10;:19::i;:::-;40878:135;;;;;;;;;;;;41046:28;41066:7;41046;:15;41054:6;41046:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41028:7;:15;41036:6;41028:15;;;;;;;;;;;;;;;:46;;;;41107:28;41127:7;41107;:15;41115:6;41107:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41089:7;:15;41097:6;41089:15;;;;;;;;;;;;;;;:46;;;;41171:39;41194:15;41171:7;:18;41179:9;41171:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41150:7;:18;41158:9;41150:18;;;;;;;;;;;;;;;:60;;;;41226:22;41239:8;41226:12;:22::i;:::-;41266:23;41278:4;41284;41266:11;:23::i;:::-;41326:9;41309:44;;41318:6;41309:44;;;41337:15;41309:44;;;;;;;;;;;;;;;;;;40772:593;;;;;;;;;:::o;40144:616::-;40249:15;40266:23;40291:12;40305:23;40330:12;40344:16;40364:19;40375:7;40364:10;:19::i;:::-;40248:135;;;;;;;;;;;;40416:28;40436:7;40416;:15;40424:6;40416:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40398:7;:15;40406:6;40398:15;;;;;;;;;;;;;;;:46;;;;40480:39;40503:15;40480:7;:18;40488:9;40480:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40459:7;:18;40467:9;40459:18;;;;;;;;;;;;;;;:60;;;;40555:39;40578:15;40555:7;:18;40563:9;40555:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40534:7;:18;40542:9;40534:18;;;;;;;;;;;;;;;:60;;;;40613:22;40626:8;40613:12;:22::i;:::-;40661:23;40673:4;40679;40661:11;:23::i;:::-;40721:9;40704:44;;40713:6;40704:44;;;40732:15;40704:44;;;;;;;;;;;;;;;;;;40144:616;;;;;;;;;:::o;39606:526::-;39709:15;39726:23;39751:12;39765:23;39790:12;39804:16;39824:19;39835:7;39824:10;:19::i;:::-;39708:135;;;;;;;;;;;;39876:28;39896:7;39876;:15;39884:6;39876:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;39858:7;:15;39866:6;39858:15;;;;;;;;;;;;;;;:46;;;;39940:39;39963:15;39940:7;:18;39948:9;39940:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39919:7;:18;39927:9;39919:18;;;;;;;;;;;;;;;:60;;;;39995:22;40008:8;39995:12;:22::i;:::-;40033:23;40045:4;40051;40033:11;:23::i;:::-;40093:9;40076:44;;40085:6;40076:44;;;40104:15;40076:44;;;;;;;;;;;;;;;;;;39606:526;;;;;;;;;:::o;41377:676::-;41484:15;41501:23;41526:12;41540:23;41565:12;41579:16;41599:19;41610:7;41599:10;:19::i;:::-;41483:135;;;;;;;;;;;;41651:28;41671:7;41651;:15;41659:6;41651:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41633:7;:15;41641:6;41633:15;;;;;;;;;;;;;;;:46;;;;41712:28;41732:7;41712;:15;41720:6;41712:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41694:7;:15;41702:6;41694:15;;;;;;;;;;;;;;;:46;;;;41776:39;41799:15;41776:7;:18;41784:9;41776:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41755:7;:18;41763:9;41755:18;;;;;;;;;;;;;;;:60;;;;41851:39;41874:15;41851:7;:18;41859:9;41851:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41830:7;:18;41838:9;41830:18;;;;;;;;;;;;;;;:60;;;;41908:22;41921:8;41908:12;:22::i;:::-;41954:23;41966:4;41972;41954:11;:23::i;:::-;42014:9;41997:44;;42006:6;41997:44;;;42025:15;41997:44;;;;;;;;;;;;;;;;;;41377:676;;;;;;;;;:::o;34444:133::-;34502:15;;34492:7;:25;;;;34546:19;;34532:11;:33;;;;34444:133::o;5138:511::-;5196:7;5462:1;5457;:6;5453:55;;;5491:1;5484:8;;;;5453:55;5524:9;5540:1;5536;:5;5524:17;;5573:1;5568;5564;:5;;;;;;:10;5556:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5636:1;5629:8;;;5138:511;;;;;:::o;42065:367::-;42128:19;42151:10;:8;:10::i;:::-;42128:33;;42176:16;42195:25;42208:11;42195:8;:12;;:25;;;;:::i;:::-;42176:44;;42260:36;42287:8;42260:7;:22;42276:4;42260:22;;;;;;;;;;;;;;;;:26;;:36;;;;:::i;:::-;42235:7;:22;42251:4;42235:22;;;;;;;;;;;;;;;:61;;;;42314:11;:26;42334:4;42314:26;;;;;;;;;;;;;;;;;;;;;;;;;42311:109;;;42384:36;42411:8;42384:7;:22;42400:4;42384:22;;;;;;;;;;;;;;;;:26;;:36;;;;:::i;:::-;42359:7;:22;42375:4;42359:22;;;;;;;;;;;;;;;:61;;;;42311:109;42065:367;;;:::o;42444:159::-;42526:17;42538:4;42526:7;;:11;;:17;;;;:::i;:::-;42516:7;:27;;;;42571:20;42586:4;42571:10;;:14;;:20;;;;:::i;:::-;42558:10;:33;;;;42444:159;;:::o
Swarm Source
ipfs://aa018c5c05862825974ff3b2125296fe831be7d38f1751debe9d383577f7d90b
Loading...
Loading
Loading...
Loading
OVERVIEW
Black Kishu Inu claims to be black doge of the family. It is a community-driven and deflationary token.Net Worth in USD
$1,015.21
Net Worth in ETH
0.512921
Token Allocations
BNB
95.82%
SHIB
4.18%
ETH
0.00%
Multichain Portfolio | 33 Chains
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.