Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
DeFi
Overview
Max Total Supply
100,000,000 SYNK
Holders
1,298 ( 0.770%)
Market
Price
$0.04 @ 0.000011 ETH (+9.97%)
Onchain Market Cap
$3,576,657.00
Circulating Supply Market Cap
$3,588,543.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
107,944.534196401940658681 SYNKValue
$3,860.81 ( ~1.1345 Eth) [0.1079%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
synk
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-27 */ /** *Submitted for verification at Etherscan.io on 2024-01-06 */ /** Website: https://synk.ws/ Telegram: https://t.me/synk_ws X Twitter: https://x.com/Synk_ws */ // |"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|"| // |[] synkShell |F] |!| // |"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|"| // | Zhofrph wr Vbqn, zkhuh wkh hfkrhv ri Gu. n vhfuhw pdfklqh vwloo kdxqw hyhub olqh ri frgh |"| // | |"| // | Synk Machine Secure Launch Protocol: |"| // | 1. Authenticate user 'Dr. K' |"| // | > Synk:> auth --username Mr |"| // | 2. Establish connection to Tor node via Synk: |"| // | > Synk:> connect tor --node undercover |"| // | 3. Securely access the remote file 'hidden': |"| // | > Synk:> secure-access --file /secret-vault/synk/hidden.enc --key {U2VjcmV0LzE5NzA=} |"| // | 4. Decrypt and prepare project 'Synk' for loading: |"| // | > Synk:> decrypt --file /secret-vault/synk/hidden.enc --output /temp/synk.dec |"| // | 5. Load and verify the integrity of project 'Synk': |"| // | > Synk:> load --project /temp/synk.dec |"| // | > Synk:> verify --project Synk --signature {IFJvb3RAMjU2Yml0IA==} |"| // | 6. Execute the project 'Synk': |"| // | > Synk:> execute --project Synk |"| // | |"| // | |"| // | |"| // | :::::::::::::::::::::::::::::::::::: |"| // | :: ___ _ _ _ :: |"| // | :: / __| | || | _ _ | |__ :: |"| // | :: \__ \ \_, | | ' \ | / / :: |"| // | :: |___/ _|__/ |_||_| |_\_\ :: |"| // | ::_|"""""|_| """"|_|"""""|_|"""""|:: |"| // | ::"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-':: |"| // | : https://synk.ws :: |"| // | :::::::::::::::::::::::::::::::::::: |"| // | :::::::::::::::::::::::::::::::::::: |"| // | :::::::::::::::::::::::::::::::::::: |"| // | |"| // |"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|"| // SPDX-License-Identifier: MIT 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/[email protected]. /** * @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/interfaces/[email protected] /** * @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/token/ERC20/[email protected] /** * @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/[email protected] /** * @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/[email protected] // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol) /** * @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; /** * @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_) { _name = name_; _symbol = symbol_; } /** * @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; } } 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); } } } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } contract synk is IERC20Metadata, ERC20, Ownable { uint public maxTxAmount = 5; // 0,5% uint public maxWalletAmount = 10; // 1% uint public TaxBuy = 300; // 30% uint public TaxSell = 300; // 30% uint public taxdev = 500; // 50% uint public taxmarket = 500; // 50% uint256 public _totalSupply = 100000000 * 1e18; uint public treshold = (_totalSupply*15)/1000; // 1,5% TotalSupply address public admin; address public devwallet; address public marketingwallet; mapping(address => bool) public noFeeFor; mapping(address => bool) public noTax; IUniswapV2Router02 public router; address public uniswapV2Pair; bool private _progressSwap = false; error TransferExceedsMaxTx(); error TransferExceedsMaxWallet(); error NotOwnerOrOperations(); error ExceedsMaxTxAmount(uint amount, uint maxTxAmount); error InvalidAddress(address addr); error CannotSetMaxTxAmountToMoreThan10Percent(); error CannotSetMaxTxAmountToLessThanHalfPercent(); error CallFailed(); error InvalidReceiver(address); event SetOperationsWallet(address _newWallet, bool _status); event WhitelistAddress(address indexed addy, bool changer); event WithdrawETH(uint amount); event WithdrawTokens(address token, uint amount); event MaxWalletSet(uint from, uint to); event MaxTxAmountChange(uint from, uint to); event SwapAndLiquify(uint tokensSwapped, uint ethReceived); modifier onlyAdmin() { if (owner() != _msgSender() && admin != _msgSender()) { revert NotOwnerOrOperations(); } _; } constructor(string memory _symbol, string memory _name, address _admin ) ERC20(_name, _symbol) Ownable(_admin) { address _router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; router = IUniswapV2Router02(_router); admin = _admin; devwallet = 0x94d23B5Ece35c3E6D55f43fDbd2672c53B888197; marketingwallet = 0x7909848bD00Cb4344F1cfEde0cAD6dce66805B5E; noTax[admin] = true; noTax[marketingwallet] = true; noTax[address(this)] = true; noFeeFor[admin] = true; noFeeFor[marketingwallet] = true; noFeeFor[address(router)] = true; noFeeFor[address(this)] = true; /* _mint is an internal function in ERC20.sol that is only called here. This function cannot be called ever again. */ _mint(address(this), _totalSupply); _transfer(address(this), admin, (_totalSupply*920)/1000); _transfer(address(this), marketingwallet, (_totalSupply*80)/1000); uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair( address(this), router.WETH() ); } function _update(address from, address to, uint amount) internal override { if (to == address(0)) { revert InvalidReceiver(address(0)); } if (!noTax[from] && !noTax[to]) { if (to != uniswapV2Pair) { if (amount > getMaxTxAmount()) { revert TransferExceedsMaxTx(); } if ((amount + balanceOf(to)) > getMaxWalletAmount()) { revert TransferExceedsMaxWallet(); } } } uint transferAmount = amount; if (!noFeeFor[from] && !noFeeFor[to]) { if ((from == uniswapV2Pair || to == uniswapV2Pair)) { if (amount > getMaxTxAmount()) { revert ExceedsMaxTxAmount(amount, getMaxTxAmount()); } // Buy if ( TaxBuy > 0 && uniswapV2Pair == from && !noTax[to] && from != address(this) ) { uint feeTokens = (amount * TaxBuy) / 1_000; super._update(from, address(this), feeTokens); transferAmount = amount - feeTokens; } // Sell if ( uniswapV2Pair == to && !noTax[from] && to != address(this) && !_progressSwap ) { _progressSwap = true; liquify(); _progressSwap = false; uint feeTokens = (amount * TaxSell) / 1_000; super._update(from, address(this), feeTokens); transferAmount = amount - feeTokens; } } else { if (uniswapV2Pair != to) { uint256 feeTokens = (amount * TaxSell) / 1_000; super._update(from, address(this), feeTokens); transferAmount = amount - feeTokens; } } } super._update(from, to, transferAmount); } function liquify() internal { uint balance = balanceOf(address(this)); if (balance >= treshold) { _swap(balance, 0); } } function _swap(uint amountIn, uint amountOut) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); IERC20(address(this)).approve(address(router), type(uint).max); router.swapExactTokensForETHSupportingFeeOnTransferTokens( (amountIn * taxdev) / 1000, amountOut, path, devwallet, block.timestamp + 100 ); router.swapExactTokensForETHSupportingFeeOnTransferTokens( (amountIn * taxmarket) / 1000, amountOut, path, marketingwallet, block.timestamp + 100 ); emit SwapAndLiquify(amountIn, address(this).balance); } function whitdraw_team() external onlyAdmin { _swap(balanceOf(address(this)), 0); } function setNoFeeTo(address _newWallet, bool _status) external onlyAdmin { noTax[_newWallet] = _status; noFeeFor[_newWallet] = _status; emit SetOperationsWallet(_newWallet, _status); } function recoverAssets(address token) external onlyAdmin { uint amount = IERC20(token).balanceOf(address(this)); IERC20(token).transfer(admin, amount); emit WithdrawTokens(token, amount); } function recoverETH() external onlyAdmin { uint amount = address(this).balance; (bool success, ) = address(admin).call{value: amount}(""); if (!success) revert CallFailed(); emit WithdrawETH(amount); } function setNoTax(address addy, bool changer) external onlyAdmin { noTax[addy] = changer; emit WhitelistAddress(addy, changer); } function setTaxBuy(uint _taxBuy) external onlyAdmin { if (_taxBuy > 300) revert("Tax cannot exceed 30%"); TaxBuy = _taxBuy; } function setTaxSell(uint _taxSell) external onlyAdmin { if (_taxSell > 300) revert("Tax cannot exceed 30%"); TaxSell = _taxSell; } function setAdmin(address _newWallet) external onlyAdmin { admin = _newWallet; } receive() external payable {} function getMaxTxAmount() public view returns (uint256) { return (totalSupply() * maxTxAmount) / 1000; } function setMaxTxAmount(uint _maxTxAmount) external onlyAdmin { maxTxAmount = _maxTxAmount; } function getMaxWalletAmount() public view returns (uint256) { return (totalSupply() * maxWalletAmount) / 1000; } function setMaxWalletAmount(uint _maxWallAmount) external onlyAdmin { maxWalletAmount = _maxWallAmount; } function setTreshold(uint _treshold) external onlyAdmin { if (_treshold > 100) revert("Treshold cannot execeed 100%"); treshold = (_totalSupply*_treshold)/1000; } function setDevWallet(address _wallet) external onlyAdmin { devwallet=_wallet; } function setMarketingWallet(address _wallet) external onlyAdmin { marketingwallet=_wallet; } function getTaxes() external onlyAdmin { uint balance_to_split = balanceOf(address(this)); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); IERC20(address(this)).approve(address(router), type(uint).max); router.swapExactTokensForETHSupportingFeeOnTransferTokens( (balance_to_split * taxdev) / 1000, 0, path, devwallet, block.timestamp + 100 ); router.swapExactTokensForETHSupportingFeeOnTransferTokens( (balance_to_split * taxmarket) / 1000, 0, path, marketingwallet, block.timestamp + 100 ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CallFailed","type":"error"},{"inputs":[],"name":"CannotSetMaxTxAmountToLessThanHalfPercent","type":"error"},{"inputs":[],"name":"CannotSetMaxTxAmountToMoreThan10Percent","type":"error"},{"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":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"ExceedsMaxTxAmount","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"InvalidAddress","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"InvalidReceiver","type":"error"},{"inputs":[],"name":"NotOwnerOrOperations","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"TransferExceedsMaxTx","type":"error"},{"inputs":[],"name":"TransferExceedsMaxWallet","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":false,"internalType":"uint256","name":"from","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"to","type":"uint256"}],"name":"MaxTxAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"from","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"to","type":"uint256"}],"name":"MaxWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newWallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"SetOperationsWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addy","type":"address"},{"indexed":false,"internalType":"bool","name":"changer","type":"bool"}],"name":"WhitelistAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawTokens","type":"event"},{"inputs":[],"name":"TaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TaxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noFeeFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noTax","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"}],"name":"recoverAssets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setNoFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"changer","type":"bool"}],"name":"setNoTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxBuy","type":"uint256"}],"name":"setTaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxSell","type":"uint256"}],"name":"setTaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treshold","type":"uint256"}],"name":"setTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxdev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxmarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"treshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitdraw_team","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526005600655600a60075561012c60085561012c6009556101f4600a556101f4600b556a52b7d2dcc80cd2e4000000600c556103e8600f600c546200004991906200195b565b620000559190620019d2565b600d555f6014806101000a81548160ff0219169083151502179055503480156200007d575f80fd5b50604051620062c4380380620062c48339818101604052810190620000a3919062001bef565b8082848160039081620000b7919062001eb4565b508060049081620000c9919062001eb4565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000136919062001fa9565b60405180910390fd5b62000150816200082d60201b60201c565b505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507394d23b5ece35c3e6d55f43fdbd2672c53b888197600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737909848bd00cb4344f1cfede0cad6dce66805b5e60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160125f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200059d30600c54620008f060201b60201c565b620005f130600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166103e8610398600c54620005d991906200195b565b620005e59190620019d2565b6200097a60201b60201c565b620006443060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166103e86050600c546200062c91906200195b565b620006389190620019d2565b6200097a60201b60201c565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620006d5919062001fc4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000782919062001fc4565b6040518363ffffffff1660e01b8152600401620007a192919062001ff4565b6020604051808303815f875af1158015620007be573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007e4919062001fc4565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062002310565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000963575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200095a919062001fa9565b60405180910390fd5b620009765f838362000a7860201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009ed575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401620009e4919062001fa9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a60575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000a57919062001fa9565b60405180910390fd5b62000a7383838362000a7860201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000aeb575f6040517f9cfea58300000000000000000000000000000000000000000000000000000000815260040162000ae2919062001fa9565b60405180910390fd5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801562000b8a575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1562000c985760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000c975762000bf5620011d160201b60201c565b81111562000c2f576040517f214d5d2400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000c3f6200120560201b60201c565b62000c50836200123960201b60201c565b8262000c5d91906200201f565b111562000c96576040517f3d531c1b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5f81905060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801562000d3b575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15620011b85760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148062000de9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156200111a5762000dff620011d160201b60201c565b82111562000e57578162000e18620011d160201b60201c565b6040517f22a8406a00000000000000000000000000000000000000000000000000000000815260040162000e4e9291906200206a565b60405180910390fd5b5f60085411801562000eb557508373ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801562000f09575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801562000f4257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1562000f8f575f6103e86008548462000f5c91906200195b565b62000f689190620019d2565b905062000f7d8530836200127e60201b60201c565b808362000f8b919062002095565b9150505b8273ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801562001033575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156200106c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801562001084575060148054906101000a900460ff16155b15620011145760016014806101000a81548160ff021916908315150217905550620010b4620014a260201b60201c565b5f6014806101000a81548160ff0219169083151502179055505f6103e860095484620010e191906200195b565b620010ed9190620019d2565b9050620011028530836200127e60201b60201c565b808362001110919062002095565b9150505b620011b7565b8273ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620011b6575f6103e8600954846200118391906200195b565b6200118f9190620019d2565b9050620011a48530836200127e60201b60201c565b8083620011b2919062002095565b9150505b5b5b620011cb8484836200127e60201b60201c565b50505050565b5f6103e8600654620011e8620014d660201b60201c565b620011f491906200195b565b620012009190620019d2565b905090565b5f6103e86007546200121c620014d660201b60201c565b6200122891906200195b565b620012349190620019d2565b905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620012d2578060025f828254620012c591906200201f565b92505081905550620013a3565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200135e578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200135593929190620020cf565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620013ec578060025f828254039250508190555062001436565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200149591906200210a565b60405180910390a3505050565b5f620014b4306200123960201b60201c565b9050600d548110620014d357620014d2815f620014df60201b60201c565b5b50565b5f600254905090565b5f600267ffffffffffffffff811115620014fe57620014fd62001a32565b5b6040519080825280602002602001820160405280156200152d5781602001602082028036833780820191505090505b50905030815f8151811062001547576200154662002125565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620015ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001612919062001fc4565b8160018151811062001629576200162862002125565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620016e192919062002152565b6020604051808303815f875af1158015620016fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620017249190620021b7565b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600a54866200177591906200195b565b620017819190620019d2565b8484600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606442620017b491906200201f565b6040518663ffffffff1660e01b8152600401620017d6959493929190620022ae565b5f604051808303815f87803b158015620017ee575f80fd5b505af115801562001801573d5f803e3d5ffd5b5050505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600b54866200185591906200195b565b620018619190620019d2565b848460105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064426200189491906200201f565b6040518663ffffffff1660e01b8152600401620018b6959493929190620022ae565b5f604051808303815f87803b158015620018ce575f80fd5b505af1158015620018e1573d5f803e3d5ffd5b505050507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868347604051620019189291906200206a565b60405180910390a1505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620019678262001925565b9150620019748362001925565b9250828202620019848162001925565b915082820484148315176200199e576200199d6200192e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620019de8262001925565b9150620019eb8362001925565b925082620019fe57620019fd620019a5565b5b828204905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62001a6a8262001a22565b810181811067ffffffffffffffff8211171562001a8c5762001a8b62001a32565b5b80604052505050565b5f62001aa062001a09565b905062001aae828262001a5f565b919050565b5f67ffffffffffffffff82111562001ad05762001acf62001a32565b5b62001adb8262001a22565b9050602081019050919050565b5f5b8381101562001b0757808201518184015260208101905062001aea565b5f8484015250505050565b5f62001b2862001b228462001ab3565b62001a95565b90508281526020810184848401111562001b475762001b4662001a1e565b5b62001b5484828562001ae8565b509392505050565b5f82601f83011262001b735762001b7262001a1a565b5b815162001b8584826020860162001b12565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62001bb98262001b8e565b9050919050565b62001bcb8162001bad565b811462001bd6575f80fd5b50565b5f8151905062001be98162001bc0565b92915050565b5f805f6060848603121562001c095762001c0862001a12565b5b5f84015167ffffffffffffffff81111562001c295762001c2862001a16565b5b62001c378682870162001b5c565b935050602084015167ffffffffffffffff81111562001c5b5762001c5a62001a16565b5b62001c698682870162001b5c565b925050604062001c7c8682870162001bd9565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062001cd557607f821691505b60208210810362001ceb5762001cea62001c90565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262001d4f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001d12565b62001d5b868362001d12565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62001d9c62001d9662001d908462001925565b62001d73565b62001925565b9050919050565b5f819050919050565b62001db78362001d7c565b62001dcf62001dc68262001da3565b84845462001d1e565b825550505050565b5f90565b62001de562001dd7565b62001df281848462001dac565b505050565b5b8181101562001e195762001e0d5f8262001ddb565b60018101905062001df8565b5050565b601f82111562001e685762001e328162001cf1565b62001e3d8462001d03565b8101602085101562001e4d578190505b62001e6562001e5c8562001d03565b83018262001df7565b50505b505050565b5f82821c905092915050565b5f62001e8a5f198460080262001e6d565b1980831691505092915050565b5f62001ea4838362001e79565b9150826002028217905092915050565b62001ebf8262001c86565b67ffffffffffffffff81111562001edb5762001eda62001a32565b5b62001ee7825462001cbd565b62001ef482828562001e1d565b5f60209050601f83116001811462001f2a575f841562001f15578287015190505b62001f21858262001e97565b86555062001f90565b601f19841662001f3a8662001cf1565b5f5b8281101562001f635784890151825560018201915060208501945060208101905062001f3c565b8683101562001f83578489015162001f7f601f89168262001e79565b8355505b6001600288020188555050505b505050505050565b62001fa38162001bad565b82525050565b5f60208201905062001fbe5f83018462001f98565b92915050565b5f6020828403121562001fdc5762001fdb62001a12565b5b5f62001feb8482850162001bd9565b91505092915050565b5f604082019050620020095f83018562001f98565b62002018602083018462001f98565b9392505050565b5f6200202b8262001925565b9150620020388362001925565b92508282019050808211156200205357620020526200192e565b5b92915050565b620020648162001925565b82525050565b5f6040820190506200207f5f83018562002059565b6200208e602083018462002059565b9392505050565b5f620020a18262001925565b9150620020ae8362001925565b9250828203905081811115620020c957620020c86200192e565b5b92915050565b5f606082019050620020e45f83018662001f98565b620020f3602083018562002059565b62002102604083018462002059565b949350505050565b5f6020820190506200211f5f83018462002059565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050620021675f83018562001f98565b62002176602083018462002059565b9392505050565b5f8115159050919050565b62002193816200217d565b81146200219e575f80fd5b50565b5f81519050620021b18162002188565b92915050565b5f60208284031215620021cf57620021ce62001a12565b5b5f620021de84828501620021a1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6200221b8162001bad565b82525050565b5f6200222e838362002210565b60208301905092915050565b5f602082019050919050565b5f6200225282620021e7565b6200225e8185620021f1565b93506200226b8362002201565b805f5b83811015620022a157815162002285888262002221565b975062002292836200223a565b9250506001810190506200226e565b5085935050505092915050565b5f60a082019050620022c35f83018862002059565b620022d2602083018762002059565b8181036040830152620022e6818662002246565b9050620022f7606083018562001f98565b62002306608083018462002059565b9695505050505050565b613fa6806200231e5f395ff3fe60806040526004361061025f575f3560e01c80636d8b052711610143578063a42fdb0f116100b5578063dd62ed3e11610079578063dd62ed3e14610872578063ec28438a146108ae578063f2fde38b146108d6578063f851a440146108fe578063f887ea4014610928578063fa8ce5931461095257610266565b8063a42fdb0f14610794578063a9059cbb146107bc578063aa4bde28146107f8578063bc84a26914610822578063d71958b31461084a57610266565b806381720fcc1161010757806381720fcc146106ae57806384152c0a146106d65780638c0b5e22146106ec5780638da5cb5b14610716578063922110e51461074057806395d89b411461076a57610266565b80636d8b0527146105e05780636f4eea571461060a578063704b6c021461063457806370a082311461065c578063715018a61461069857610266565b80632f507df7116101dc578063385e8115116101a0578063385e8115146104e85780633eaaf86b14610512578063433805ae1461053c57806349bd5a5e146105665780634beac072146105905780635d098b38146105b857610266565b80632f507df714610418578063313ce56714610440578063340fe40d1461046a57806337cbc5e114610494578063382512e8146104be57610266565b806318160ddd1161022357806318160ddd1461034c5780631f53ac021461037657806323b872dd1461039e57806327a14fc2146103da5780632973ef2d1461040257610266565b80630614117a1461026a57806306fdde0314610280578063095ea7b3146102aa57806309c95a1b146102e6578063151ebae61461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e61098e565b005b34801561028b575f80fd5b50610294610b62565b6040516102a1919061360a565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb91906136bb565b610bf2565b6040516102dd9190613713565b60405180910390f35b3480156102f1575f80fd5b506102fa610c14565b604051610307919061373b565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613754565b610c3c565b6040516103439190613713565b60405180910390f35b348015610357575f80fd5b50610360610c59565b60405161036d919061373b565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190613754565b610c62565b005b3480156103a9575f80fd5b506103c460048036038101906103bf919061377f565b610d7a565b6040516103d19190613713565b60405180910390f35b3480156103e5575f80fd5b5061040060048036038101906103fb91906137cf565b610da8565b005b34801561040d575f80fd5b50610416610e87565b005b348015610423575f80fd5b5061043e60048036038101906104399190613824565b61134c565b005b34801561044b575f80fd5b506104546114c7565b604051610461919061387d565b60405180910390f35b348015610475575f80fd5b5061047e6114cf565b60405161048b91906138a5565b60405180910390f35b34801561049f575f80fd5b506104a86114f4565b6040516104b5919061373b565b60405180910390f35b3480156104c9575f80fd5b506104d26114fa565b6040516104df919061373b565b60405180910390f35b3480156104f3575f80fd5b506104fc611500565b60405161050991906138a5565b60405180910390f35b34801561051d575f80fd5b50610526611525565b604051610533919061373b565b60405180910390f35b348015610547575f80fd5b5061055061152b565b60405161055d919061373b565b60405180910390f35b348015610571575f80fd5b5061057a611531565b60405161058791906138a5565b60405180910390f35b34801561059b575f80fd5b506105b660048036038101906105b19190613824565b611556565b005b3480156105c3575f80fd5b506105de60048036038101906105d99190613754565b611710565b005b3480156105eb575f80fd5b506105f4611828565b604051610601919061373b565b60405180910390f35b348015610615575f80fd5b5061061e611850565b60405161062b919061373b565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613754565b611856565b005b348015610667575f80fd5b50610682600480360381019061067d9190613754565b61196e565b60405161068f919061373b565b60405180910390f35b3480156106a3575f80fd5b506106ac6119b3565b005b3480156106b9575f80fd5b506106d460048036038101906106cf9190613754565b6119c6565b005b3480156106e1575f80fd5b506106ea611bf0565b005b3480156106f7575f80fd5b50610700611cd9565b60405161070d919061373b565b60405180910390f35b348015610721575f80fd5b5061072a611cdf565b60405161073791906138a5565b60405180910390f35b34801561074b575f80fd5b50610754611d07565b604051610761919061373b565b60405180910390f35b348015610775575f80fd5b5061077e611d0d565b60405161078b919061360a565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b591906137cf565b611d9d565b005b3480156107c7575f80fd5b506107e260048036038101906107dd91906136bb565b611ec1565b6040516107ef9190613713565b60405180910390f35b348015610803575f80fd5b5061080c611ee3565b604051610819919061373b565b60405180910390f35b34801561082d575f80fd5b50610848600480360381019061084391906137cf565b611ee9565b005b348015610855575f80fd5b50610870600480360381019061086b91906137cf565b612026565b005b34801561087d575f80fd5b50610898600480360381019061089391906138be565b61214a565b6040516108a5919061373b565b60405180910390f35b3480156108b9575f80fd5b506108d460048036038101906108cf91906137cf565b6121cc565b005b3480156108e1575f80fd5b506108fc60048036038101906108f79190613754565b6122ab565b005b348015610909575f80fd5b5061091261232f565b60405161091f91906138a5565b60405180910390f35b348015610933575f80fd5b5061093c612354565b6040516109499190613957565b60405180910390f35b34801561095d575f80fd5b5061097860048036038101906109739190613754565b612379565b6040516109859190613713565b60405180910390f35b610996612396565b73ffffffffffffffffffffffffffffffffffffffff166109b4611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a2c57506109db612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610a63576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f4790505f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610aad9061399d565b5f6040518083038185875af1925050503d805f8114610ae7576040519150601f19603f3d011682016040523d82523d5f602084013e610aec565b606091505b5050905080610b27576040517f3204506f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f94effa14ea3a1ef396fa2fd829336d1597f1d76b548c26bfa2332869706638af82604051610b56919061373b565b60405180910390a15050565b606060038054610b71906139de565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9d906139de565b8015610be85780601f10610bbf57610100808354040283529160200191610be8565b820191905f5260205f20905b815481529060010190602001808311610bcb57829003601f168201915b5050505050905090565b5f80610bfc612396565b9050610c0981858561239d565b600191505092915050565b5f6103e8600754610c23610c59565b610c2d9190613a3b565b610c379190613aa9565b905090565b6012602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b610c6a612396565b73ffffffffffffffffffffffffffffffffffffffff16610c88611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d005750610caf612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610d37576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610d84612396565b9050610d918582856123af565b610d9c858585612441565b60019150509392505050565b610db0612396565b73ffffffffffffffffffffffffffffffffffffffff16610dce611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015610e465750610df5612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610e7d576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060078190555050565b610e8f612396565b73ffffffffffffffffffffffffffffffffffffffff16610ead611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015610f255750610ed4612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610f5c576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f663061196e565b90505f600267ffffffffffffffff811115610f8457610f83613ad9565b5b604051908082528060200260200182016040528015610fb25781602001602082028036833780820191505090505b50905030815f81518110610fc957610fc8613b06565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110919190613b47565b816001815181106110a5576110a4613b06565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161115b929190613b72565b6020604051808303815f875af1158015611177573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119b9190613bad565b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600a54856111ea9190613a3b565b6111f49190613aa9565b5f84600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064426112259190613bd8565b6040518663ffffffff1660e01b8152600401611245959493929190613cfb565b5f604051808303815f87803b15801561125c575f80fd5b505af115801561126e573d5f803e3d5ffd5b5050505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600b54856112c09190613a3b565b6112ca9190613aa9565b5f8460105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064426112fb9190613bd8565b6040518663ffffffff1660e01b815260040161131b959493929190613cfb565b5f604051808303815f87803b158015611332575f80fd5b505af1158015611344573d5f803e3d5ffd5b505050505050565b611354612396565b73ffffffffffffffffffffffffffffffffffffffff16611372611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156113ea5750611399612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611421576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f33e0bf3ce98fac4118d5a0a8fe49e83b6acdfdef32871c9eca20e1528d7701ba826040516114bb9190613713565b60405180910390a25050565b5f6012905090565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600d5481565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60095481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61155e612396565b73ffffffffffffffffffffffffffffffffffffffff1661157c611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156115f457506115a3612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561162b576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f88b6cb060cc9fbebf4f751c0775113faa373d0f0a39d623a9596b17e481ea7498282604051611704929190613d53565b60405180910390a15050565b611718612396565b73ffffffffffffffffffffffffffffffffffffffff16611736611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156117ae575061175d612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156117e5576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6103e8600654611837610c59565b6118419190613a3b565b61184b9190613aa9565b905090565b600a5481565b61185e612396565b73ffffffffffffffffffffffffffffffffffffffff1661187c611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156118f457506118a3612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561192b576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6119bb612531565b6119c45f6125b8565b565b6119ce612396565b73ffffffffffffffffffffffffffffffffffffffff166119ec611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611a645750611a13612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611a9b576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ad591906138a5565b602060405180830381865afa158015611af0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b149190613d8e565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611b72929190613b72565b6020604051808303815f875af1158015611b8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb29190613bad565b507f680f2e4f4032ebf1774e8cdbaddcb1b617a5a606411c8ca96257ada338d3833c8282604051611be4929190613b72565b60405180910390a15050565b611bf8612396565b73ffffffffffffffffffffffffffffffffffffffff16611c16611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611c8e5750611c3d612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611cc5576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cd7611cd13061196e565b5f61267b565b565b60065481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b606060048054611d1c906139de565b80601f0160208091040260200160405190810160405280929190818152602001828054611d48906139de565b8015611d935780601f10611d6a57610100808354040283529160200191611d93565b820191905f5260205f20905b815481529060010190602001808311611d7657829003601f168201915b5050505050905090565b611da5612396565b73ffffffffffffffffffffffffffffffffffffffff16611dc3611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611e3b5750611dea612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611e72576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012c811115611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae90613e03565b60405180910390fd5b8060098190555050565b5f80611ecb612396565b9050611ed8818585612441565b600191505092915050565b60075481565b611ef1612396565b73ffffffffffffffffffffffffffffffffffffffff16611f0f611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611f875750611f36612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064811115612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff990613e6b565b60405180910390fd5b6103e881600c546120139190613a3b565b61201d9190613aa9565b600d8190555050565b61202e612396565b73ffffffffffffffffffffffffffffffffffffffff1661204c611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156120c45750612073612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156120fb576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012c811115612140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213790613e03565b60405180910390fd5b8060088190555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6121d4612396565b73ffffffffffffffffffffffffffffffffffffffff166121f2611cdf565b73ffffffffffffffffffffffffffffffffffffffff161415801561226a5750612219612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156122a1576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060068190555050565b6122b3612531565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612323575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161231a91906138a5565b60405180910390fd5b61232c816125b8565b50565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b6123aa8383836001612a99565b505050565b5f6123ba848461214a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461243b578181101561242c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161242393929190613e89565b60405180910390fd5b61243a84848484035f612a99565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124b1575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016124a891906138a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612521575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161251891906138a5565b60405180910390fd5b61252c838383612c68565b505050565b612539612396565b73ffffffffffffffffffffffffffffffffffffffff16612557611cdf565b73ffffffffffffffffffffffffffffffffffffffff16146125b65761257a612396565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016125ad91906138a5565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561269757612696613ad9565b5b6040519080825280602002602001820160405280156126c55781602001602082028036833780820191505090505b50905030815f815181106126dc576126db613b06565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612780573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a49190613b47565b816001815181106127b8576127b7613b06565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161286e929190613b72565b6020604051808303815f875af115801561288a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ae9190613bad565b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600a54866128fd9190613a3b565b6129079190613aa9565b8484600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064426129389190613bd8565b6040518663ffffffff1660e01b8152600401612958959493929190613ebe565b5f604051808303815f87803b15801561296f575f80fd5b505af1158015612981573d5f803e3d5ffd5b5050505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600b54866129d39190613a3b565b6129dd9190613aa9565b848460105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606442612a0e9190613bd8565b6040518663ffffffff1660e01b8152600401612a2e959493929190613ebe565b5f604051808303815f87803b158015612a45575f80fd5b505af1158015612a57573d5f803e3d5ffd5b505050507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868347604051612a8c929190613f16565b60405180910390a1505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612b09575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401612b0091906138a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b79575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401612b7091906138a5565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612c62578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612c59919061373b565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cd8575f6040517f9cfea583000000000000000000000000000000000000000000000000000000008152600401612ccf91906138a5565b60405180910390fd5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612d76575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e665760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612e6557612dd7611828565b811115612e10576040517f214d5d2400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e18610c14565b612e218361196e565b82612e2c9190613bd8565b1115612e64576040517f3d531c1b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5f81905060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612f08575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156133335760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612fb4575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156132a457612fc1611828565b82111561300e5781612fd1611828565b6040517f22a8406a000000000000000000000000000000000000000000000000000000008152600401613005929190613f16565b60405180910390fd5b5f60085411801561306b57508373ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156130be575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130f657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613134575f6103e86008548461310d9190613a3b565b6131179190613aa9565b9050613124853083613344565b80836131309190613f3d565b9150505b8273ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156131d7575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561320f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613226575060148054906101000a900460ff16155b1561329f5760016014806101000a81548160ff02191690831515021790555061324d61355d565b5f6014806101000a81548160ff0219169083151502179055505f6103e8600954846132789190613a3b565b6132829190613aa9565b905061328f853083613344565b808361329b9190613f3d565b9150505b613332565b8273ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613331575f6103e86009548461330a9190613a3b565b6133149190613aa9565b9050613321853083613344565b808361332d9190613f3d565b9150505b5b5b61333e848483613344565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613394578060025f8282546133889190613bd8565b92505081905550613462565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561341d578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161341493929190613e89565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134a9578060025f82825403925050819055506134f3565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613550919061373b565b60405180910390a3505050565b5f6135673061196e565b9050600d54811061357d5761357c815f61267b565b5b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135b757808201518184015260208101905061359c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135dc82613580565b6135e6818561358a565b93506135f681856020860161359a565b6135ff816135c2565b840191505092915050565b5f6020820190508181035f83015261362281846135d2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136578261362e565b9050919050565b6136678161364d565b8114613671575f80fd5b50565b5f813590506136828161365e565b92915050565b5f819050919050565b61369a81613688565b81146136a4575f80fd5b50565b5f813590506136b581613691565b92915050565b5f80604083850312156136d1576136d061362a565b5b5f6136de85828601613674565b92505060206136ef858286016136a7565b9150509250929050565b5f8115159050919050565b61370d816136f9565b82525050565b5f6020820190506137265f830184613704565b92915050565b61373581613688565b82525050565b5f60208201905061374e5f83018461372c565b92915050565b5f602082840312156137695761376861362a565b5b5f61377684828501613674565b91505092915050565b5f805f606084860312156137965761379561362a565b5b5f6137a386828701613674565b93505060206137b486828701613674565b92505060406137c5868287016136a7565b9150509250925092565b5f602082840312156137e4576137e361362a565b5b5f6137f1848285016136a7565b91505092915050565b613803816136f9565b811461380d575f80fd5b50565b5f8135905061381e816137fa565b92915050565b5f806040838503121561383a5761383961362a565b5b5f61384785828601613674565b925050602061385885828601613810565b9150509250929050565b5f60ff82169050919050565b61387781613862565b82525050565b5f6020820190506138905f83018461386e565b92915050565b61389f8161364d565b82525050565b5f6020820190506138b85f830184613896565b92915050565b5f80604083850312156138d4576138d361362a565b5b5f6138e185828601613674565b92505060206138f285828601613674565b9150509250929050565b5f819050919050565b5f61391f61391a6139158461362e565b6138fc565b61362e565b9050919050565b5f61393082613905565b9050919050565b5f61394182613926565b9050919050565b61395181613937565b82525050565b5f60208201905061396a5f830184613948565b92915050565b5f81905092915050565b50565b5f6139885f83613970565b91506139938261397a565b5f82019050919050565b5f6139a78261397d565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139f557607f821691505b602082108103613a0857613a076139b1565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a4582613688565b9150613a5083613688565b9250828202613a5e81613688565b91508282048414831517613a7557613a74613a0e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ab382613688565b9150613abe83613688565b925082613ace57613acd613a7c565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613b418161365e565b92915050565b5f60208284031215613b5c57613b5b61362a565b5b5f613b6984828501613b33565b91505092915050565b5f604082019050613b855f830185613896565b613b92602083018461372c565b9392505050565b5f81519050613ba7816137fa565b92915050565b5f60208284031215613bc257613bc161362a565b5b5f613bcf84828501613b99565b91505092915050565b5f613be282613688565b9150613bed83613688565b9250828201905080821115613c0557613c04613a0e565b5b92915050565b5f819050919050565b5f613c2e613c29613c2484613c0b565b6138fc565b613688565b9050919050565b613c3e81613c14565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c768161364d565b82525050565b5f613c878383613c6d565b60208301905092915050565b5f602082019050919050565b5f613ca982613c44565b613cb38185613c4e565b9350613cbe83613c5e565b805f5b83811015613cee578151613cd58882613c7c565b9750613ce083613c93565b925050600181019050613cc1565b5085935050505092915050565b5f60a082019050613d0e5f83018861372c565b613d1b6020830187613c35565b8181036040830152613d2d8186613c9f565b9050613d3c6060830185613896565b613d49608083018461372c565b9695505050505050565b5f604082019050613d665f830185613896565b613d736020830184613704565b9392505050565b5f81519050613d8881613691565b92915050565b5f60208284031215613da357613da261362a565b5b5f613db084828501613d7a565b91505092915050565b7f5461782063616e6e6f74206578636565642033302500000000000000000000005f82015250565b5f613ded60158361358a565b9150613df882613db9565b602082019050919050565b5f6020820190508181035f830152613e1a81613de1565b9050919050565b7f54726573686f6c642063616e6e6f7420657865636565642031303025000000005f82015250565b5f613e55601c8361358a565b9150613e6082613e21565b602082019050919050565b5f6020820190508181035f830152613e8281613e49565b9050919050565b5f606082019050613e9c5f830186613896565b613ea9602083018561372c565b613eb6604083018461372c565b949350505050565b5f60a082019050613ed15f83018861372c565b613ede602083018761372c565b8181036040830152613ef08186613c9f565b9050613eff6060830185613896565b613f0c608083018461372c565b9695505050505050565b5f604082019050613f295f83018561372c565b613f36602083018461372c565b9392505050565b5f613f4782613688565b9150613f5283613688565b9250828203905081811115613f6a57613f69613a0e565b5b9291505056fea2646970667358221220a409dd0d293cf96047e2b8d2de2867b6090f16368936b84c5454a6b163c388cf64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000af22df5eb333647179ffb6f3e20202b92e95e4dc000000000000000000000000000000000000000000000000000000000000000453594e4b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000453796e6b00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061025f575f3560e01c80636d8b052711610143578063a42fdb0f116100b5578063dd62ed3e11610079578063dd62ed3e14610872578063ec28438a146108ae578063f2fde38b146108d6578063f851a440146108fe578063f887ea4014610928578063fa8ce5931461095257610266565b8063a42fdb0f14610794578063a9059cbb146107bc578063aa4bde28146107f8578063bc84a26914610822578063d71958b31461084a57610266565b806381720fcc1161010757806381720fcc146106ae57806384152c0a146106d65780638c0b5e22146106ec5780638da5cb5b14610716578063922110e51461074057806395d89b411461076a57610266565b80636d8b0527146105e05780636f4eea571461060a578063704b6c021461063457806370a082311461065c578063715018a61461069857610266565b80632f507df7116101dc578063385e8115116101a0578063385e8115146104e85780633eaaf86b14610512578063433805ae1461053c57806349bd5a5e146105665780634beac072146105905780635d098b38146105b857610266565b80632f507df714610418578063313ce56714610440578063340fe40d1461046a57806337cbc5e114610494578063382512e8146104be57610266565b806318160ddd1161022357806318160ddd1461034c5780631f53ac021461037657806323b872dd1461039e57806327a14fc2146103da5780632973ef2d1461040257610266565b80630614117a1461026a57806306fdde0314610280578063095ea7b3146102aa57806309c95a1b146102e6578063151ebae61461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e61098e565b005b34801561028b575f80fd5b50610294610b62565b6040516102a1919061360a565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb91906136bb565b610bf2565b6040516102dd9190613713565b60405180910390f35b3480156102f1575f80fd5b506102fa610c14565b604051610307919061373b565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613754565b610c3c565b6040516103439190613713565b60405180910390f35b348015610357575f80fd5b50610360610c59565b60405161036d919061373b565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190613754565b610c62565b005b3480156103a9575f80fd5b506103c460048036038101906103bf919061377f565b610d7a565b6040516103d19190613713565b60405180910390f35b3480156103e5575f80fd5b5061040060048036038101906103fb91906137cf565b610da8565b005b34801561040d575f80fd5b50610416610e87565b005b348015610423575f80fd5b5061043e60048036038101906104399190613824565b61134c565b005b34801561044b575f80fd5b506104546114c7565b604051610461919061387d565b60405180910390f35b348015610475575f80fd5b5061047e6114cf565b60405161048b91906138a5565b60405180910390f35b34801561049f575f80fd5b506104a86114f4565b6040516104b5919061373b565b60405180910390f35b3480156104c9575f80fd5b506104d26114fa565b6040516104df919061373b565b60405180910390f35b3480156104f3575f80fd5b506104fc611500565b60405161050991906138a5565b60405180910390f35b34801561051d575f80fd5b50610526611525565b604051610533919061373b565b60405180910390f35b348015610547575f80fd5b5061055061152b565b60405161055d919061373b565b60405180910390f35b348015610571575f80fd5b5061057a611531565b60405161058791906138a5565b60405180910390f35b34801561059b575f80fd5b506105b660048036038101906105b19190613824565b611556565b005b3480156105c3575f80fd5b506105de60048036038101906105d99190613754565b611710565b005b3480156105eb575f80fd5b506105f4611828565b604051610601919061373b565b60405180910390f35b348015610615575f80fd5b5061061e611850565b60405161062b919061373b565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613754565b611856565b005b348015610667575f80fd5b50610682600480360381019061067d9190613754565b61196e565b60405161068f919061373b565b60405180910390f35b3480156106a3575f80fd5b506106ac6119b3565b005b3480156106b9575f80fd5b506106d460048036038101906106cf9190613754565b6119c6565b005b3480156106e1575f80fd5b506106ea611bf0565b005b3480156106f7575f80fd5b50610700611cd9565b60405161070d919061373b565b60405180910390f35b348015610721575f80fd5b5061072a611cdf565b60405161073791906138a5565b60405180910390f35b34801561074b575f80fd5b50610754611d07565b604051610761919061373b565b60405180910390f35b348015610775575f80fd5b5061077e611d0d565b60405161078b919061360a565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b591906137cf565b611d9d565b005b3480156107c7575f80fd5b506107e260048036038101906107dd91906136bb565b611ec1565b6040516107ef9190613713565b60405180910390f35b348015610803575f80fd5b5061080c611ee3565b604051610819919061373b565b60405180910390f35b34801561082d575f80fd5b50610848600480360381019061084391906137cf565b611ee9565b005b348015610855575f80fd5b50610870600480360381019061086b91906137cf565b612026565b005b34801561087d575f80fd5b50610898600480360381019061089391906138be565b61214a565b6040516108a5919061373b565b60405180910390f35b3480156108b9575f80fd5b506108d460048036038101906108cf91906137cf565b6121cc565b005b3480156108e1575f80fd5b506108fc60048036038101906108f79190613754565b6122ab565b005b348015610909575f80fd5b5061091261232f565b60405161091f91906138a5565b60405180910390f35b348015610933575f80fd5b5061093c612354565b6040516109499190613957565b60405180910390f35b34801561095d575f80fd5b5061097860048036038101906109739190613754565b612379565b6040516109859190613713565b60405180910390f35b610996612396565b73ffffffffffffffffffffffffffffffffffffffff166109b4611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a2c57506109db612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610a63576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f4790505f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610aad9061399d565b5f6040518083038185875af1925050503d805f8114610ae7576040519150601f19603f3d011682016040523d82523d5f602084013e610aec565b606091505b5050905080610b27576040517f3204506f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f94effa14ea3a1ef396fa2fd829336d1597f1d76b548c26bfa2332869706638af82604051610b56919061373b565b60405180910390a15050565b606060038054610b71906139de565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9d906139de565b8015610be85780601f10610bbf57610100808354040283529160200191610be8565b820191905f5260205f20905b815481529060010190602001808311610bcb57829003601f168201915b5050505050905090565b5f80610bfc612396565b9050610c0981858561239d565b600191505092915050565b5f6103e8600754610c23610c59565b610c2d9190613a3b565b610c379190613aa9565b905090565b6012602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b610c6a612396565b73ffffffffffffffffffffffffffffffffffffffff16610c88611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d005750610caf612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610d37576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610d84612396565b9050610d918582856123af565b610d9c858585612441565b60019150509392505050565b610db0612396565b73ffffffffffffffffffffffffffffffffffffffff16610dce611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015610e465750610df5612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610e7d576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060078190555050565b610e8f612396565b73ffffffffffffffffffffffffffffffffffffffff16610ead611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015610f255750610ed4612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610f5c576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f663061196e565b90505f600267ffffffffffffffff811115610f8457610f83613ad9565b5b604051908082528060200260200182016040528015610fb25781602001602082028036833780820191505090505b50905030815f81518110610fc957610fc8613b06565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110919190613b47565b816001815181106110a5576110a4613b06565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161115b929190613b72565b6020604051808303815f875af1158015611177573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119b9190613bad565b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600a54856111ea9190613a3b565b6111f49190613aa9565b5f84600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064426112259190613bd8565b6040518663ffffffff1660e01b8152600401611245959493929190613cfb565b5f604051808303815f87803b15801561125c575f80fd5b505af115801561126e573d5f803e3d5ffd5b5050505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600b54856112c09190613a3b565b6112ca9190613aa9565b5f8460105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064426112fb9190613bd8565b6040518663ffffffff1660e01b815260040161131b959493929190613cfb565b5f604051808303815f87803b158015611332575f80fd5b505af1158015611344573d5f803e3d5ffd5b505050505050565b611354612396565b73ffffffffffffffffffffffffffffffffffffffff16611372611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156113ea5750611399612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611421576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f33e0bf3ce98fac4118d5a0a8fe49e83b6acdfdef32871c9eca20e1528d7701ba826040516114bb9190613713565b60405180910390a25050565b5f6012905090565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600d5481565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60095481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61155e612396565b73ffffffffffffffffffffffffffffffffffffffff1661157c611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156115f457506115a3612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561162b576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f88b6cb060cc9fbebf4f751c0775113faa373d0f0a39d623a9596b17e481ea7498282604051611704929190613d53565b60405180910390a15050565b611718612396565b73ffffffffffffffffffffffffffffffffffffffff16611736611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156117ae575061175d612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156117e5576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6103e8600654611837610c59565b6118419190613a3b565b61184b9190613aa9565b905090565b600a5481565b61185e612396565b73ffffffffffffffffffffffffffffffffffffffff1661187c611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156118f457506118a3612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561192b576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6119bb612531565b6119c45f6125b8565b565b6119ce612396565b73ffffffffffffffffffffffffffffffffffffffff166119ec611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611a645750611a13612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611a9b576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ad591906138a5565b602060405180830381865afa158015611af0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b149190613d8e565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611b72929190613b72565b6020604051808303815f875af1158015611b8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb29190613bad565b507f680f2e4f4032ebf1774e8cdbaddcb1b617a5a606411c8ca96257ada338d3833c8282604051611be4929190613b72565b60405180910390a15050565b611bf8612396565b73ffffffffffffffffffffffffffffffffffffffff16611c16611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611c8e5750611c3d612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611cc5576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cd7611cd13061196e565b5f61267b565b565b60065481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b606060048054611d1c906139de565b80601f0160208091040260200160405190810160405280929190818152602001828054611d48906139de565b8015611d935780601f10611d6a57610100808354040283529160200191611d93565b820191905f5260205f20905b815481529060010190602001808311611d7657829003601f168201915b5050505050905090565b611da5612396565b73ffffffffffffffffffffffffffffffffffffffff16611dc3611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611e3b5750611dea612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611e72576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012c811115611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae90613e03565b60405180910390fd5b8060098190555050565b5f80611ecb612396565b9050611ed8818585612441565b600191505092915050565b60075481565b611ef1612396565b73ffffffffffffffffffffffffffffffffffffffff16611f0f611cdf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611f875750611f36612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064811115612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff990613e6b565b60405180910390fd5b6103e881600c546120139190613a3b565b61201d9190613aa9565b600d8190555050565b61202e612396565b73ffffffffffffffffffffffffffffffffffffffff1661204c611cdf565b73ffffffffffffffffffffffffffffffffffffffff16141580156120c45750612073612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156120fb576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012c811115612140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213790613e03565b60405180910390fd5b8060088190555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6121d4612396565b73ffffffffffffffffffffffffffffffffffffffff166121f2611cdf565b73ffffffffffffffffffffffffffffffffffffffff161415801561226a5750612219612396565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156122a1576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060068190555050565b6122b3612531565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612323575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161231a91906138a5565b60405180910390fd5b61232c816125b8565b50565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b6123aa8383836001612a99565b505050565b5f6123ba848461214a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461243b578181101561242c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161242393929190613e89565b60405180910390fd5b61243a84848484035f612a99565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124b1575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016124a891906138a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612521575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161251891906138a5565b60405180910390fd5b61252c838383612c68565b505050565b612539612396565b73ffffffffffffffffffffffffffffffffffffffff16612557611cdf565b73ffffffffffffffffffffffffffffffffffffffff16146125b65761257a612396565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016125ad91906138a5565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561269757612696613ad9565b5b6040519080825280602002602001820160405280156126c55781602001602082028036833780820191505090505b50905030815f815181106126dc576126db613b06565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612780573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a49190613b47565b816001815181106127b8576127b7613b06565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161286e929190613b72565b6020604051808303815f875af115801561288a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ae9190613bad565b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600a54866128fd9190613a3b565b6129079190613aa9565b8484600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064426129389190613bd8565b6040518663ffffffff1660e01b8152600401612958959493929190613ebe565b5f604051808303815f87803b15801561296f575f80fd5b505af1158015612981573d5f803e3d5ffd5b5050505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476103e8600b54866129d39190613a3b565b6129dd9190613aa9565b848460105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606442612a0e9190613bd8565b6040518663ffffffff1660e01b8152600401612a2e959493929190613ebe565b5f604051808303815f87803b158015612a45575f80fd5b505af1158015612a57573d5f803e3d5ffd5b505050507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868347604051612a8c929190613f16565b60405180910390a1505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612b09575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401612b0091906138a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b79575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401612b7091906138a5565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612c62578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612c59919061373b565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cd8575f6040517f9cfea583000000000000000000000000000000000000000000000000000000008152600401612ccf91906138a5565b60405180910390fd5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612d76575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e665760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612e6557612dd7611828565b811115612e10576040517f214d5d2400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e18610c14565b612e218361196e565b82612e2c9190613bd8565b1115612e64576040517f3d531c1b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5f81905060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612f08575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156133335760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612fb4575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156132a457612fc1611828565b82111561300e5781612fd1611828565b6040517f22a8406a000000000000000000000000000000000000000000000000000000008152600401613005929190613f16565b60405180910390fd5b5f60085411801561306b57508373ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156130be575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130f657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613134575f6103e86008548461310d9190613a3b565b6131179190613aa9565b9050613124853083613344565b80836131309190613f3d565b9150505b8273ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156131d7575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561320f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613226575060148054906101000a900460ff16155b1561329f5760016014806101000a81548160ff02191690831515021790555061324d61355d565b5f6014806101000a81548160ff0219169083151502179055505f6103e8600954846132789190613a3b565b6132829190613aa9565b905061328f853083613344565b808361329b9190613f3d565b9150505b613332565b8273ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613331575f6103e86009548461330a9190613a3b565b6133149190613aa9565b9050613321853083613344565b808361332d9190613f3d565b9150505b5b5b61333e848483613344565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613394578060025f8282546133889190613bd8565b92505081905550613462565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561341d578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161341493929190613e89565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134a9578060025f82825403925050819055506134f3565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613550919061373b565b60405180910390a3505050565b5f6135673061196e565b9050600d54811061357d5761357c815f61267b565b5b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135b757808201518184015260208101905061359c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135dc82613580565b6135e6818561358a565b93506135f681856020860161359a565b6135ff816135c2565b840191505092915050565b5f6020820190508181035f83015261362281846135d2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136578261362e565b9050919050565b6136678161364d565b8114613671575f80fd5b50565b5f813590506136828161365e565b92915050565b5f819050919050565b61369a81613688565b81146136a4575f80fd5b50565b5f813590506136b581613691565b92915050565b5f80604083850312156136d1576136d061362a565b5b5f6136de85828601613674565b92505060206136ef858286016136a7565b9150509250929050565b5f8115159050919050565b61370d816136f9565b82525050565b5f6020820190506137265f830184613704565b92915050565b61373581613688565b82525050565b5f60208201905061374e5f83018461372c565b92915050565b5f602082840312156137695761376861362a565b5b5f61377684828501613674565b91505092915050565b5f805f606084860312156137965761379561362a565b5b5f6137a386828701613674565b93505060206137b486828701613674565b92505060406137c5868287016136a7565b9150509250925092565b5f602082840312156137e4576137e361362a565b5b5f6137f1848285016136a7565b91505092915050565b613803816136f9565b811461380d575f80fd5b50565b5f8135905061381e816137fa565b92915050565b5f806040838503121561383a5761383961362a565b5b5f61384785828601613674565b925050602061385885828601613810565b9150509250929050565b5f60ff82169050919050565b61387781613862565b82525050565b5f6020820190506138905f83018461386e565b92915050565b61389f8161364d565b82525050565b5f6020820190506138b85f830184613896565b92915050565b5f80604083850312156138d4576138d361362a565b5b5f6138e185828601613674565b92505060206138f285828601613674565b9150509250929050565b5f819050919050565b5f61391f61391a6139158461362e565b6138fc565b61362e565b9050919050565b5f61393082613905565b9050919050565b5f61394182613926565b9050919050565b61395181613937565b82525050565b5f60208201905061396a5f830184613948565b92915050565b5f81905092915050565b50565b5f6139885f83613970565b91506139938261397a565b5f82019050919050565b5f6139a78261397d565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139f557607f821691505b602082108103613a0857613a076139b1565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a4582613688565b9150613a5083613688565b9250828202613a5e81613688565b91508282048414831517613a7557613a74613a0e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ab382613688565b9150613abe83613688565b925082613ace57613acd613a7c565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613b418161365e565b92915050565b5f60208284031215613b5c57613b5b61362a565b5b5f613b6984828501613b33565b91505092915050565b5f604082019050613b855f830185613896565b613b92602083018461372c565b9392505050565b5f81519050613ba7816137fa565b92915050565b5f60208284031215613bc257613bc161362a565b5b5f613bcf84828501613b99565b91505092915050565b5f613be282613688565b9150613bed83613688565b9250828201905080821115613c0557613c04613a0e565b5b92915050565b5f819050919050565b5f613c2e613c29613c2484613c0b565b6138fc565b613688565b9050919050565b613c3e81613c14565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c768161364d565b82525050565b5f613c878383613c6d565b60208301905092915050565b5f602082019050919050565b5f613ca982613c44565b613cb38185613c4e565b9350613cbe83613c5e565b805f5b83811015613cee578151613cd58882613c7c565b9750613ce083613c93565b925050600181019050613cc1565b5085935050505092915050565b5f60a082019050613d0e5f83018861372c565b613d1b6020830187613c35565b8181036040830152613d2d8186613c9f565b9050613d3c6060830185613896565b613d49608083018461372c565b9695505050505050565b5f604082019050613d665f830185613896565b613d736020830184613704565b9392505050565b5f81519050613d8881613691565b92915050565b5f60208284031215613da357613da261362a565b5b5f613db084828501613d7a565b91505092915050565b7f5461782063616e6e6f74206578636565642033302500000000000000000000005f82015250565b5f613ded60158361358a565b9150613df882613db9565b602082019050919050565b5f6020820190508181035f830152613e1a81613de1565b9050919050565b7f54726573686f6c642063616e6e6f7420657865636565642031303025000000005f82015250565b5f613e55601c8361358a565b9150613e6082613e21565b602082019050919050565b5f6020820190508181035f830152613e8281613e49565b9050919050565b5f606082019050613e9c5f830186613896565b613ea9602083018561372c565b613eb6604083018461372c565b949350505050565b5f60a082019050613ed15f83018861372c565b613ede602083018761372c565b8181036040830152613ef08186613c9f565b9050613eff6060830185613896565b613f0c608083018461372c565b9695505050505050565b5f604082019050613f295f83018561372c565b613f36602083018461372c565b9392505050565b5f613f4782613688565b9150613f5283613688565b9250828203905081811115613f6a57613f69613a0e565b5b9291505056fea2646970667358221220a409dd0d293cf96047e2b8d2de2867b6090f16368936b84c5454a6b163c388cf64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000af22df5eb333647179ffb6f3e20202b92e95e4dc000000000000000000000000000000000000000000000000000000000000000453594e4b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000453796e6b00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _symbol (string): SYNK
Arg [1] : _name (string): Synk
Arg [2] : _admin (address): 0xaf22dF5eb333647179fFB6F3e20202b92E95e4dC
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000af22df5eb333647179ffb6f3e20202b92e95e4dc
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 53594e4b00000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 53796e6b00000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
37819:9161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44439:242;;;;;;;;;;;;;:::i;:::-;;20524:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22817:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45546:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38386:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21626:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46004:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23585:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45680:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46224:753;;;;;;;;;;;;;:::i;:::-;;44689:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21477:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38302:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38076:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38170:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38271:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38117:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37999:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38469:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43986:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46106:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45305:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38038:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45166:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21788:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7759:103;;;;;;;;;;;;;:::i;:::-;;44210:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43881:97;;;;;;;;;;;;;:::i;:::-;;37874:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7084:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37961:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20734:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45005:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22111:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37916:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45807:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44849:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22356:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45431:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8017:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38244:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38430:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38339:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44439:242;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;44491:11:::1;44505:21;44491:35;;44538:12;44564:5;;;;;;;;;;;44556:19;;44583:6;44556:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44537:57;;;44610:7;44605:33;;44626:12;;;;;;;;;;;;;;44605:33;44654:19;44666:6;44654:19;;;;;;:::i;:::-;;;;;;;;44480:201;;44439:242::o:0;20524:91::-;20569:13;20602:5;20595:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20524:91;:::o;22817:190::-;22890:4;22907:13;22923:12;:10;:12::i;:::-;22907:28;;22946:31;22955:5;22962:7;22971:5;22946:8;:31::i;:::-;22995:4;22988:11;;;22817:190;;;;:::o;45546:126::-;45597:7;45660:4;45641:15;;45625:13;:11;:13::i;:::-;:31;;;;:::i;:::-;45624:40;;;;:::i;:::-;45617:47;;45546:126;:::o;38386:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;21626:99::-;21678:7;21705:12;;21698:19;;21626:99;:::o;46004:94::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;46083:7:::1;46073:9;;:17;;;;;;;;;;;;;;;;;;46004:94:::0;:::o;23585:249::-;23672:4;23689:15;23707:12;:10;:12::i;:::-;23689:30;;23730:37;23746:4;23752:7;23761:5;23730:15;:37::i;:::-;23778:26;23788:4;23794:2;23798:5;23778:9;:26::i;:::-;23822:4;23815:11;;;23585:249;;;;;:::o;45680:119::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;45777:14:::1;45759:15;:32;;;;45680:119:::0;:::o;46224:753::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;46274:21:::1;46298:24;46316:4;46298:9;:24::i;:::-;46274:48;;46333:21;46371:1;46357:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46333:40;;46402:4;46384;46389:1;46384:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;46428:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46418:4;46423:1;46418:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;46467:4;46452:29;;;46490:6;;;;;;;;;;;46499:14;46452:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46525:6;;;;;;;;;;;:57;;;46627:4;46617:6;;46598:16;:25;;;;:::i;:::-;46597:34;;;;:::i;:::-;46646:1;46662:4;46681:9;;;;;;;;;;;46723:3;46705:15;:21;;;;:::i;:::-;46525:212;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;46748:6;;;;;;;;;;;:57;;;46853:4;46840:9;;46821:16;:28;;;;:::i;:::-;46820:37;;;;:::i;:::-;46872:1;46888:4;46907:15;;;;;;;;;;;46955:3;46937:15;:21;;;;:::i;:::-;46748:221;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;46263:714;;46224:753::o:0;44689:152::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;44779:7:::1;44765:5;:11;44771:4;44765:11;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;44819:4;44802:31;;;44825:7;44802:31;;;;;;:::i;:::-;;;;;;;;44689:152:::0;;:::o;21477:84::-;21526:5;21551:2;21544:9;;21477:84;:::o;38302:30::-;;;;;;;;;;;;;:::o;38076:27::-;;;;:::o;38170:45::-;;;;:::o;38271:24::-;;;;;;;;;;;;;:::o;38117:46::-;;;;:::o;37999:25::-;;;;:::o;38469:28::-;;;;;;;;;;;;;:::o;43986:216::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;44090:7:::1;44070:5;:17;44076:10;44070:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;44131:7;44108:8;:20;44117:10;44108:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;44154:40;44174:10;44186:7;44154:40;;;;;;;:::i;:::-;;;;;;;;43986:216:::0;;:::o;46106:106::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;46197:7:::1;46181:15;;:23;;;;;;;;;;;;;;;;;;46106:106:::0;:::o;45305:118::-;45352:7;45411:4;45396:11;;45380:13;:11;:13::i;:::-;:27;;;;:::i;:::-;45379:36;;;;:::i;:::-;45372:43;;45305:118;:::o;38038:24::-;;;;:::o;45166:94::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;45242:10:::1;45234:5;;:18;;;;;;;;;;;;;;;;;;45166:94:::0;:::o;21788:118::-;21853:7;21880:9;:18;21890:7;21880:18;;;;;;;;;;;;;;;;21873:25;;21788:118;;;:::o;7759:103::-;6970:13;:11;:13::i;:::-;7824:30:::1;7851:1;7824:18;:30::i;:::-;7759:103::o:0;44210:221::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;44278:11:::1;44299:5;44292:23;;;44324:4;44292:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44278:52;;44348:5;44341:22;;;44364:5;;;;;;;;;;;44371:6;44341:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44394:29;44409:5;44416:6;44394:29;;;;;;;:::i;:::-;;;;;;;;44267:164;44210:221:::0;:::o;43881:97::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;43936:34:::1;43942:24;43960:4;43942:9;:24::i;:::-;43968:1;43936:5;:34::i;:::-;43881:97::o:0;37874:27::-;;;;:::o;7084:87::-;7130:7;7157:6;;;;;;;;;;;7150:13;;7084:87;:::o;37961:24::-;;;;:::o;20734:95::-;20781:13;20814:7;20807:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20734:95;:::o;45005:153::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;45085:3:::1;45074:8;:14;45070:51;;;45090:31;;;;;;;;;;:::i;:::-;;;;;;;;45070:51;45142:8;45132:7;:18;;;;45005:153:::0;:::o;22111:182::-;22180:4;22197:13;22213:12;:10;:12::i;:::-;22197:28;;22236:27;22246:5;22253:2;22257:5;22236:9;:27::i;:::-;22281:4;22274:11;;;22111:182;;;;:::o;37916:32::-;;;;:::o;45807:185::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;45890:3:::1;45878:9;:15;45874:59;;;45895:38;;;;;;;;;;:::i;:::-;;;;;;;;45874:59;45980:4;45969:9;45956:12;;:22;;;;:::i;:::-;45955:29;;;;:::i;:::-;45944:8;:40;;;;45807:185:::0;:::o;44849:148::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;44926:3:::1;44916:7;:13;44912:50;;;44931:31;;;;;;;;;;:::i;:::-;;;;;;;;44912:50;44982:7;44973:6;:16;;;;44849:148:::0;:::o;22356:142::-;22436:7;22463:11;:18;22475:5;22463:18;;;;;;;;;;;;;;;:27;22482:7;22463:27;;;;;;;;;;;;;;;;22456:34;;22356:142;;;;:::o;45431:107::-;39363:12;:10;:12::i;:::-;39352:23;;:7;:5;:7::i;:::-;:23;;;;:48;;;;;39388:12;:10;:12::i;:::-;39379:21;;:5;;;;;;;;;;;:21;;;;39352:48;39348:110;;;39424:22;;;;;;;;;;;;;;39348:110;45518:12:::1;45504:11;:26;;;;45431:107:::0;:::o;8017:220::-;6970:13;:11;:13::i;:::-;8122:1:::1;8102:22;;:8;:22;;::::0;8098:93:::1;;8176:1;8148:31;;;;;;;;;;;:::i;:::-;;;;;;;;8098:93;8201:28;8220:8;8201:18;:28::i;:::-;8017:220:::0;:::o;38244:20::-;;;;;;;;;;;;;:::o;38430:32::-;;;;;;;;;;;;;:::o;38339:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;5190:98::-;5243:7;5270:10;5263:17;;5190:98;:::o;27644:130::-;27729:37;27738:5;27745:7;27754:5;27761:4;27729:8;:37::i;:::-;27644:130;;;:::o;29360:487::-;29460:24;29487:25;29497:5;29504:7;29487:9;:25::i;:::-;29460:52;;29547:17;29527:16;:37;29523:317;;29604:5;29585:16;:24;29581:132;;;29664:7;29673:16;29691:5;29637:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;29581:132;29756:57;29765:5;29772:7;29800:5;29781:16;:24;29807:5;29756:8;:57::i;:::-;29523:317;29449:398;29360:487;;;:::o;24219:308::-;24319:1;24303:18;;:4;:18;;;24299:88;;24372:1;24345:30;;;;;;;;;;;:::i;:::-;;;;;;;;24299:88;24415:1;24401:16;;:2;:16;;;24397:88;;24470:1;24441:32;;;;;;;;;;;:::i;:::-;;;;;;;;24397:88;24495:24;24503:4;24509:2;24513:5;24495:7;:24::i;:::-;24219:308;;;:::o;7249:166::-;7320:12;:10;:12::i;:::-;7309:23;;:7;:5;:7::i;:::-;:23;;;7305:103;;7383:12;:10;:12::i;:::-;7356:40;;;;;;;;;;;:::i;:::-;;;;;;;;7305:103;7249:166::o;8397:191::-;8471:16;8490:6;;;;;;;;;;;8471:25;;8516:8;8507:6;;:17;;;;;;;;;;;;;;;;;;8571:8;8540:40;;8561:8;8540:40;;;;;;;;;;;;8460:128;8397:191;:::o;43100:773::-;43166:21;43204:1;43190:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43166:40;;43235:4;43217;43222:1;43217:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;43261:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43251:4;43256:1;43251:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;43300:4;43285:29;;;43323:6;;;;;;;;;;;43332:14;43285:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43358:6;;;;;;;;;;;:57;;;43452:4;43442:6;;43431:8;:17;;;;:::i;:::-;43430:26;;;;:::i;:::-;43471:9;43495:4;43514:9;;;;;;;;;;;43556:3;43538:15;:21;;;;:::i;:::-;43358:212;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43581:6;;;;;;;;;;;:57;;;43678:4;43665:9;;43654:8;:20;;;;:::i;:::-;43653:29;;;;:::i;:::-;43697:9;43721:4;43740:15;;;;;;;;;;;43788:3;43770:15;:21;;;;:::i;:::-;43581:221;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43818:47;43833:8;43843:21;43818:47;;;;;;;:::i;:::-;;;;;;;;43155:718;43100:773;;:::o;28625:443::-;28755:1;28738:19;;:5;:19;;;28734:91;;28810:1;28781:32;;;;;;;;;;;:::i;:::-;;;;;;;;28734:91;28858:1;28839:21;;:7;:21;;;28835:92;;28912:1;28884:31;;;;;;;;;;;:::i;:::-;;;;;;;;28835:92;28967:5;28937:11;:18;28949:5;28937:18;;;;;;;;;;;;;;;:27;28956:7;28937:27;;;;;;;;;;;;;;;:35;;;;28987:9;28983:78;;;29034:7;29018:31;;29027:5;29018:31;;;29043:5;29018:31;;;;;;:::i;:::-;;;;;;;;28983:78;28625:443;;;;:::o;40710:2209::-;40813:1;40799:16;;:2;:16;;;40795:83;;40863:1;40839:27;;;;;;;;;;;:::i;:::-;;;;;;;;40795:83;40895:5;:11;40901:4;40895:11;;;;;;;;;;;;;;;;;;;;;;;;;40894:12;:26;;;;;40911:5;:9;40917:2;40911:9;;;;;;;;;;;;;;;;;;;;;;;;;40910:10;40894:26;40890:369;;;40947:13;;;;;;;;;;;40941:19;;:2;:19;;;40937:311;;40994:16;:14;:16::i;:::-;40985:6;:25;40981:103;;;41042:22;;;;;;;;;;;;;;40981:103;41135:20;:18;:20::i;:::-;41118:13;41128:2;41118:9;:13::i;:::-;41109:6;:22;;;;:::i;:::-;41108:47;41104:129;;;41187:26;;;;;;;;;;;;;;41104:129;40937:311;40890:369;41271:19;41293:6;41271:28;;41315:8;:14;41324:4;41315:14;;;;;;;;;;;;;;;;;;;;;;;;;41314:15;:32;;;;;41334:8;:12;41343:2;41334:12;;;;;;;;;;;;;;;;;;;;;;;;;41333:13;41314:32;41310:1552;;;41376:13;;;;;;;;;;;41368:21;;:4;:21;;;:44;;;;41399:13;;;;;;;;;;;41393:19;;:2;:19;;;41368:44;41363:1488;;;41447:16;:14;:16::i;:::-;41438:6;:25;41434:125;;;41514:6;41522:16;:14;:16::i;:::-;41495:44;;;;;;;;;;;;:::i;:::-;;;;;;;;41434:125;41636:1;41627:6;;:10;:56;;;;;41679:4;41662:21;;:13;;;;;;;;;;;:21;;;41627:56;:91;;;;;41709:5;:9;41715:2;41709:9;;;;;;;;;;;;;;;;;;;;;;;;;41708:10;41627:91;:137;;;;;41759:4;41743:21;;:4;:21;;;;41627:137;41601:394;;;41807:14;41844:5;41834:6;;41825;:15;;;;:::i;:::-;41824:25;;;;:::i;:::-;41807:42;;41872:45;41886:4;41900;41907:9;41872:13;:45::i;:::-;41966:9;41957:6;:18;;;;:::i;:::-;41940:35;;41784:211;41601:394;42083:2;42066:19;;:13;;;;;;;;;;;:19;;;:56;;;;;42111:5;:11;42117:4;42111:11;;;;;;;;;;;;;;;;;;;;;;;;;42110:12;42066:56;:100;;;;;42161:4;42147:19;;:2;:19;;;;42066:100;:139;;;;;42192:13;;;;;;;;;;42191:14;42066:139;42040:516;;;42264:4;42248:13;;:20;;;;;;;;;;;;;;;;;;42291:9;:7;:9::i;:::-;42339:5;42323:13;;:21;;;;;;;;;;;;;;;;;;42367:14;42405:5;42394:7;;42385:6;:16;;;;:::i;:::-;42384:26;;;;:::i;:::-;42367:43;;42433:45;42447:4;42461;42468:9;42433:13;:45::i;:::-;42527:9;42518:6;:18;;;;:::i;:::-;42501:35;;42225:331;42040:516;41363:1488;;;42617:2;42600:19;;:13;;;;;;;;;;;:19;;;42596:240;;42644:17;42685:5;42674:7;;42665:6;:16;;;;:::i;:::-;42664:26;;;;:::i;:::-;42644:46;;42713:45;42727:4;42741;42748:9;42713:13;:45::i;:::-;42807:9;42798:6;:18;;;;:::i;:::-;42781:35;;42621:215;42596:240;41363:1488;41310:1552;42872:39;42886:4;42892:2;42896:14;42872:13;:39::i;:::-;40784:2135;40710:2209;;;:::o;24851:1135::-;24957:1;24941:18;;:4;:18;;;24937:552;;25095:5;25079:12;;:21;;;;;;;:::i;:::-;;;;;;;;24937:552;;;25133:19;25155:9;:15;25165:4;25155:15;;;;;;;;;;;;;;;;25133:37;;25203:5;25189:11;:19;25185:117;;;25261:4;25267:11;25280:5;25236:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;25185:117;25457:5;25443:11;:19;25425:9;:15;25435:4;25425:15;;;;;;;;;;;;;;;:37;;;;25118:371;24937:552;25519:1;25505:16;;:2;:16;;;25501:435;;25687:5;25671:12;;:21;;;;;;;;;;;25501:435;;;25904:5;25887:9;:13;25897:2;25887:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;25501:435;25968:2;25953:25;;25962:4;25953:25;;;25972:5;25953:25;;;;;;:::i;:::-;;;;;;;;24851:1135;;;:::o;42927:165::-;42966:12;42981:24;42999:4;42981:9;:24::i;:::-;42966:39;;43031:8;;43020:7;:19;43016:69;;43056:17;43062:7;43071:1;43056:5;:17::i;:::-;43016:69;42955:137;42927:165::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:329::-;4817:6;4866:2;4854:9;4845:7;4841:23;4837:32;4834:119;;;4872:79;;:::i;:::-;4834:119;4992:1;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4963:117;4758:329;;;;:::o;5093:116::-;5163:21;5178:5;5163:21;:::i;:::-;5156:5;5153:32;5143:60;;5199:1;5196;5189:12;5143:60;5093:116;:::o;5215:133::-;5258:5;5296:6;5283:20;5274:29;;5312:30;5336:5;5312:30;:::i;:::-;5215:133;;;;:::o;5354:468::-;5419:6;5427;5476:2;5464:9;5455:7;5451:23;5447:32;5444:119;;;5482:79;;:::i;:::-;5444:119;5602:1;5627:53;5672:7;5663:6;5652:9;5648:22;5627:53;:::i;:::-;5617:63;;5573:117;5729:2;5755:50;5797:7;5788:6;5777:9;5773:22;5755:50;:::i;:::-;5745:60;;5700:115;5354:468;;;;;:::o;5828:86::-;5863:7;5903:4;5896:5;5892:16;5881:27;;5828:86;;;:::o;5920:112::-;6003:22;6019:5;6003:22;:::i;:::-;5998:3;5991:35;5920:112;;:::o;6038:214::-;6127:4;6165:2;6154:9;6150:18;6142:26;;6178:67;6242:1;6231:9;6227:17;6218:6;6178:67;:::i;:::-;6038:214;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:60::-;7118:3;7139:5;7132:12;;7090:60;;;:::o;7156:142::-;7206:9;7239:53;7257:34;7266:24;7284:5;7266:24;:::i;:::-;7257:34;:::i;:::-;7239:53;:::i;:::-;7226:66;;7156:142;;;:::o;7304:126::-;7354:9;7387:37;7418:5;7387:37;:::i;:::-;7374:50;;7304:126;;;:::o;7436:153::-;7513:9;7546:37;7577:5;7546:37;:::i;:::-;7533:50;;7436:153;;;:::o;7595:185::-;7709:64;7767:5;7709:64;:::i;:::-;7704:3;7697:77;7595:185;;:::o;7786:276::-;7906:4;7944:2;7933:9;7929:18;7921:26;;7957:98;8052:1;8041:9;8037:17;8028:6;7957:98;:::i;:::-;7786:276;;;;:::o;8068:147::-;8169:11;8206:3;8191:18;;8068:147;;;;:::o;8221:114::-;;:::o;8341:398::-;8500:3;8521:83;8602:1;8597:3;8521:83;:::i;:::-;8514:90;;8613:93;8702:3;8613:93;:::i;:::-;8731:1;8726:3;8722:11;8715:18;;8341:398;;;:::o;8745:379::-;8929:3;8951:147;9094:3;8951:147;:::i;:::-;8944:154;;9115:3;9108:10;;8745:379;;;:::o;9130:180::-;9178:77;9175:1;9168:88;9275:4;9272:1;9265:15;9299:4;9296:1;9289:15;9316:320;9360:6;9397:1;9391:4;9387:12;9377:22;;9444:1;9438:4;9434:12;9465:18;9455:81;;9521:4;9513:6;9509:17;9499:27;;9455:81;9583:2;9575:6;9572:14;9552:18;9549:38;9546:84;;9602:18;;:::i;:::-;9546:84;9367:269;9316:320;;;:::o;9642:180::-;9690:77;9687:1;9680:88;9787:4;9784:1;9777:15;9811:4;9808:1;9801:15;9828:410;9868:7;9891:20;9909:1;9891:20;:::i;:::-;9886:25;;9925:20;9943:1;9925:20;:::i;:::-;9920:25;;9980:1;9977;9973:9;10002:30;10020:11;10002:30;:::i;:::-;9991:41;;10181:1;10172:7;10168:15;10165:1;10162:22;10142:1;10135:9;10115:83;10092:139;;10211:18;;:::i;:::-;10092:139;9876:362;9828:410;;;;:::o;10244:180::-;10292:77;10289:1;10282:88;10389:4;10386:1;10379:15;10413:4;10410:1;10403:15;10430:185;10470:1;10487:20;10505:1;10487:20;:::i;:::-;10482:25;;10521:20;10539:1;10521:20;:::i;:::-;10516:25;;10560:1;10550:35;;10565:18;;:::i;:::-;10550:35;10607:1;10604;10600:9;10595:14;;10430:185;;;;:::o;10621:180::-;10669:77;10666:1;10659:88;10766:4;10763:1;10756:15;10790:4;10787:1;10780:15;10807:180;10855:77;10852:1;10845:88;10952:4;10949:1;10942:15;10976:4;10973:1;10966:15;10993:143;11050:5;11081:6;11075:13;11066:22;;11097:33;11124:5;11097:33;:::i;:::-;10993:143;;;;:::o;11142:351::-;11212:6;11261:2;11249:9;11240:7;11236:23;11232:32;11229:119;;;11267:79;;:::i;:::-;11229:119;11387:1;11412:64;11468:7;11459:6;11448:9;11444:22;11412:64;:::i;:::-;11402:74;;11358:128;11142:351;;;;:::o;11499:332::-;11620:4;11658:2;11647:9;11643:18;11635:26;;11671:71;11739:1;11728:9;11724:17;11715:6;11671:71;:::i;:::-;11752:72;11820:2;11809:9;11805:18;11796:6;11752:72;:::i;:::-;11499:332;;;;;:::o;11837:137::-;11891:5;11922:6;11916:13;11907:22;;11938:30;11962:5;11938:30;:::i;:::-;11837:137;;;;:::o;11980:345::-;12047:6;12096:2;12084:9;12075:7;12071:23;12067:32;12064:119;;;12102:79;;:::i;:::-;12064:119;12222:1;12247:61;12300:7;12291:6;12280:9;12276:22;12247:61;:::i;:::-;12237:71;;12193:125;11980:345;;;;:::o;12331:191::-;12371:3;12390:20;12408:1;12390:20;:::i;:::-;12385:25;;12424:20;12442:1;12424:20;:::i;:::-;12419:25;;12467:1;12464;12460:9;12453:16;;12488:3;12485:1;12482:10;12479:36;;;12495:18;;:::i;:::-;12479:36;12331:191;;;;:::o;12528:85::-;12573:7;12602:5;12591:16;;12528:85;;;:::o;12619:158::-;12677:9;12710:61;12728:42;12737:32;12763:5;12737:32;:::i;:::-;12728:42;:::i;:::-;12710:61;:::i;:::-;12697:74;;12619:158;;;:::o;12783:147::-;12878:45;12917:5;12878:45;:::i;:::-;12873:3;12866:58;12783:147;;:::o;12936:114::-;13003:6;13037:5;13031:12;13021:22;;12936:114;;;:::o;13056:184::-;13155:11;13189:6;13184:3;13177:19;13229:4;13224:3;13220:14;13205:29;;13056:184;;;;:::o;13246:132::-;13313:4;13336:3;13328:11;;13366:4;13361:3;13357:14;13349:22;;13246:132;;;:::o;13384:108::-;13461:24;13479:5;13461:24;:::i;:::-;13456:3;13449:37;13384:108;;:::o;13498:179::-;13567:10;13588:46;13630:3;13622:6;13588:46;:::i;:::-;13666:4;13661:3;13657:14;13643:28;;13498:179;;;;:::o;13683:113::-;13753:4;13785;13780:3;13776:14;13768:22;;13683:113;;;:::o;13832:732::-;13951:3;13980:54;14028:5;13980:54;:::i;:::-;14050:86;14129:6;14124:3;14050:86;:::i;:::-;14043:93;;14160:56;14210:5;14160:56;:::i;:::-;14239:7;14270:1;14255:284;14280:6;14277:1;14274:13;14255:284;;;14356:6;14350:13;14383:63;14442:3;14427:13;14383:63;:::i;:::-;14376:70;;14469:60;14522:6;14469:60;:::i;:::-;14459:70;;14315:224;14302:1;14299;14295:9;14290:14;;14255:284;;;14259:14;14555:3;14548:10;;13956:608;;;13832:732;;;;:::o;14570:831::-;14833:4;14871:3;14860:9;14856:19;14848:27;;14885:71;14953:1;14942:9;14938:17;14929:6;14885:71;:::i;:::-;14966:80;15042:2;15031:9;15027:18;15018:6;14966:80;:::i;:::-;15093:9;15087:4;15083:20;15078:2;15067:9;15063:18;15056:48;15121:108;15224:4;15215:6;15121:108;:::i;:::-;15113:116;;15239:72;15307:2;15296:9;15292:18;15283:6;15239:72;:::i;:::-;15321:73;15389:3;15378:9;15374:19;15365:6;15321:73;:::i;:::-;14570:831;;;;;;;;:::o;15407:320::-;15522:4;15560:2;15549:9;15545:18;15537:26;;15573:71;15641:1;15630:9;15626:17;15617:6;15573:71;:::i;:::-;15654:66;15716:2;15705:9;15701:18;15692:6;15654:66;:::i;:::-;15407:320;;;;;:::o;15733:143::-;15790:5;15821:6;15815:13;15806:22;;15837:33;15864:5;15837:33;:::i;:::-;15733:143;;;;:::o;15882:351::-;15952:6;16001:2;15989:9;15980:7;15976:23;15972:32;15969:119;;;16007:79;;:::i;:::-;15969:119;16127:1;16152:64;16208:7;16199:6;16188:9;16184:22;16152:64;:::i;:::-;16142:74;;16098:128;15882:351;;;;:::o;16239:171::-;16379:23;16375:1;16367:6;16363:14;16356:47;16239:171;:::o;16416:366::-;16558:3;16579:67;16643:2;16638:3;16579:67;:::i;:::-;16572:74;;16655:93;16744:3;16655:93;:::i;:::-;16773:2;16768:3;16764:12;16757:19;;16416:366;;;:::o;16788:419::-;16954:4;16992:2;16981:9;16977:18;16969:26;;17041:9;17035:4;17031:20;17027:1;17016:9;17012:17;17005:47;17069:131;17195:4;17069:131;:::i;:::-;17061:139;;16788:419;;;:::o;17213:178::-;17353:30;17349:1;17341:6;17337:14;17330:54;17213:178;:::o;17397:366::-;17539:3;17560:67;17624:2;17619:3;17560:67;:::i;:::-;17553:74;;17636:93;17725:3;17636:93;:::i;:::-;17754:2;17749:3;17745:12;17738:19;;17397:366;;;:::o;17769:419::-;17935:4;17973:2;17962:9;17958:18;17950:26;;18022:9;18016:4;18012:20;18008:1;17997:9;17993:17;17986:47;18050:131;18176:4;18050:131;:::i;:::-;18042:139;;17769:419;;;:::o;18194:442::-;18343:4;18381:2;18370:9;18366:18;18358:26;;18394:71;18462:1;18451:9;18447:17;18438:6;18394:71;:::i;:::-;18475:72;18543:2;18532:9;18528:18;18519:6;18475:72;:::i;:::-;18557;18625:2;18614:9;18610:18;18601:6;18557:72;:::i;:::-;18194:442;;;;;;:::o;18642:815::-;18897:4;18935:3;18924:9;18920:19;18912:27;;18949:71;19017:1;19006:9;19002:17;18993:6;18949:71;:::i;:::-;19030:72;19098:2;19087:9;19083:18;19074:6;19030:72;:::i;:::-;19149:9;19143:4;19139:20;19134:2;19123:9;19119:18;19112:48;19177:108;19280:4;19271:6;19177:108;:::i;:::-;19169:116;;19295:72;19363:2;19352:9;19348:18;19339:6;19295:72;:::i;:::-;19377:73;19445:3;19434:9;19430:19;19421:6;19377:73;:::i;:::-;18642:815;;;;;;;;:::o;19463:332::-;19584:4;19622:2;19611:9;19607:18;19599:26;;19635:71;19703:1;19692:9;19688:17;19679:6;19635:71;:::i;:::-;19716:72;19784:2;19773:9;19769:18;19760:6;19716:72;:::i;:::-;19463:332;;;;;:::o;19801:194::-;19841:4;19861:20;19879:1;19861:20;:::i;:::-;19856:25;;19895:20;19913:1;19895:20;:::i;:::-;19890:25;;19939:1;19936;19932:9;19924:17;;19963:1;19957:4;19954:11;19951:37;;;19968:18;;:::i;:::-;19951:37;19801:194;;;;:::o
Swarm Source
ipfs://a409dd0d293cf96047e2b8d2de2867b6090f16368936b84c5454a6b163c388cf
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.