ETH Price: $3,436.65 (+3.21%)

Contract

0xcfA897e2C4e0A64eaA9CA41F607820a09134353a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Zap Out104344802020-07-10 22:49:381597 days ago1594421378IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.005627620.7
Zap Out104314472020-07-10 11:15:521597 days ago1594379752IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0097757636
Zap Out104295312020-07-10 4:12:071597 days ago1594354327IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0096807330
Zap Out104288912020-07-10 1:49:341598 days ago1594345774IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0066330623.5
Zap Out104288512020-07-10 1:40:581598 days ago1594345258IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0053388921
Zap Out104278902020-07-09 22:13:001598 days ago1594332780IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0064550623
Zap Out104273622020-07-09 20:15:171598 days ago1594325717IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.007338726
Zap Out104272492020-07-09 19:46:491598 days ago1594324009IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0065485126
Zap Out104272372020-07-09 19:42:591598 days ago1594323779IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0070434226
Zap Out104248862020-07-09 10:57:171598 days ago1594292237IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0137619550
Zap Out104239322020-07-09 7:22:131598 days ago1594279333IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0094694635
Zap Out104237742020-07-09 6:43:231598 days ago1594277003IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0073604126
Zap Out104233252020-07-09 5:04:551598 days ago1594271095IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0107487139
Zap Out104232122020-07-09 4:37:241598 days ago1594269444IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0106017939
Zap Out104232072020-07-09 4:36:361598 days ago1594269396IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0105737539
Zap Out104217702020-07-08 23:13:011599 days ago1594249981IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0108519324.2
Zap Out104215452020-07-08 22:22:061599 days ago1594246926IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0082428
Zap Out104212872020-07-08 21:26:461599 days ago1594243606IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0096994836
Zap Out104208742020-07-08 19:56:041599 days ago1594238164IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0086593328
Zap Out104204402020-07-08 18:20:201599 days ago1594232420IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0102091538
Zap Out104191812020-07-08 13:34:131599 days ago1594215253IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0194646970
Zap Out104182112020-07-08 9:56:121599 days ago1594202172IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0164447857
Zap Out104174472020-07-08 7:13:401599 days ago1594192420IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0136406848
Zap Out104170572020-07-08 5:48:051599 days ago1594187285IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0112765541
Zap Out104161972020-07-08 2:36:241600 days ago1594175784IN
Zapper.Fi: Old Uniswap Zap Out V2
0 ETH0.0076508126
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
104344802020-07-10 22:49:381597 days ago1594421378
Zapper.Fi: Old Uniswap Zap Out V2
150.40549216 ETH
104344802020-07-10 22:49:381597 days ago1594421378
Zapper.Fi: Old Uniswap Zap Out V2
149.08646929 ETH
104344802020-07-10 22:49:381597 days ago1594421378
Zapper.Fi: Old Uniswap Zap Out V2
1.31902286 ETH
104288912020-07-10 1:49:341598 days ago1594345774
Zapper.Fi: Old Uniswap Zap Out V2
0.09982403 ETH
104288912020-07-10 1:49:341598 days ago1594345774
Zapper.Fi: Old Uniswap Zap Out V2
0.04983698 ETH
104288912020-07-10 1:49:341598 days ago1594345774
Zapper.Fi: Old Uniswap Zap Out V2
0.04998705 ETH
104278902020-07-09 22:13:001598 days ago1594332780
Zapper.Fi: Old Uniswap Zap Out V2
30.37262403 ETH
104278902020-07-09 22:13:001598 days ago1594332780
Zapper.Fi: Old Uniswap Zap Out V2
15.23081122 ETH
104278902020-07-09 22:13:001598 days ago1594332780
Zapper.Fi: Old Uniswap Zap Out V2
15.14181281 ETH
104273622020-07-09 20:15:171598 days ago1594325717
Zapper.Fi: Old Uniswap Zap Out V2
1.7225123 ETH
104273622020-07-09 20:15:171598 days ago1594325717
Zapper.Fi: Old Uniswap Zap Out V2
0.85994572 ETH
104273622020-07-09 20:15:171598 days ago1594325717
Zapper.Fi: Old Uniswap Zap Out V2
0.86256658 ETH
104272852020-07-09 19:56:341598 days ago1594324594
Zapper.Fi: Old Uniswap Zap Out V2
0.39796388 ETH
104248862020-07-09 10:57:171598 days ago1594292237
Zapper.Fi: Old Uniswap Zap Out V2
7.14662147 ETH
104248862020-07-09 10:57:171598 days ago1594292237
Zapper.Fi: Old Uniswap Zap Out V2
3.58359244 ETH
104248862020-07-09 10:57:171598 days ago1594292237
Zapper.Fi: Old Uniswap Zap Out V2
3.56302902 ETH
104239322020-07-09 7:22:131598 days ago1594279333
Zapper.Fi: Old Uniswap Zap Out V2
7.58770204 ETH
104239322020-07-09 7:22:131598 days ago1594279333
Zapper.Fi: Old Uniswap Zap Out V2
3.8018743 ETH
104239322020-07-09 7:22:131598 days ago1594279333
Zapper.Fi: Old Uniswap Zap Out V2
3.78582774 ETH
104232122020-07-09 4:37:241598 days ago1594269444
Zapper.Fi: Old Uniswap Zap Out V2
0.39601915 ETH
104232122020-07-09 4:37:241598 days ago1594269444
Zapper.Fi: Old Uniswap Zap Out V2
0.19897294 ETH
104232122020-07-09 4:37:241598 days ago1594269444
Zapper.Fi: Old Uniswap Zap Out V2
0.1970462 ETH
104232072020-07-09 4:36:361598 days ago1594269396
Zapper.Fi: Old Uniswap Zap Out V2
0.7401746 ETH
104232072020-07-09 4:36:361598 days ago1594269396
Zapper.Fi: Old Uniswap Zap Out V2
0.37075732 ETH
104232072020-07-09 4:36:361598 days ago1594269396
Zapper.Fi: Old Uniswap Zap Out V2
0.36941727 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2_ZapOut

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, GNU GPLv2 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-17
*/

// File: @openzeppelin/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

pragma solidity ^0.5.0;

/*
 * @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 GSN 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.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

pragma solidity ^0.5.0;

/**
 * @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.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

pragma solidity ^0.5.5;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following 
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Converts an `address` into `address payable`. Note that this is
     * simply a type cast: the actual underlying value is not changed.
     *
     * _Available since v2.4.0._
     */
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     *
     * _Available since v2.4.0._
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

pragma solidity ^0.5.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 *
 * _Since v2.5.0:_ this module is now much more gas efficient, given net gas
 * metering changes introduced in the Istanbul hardfork.
 */
contract ReentrancyGuard {
    bool private _notEntered;

    constructor () internal {
        // Storing an initial non-zero value makes deployment a bit more
        // expensive, but in exchange the refund on every call to nonReentrant
        // will be lower in amount. Since refunds are capped to a percetange of
        // the total transaction's gas, it is best to keep them low in cases
        // like this one, to increase the likelihood of the full refund coming
        // into effect.
        _notEntered = true;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_notEntered, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _notEntered = false;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _notEntered = true;
    }
}

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

pragma solidity ^0.5.0;




/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: contracts/UniswapV2/UniswapV2Router.sol

pragma solidity 0.5.12;

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

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

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// File: contracts/UniswapV2/UniswapZapOutV2.sol

pragma solidity 0.5.12;








library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(0x095ea7b3, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: APPROVE_FAILED"
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(0xa9059cbb, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: TRANSFER_FAILED"
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(0x23b872dd, from, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: TRANSFER_FROM_FAILED"
        );
    }
}

interface Iuniswap {
    // converting ERC20 to ERC20 and transfer
    function tokenToTokenTransferInput(
        uint256 tokens_sold,
        uint256 min_tokens_bought,
        uint256 min_eth_bought,
        uint256 deadline,
        address recipient,
        address token_addr
    ) external returns (uint256 tokens_bought);

    function tokenToTokenSwapInput(
        uint256 tokens_sold,
        uint256 min_tokens_bought,
        uint256 min_eth_bought,
        uint256 deadline,
        address token_addr
    ) external returns (uint256 tokens_bought);

    function getTokenToEthInputPrice(uint256 tokens_sold)
        external
        view
        returns (uint256 eth_bought);

    function tokenToEthTransferInput(
        uint256 tokens_sold,
        uint256 min_eth,
        uint256 deadline,
        address recipient
    ) external returns (uint256 eth_bought);

    function ethToTokenSwapInput(uint256 min_tokens, uint256 deadline)
        external
        payable
        returns (uint256 tokens_bought);

    function ethToTokenTransferInput(
        uint256 min_tokens,
        uint256 deadline,
        address recipient
    ) external payable returns (uint256 tokens_bought);

    function balanceOf(address _owner) external view returns (uint256);

    function transfer(address _to, uint256 _value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 tokens
    ) external returns (bool success);
}

interface IUniswapV2Pair {
    function token0() external pure returns (address);

    function token1() external pure returns (address);

    function totalSupply() external view returns (uint256);

    function getReserves()
        external
        view
        returns (
            uint112 _reserve0,
            uint112 _reserve1,
            uint32 _blockTimestampLast
        );
}

interface IWETH {
    function deposit() external payable;

    function transfer(address to, uint256 value) external returns (bool);

    function withdraw(uint256) external;
}

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address);
}

contract UniswapV2_ZapOut is ReentrancyGuard, Ownable {
    using SafeMath for uint256;
    using Address for address;
    bool private stopped = false;
    uint16 public goodwill;
    address public dzgoodwillAddress;
    uint256 public defaultSlippage;

    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(
        0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    );

    IUniswapV2Factory public UniSwapV2FactoryAddress = IUniswapV2Factory(
        0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
    );

    address wethTokenAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    constructor(
        uint16 _goodwill,
        address _dzgoodwillAddress,
        uint256 _slippage
    ) public {
        goodwill = _goodwill;
        dzgoodwillAddress = _dzgoodwillAddress;
        defaultSlippage = _slippage;
    }

    // circuit breaker modifiers
    modifier stopInEmergency {
        if (stopped) {
            revert("Temporarily Paused");
        } else {
            _;
        }
    }

    /**
    @notice This function is used to zapout of given Uniswap pair in the bounded tokens
    @param _FromUniPoolAddress The uniswap pair address to zapout
    @param _IncomingLP The amount of LP
    @return the amount of pair tokens received after zapout
     */
    function ZapOut2PairToken(address _FromUniPoolAddress, uint256 _IncomingLP)
        public
        payable
        nonReentrant
        stopInEmergency
        returns (uint256 amountA, uint256 amountB)
    {
        IUniswapV2Pair pair = IUniswapV2Pair(_FromUniPoolAddress);

        require(address(pair) != address(0), "Error: Invalid Unipool Address");

        //get reserves
        address token0 = pair.token0();
        address token1 = pair.token1();

        TransferHelper.safeTransferFrom(
            _FromUniPoolAddress,
            msg.sender,
            address(this),
            _IncomingLP
        );

        uint256 goodwillPortion = _transferGoodwill(
            _FromUniPoolAddress,
            _IncomingLP
        );

        TransferHelper.safeApprove(
            _FromUniPoolAddress,
            address(uniswapV2Router),
            SafeMath.sub(_IncomingLP, goodwillPortion)
        );

        (amountA, amountB) = uniswapV2Router.removeLiquidity(
            token0,
            token1,
            SafeMath.sub(_IncomingLP, goodwillPortion),
            1,
            1,
            msg.sender,
            now + 60
        );
    }

    /**
    @notice This function is used to zapout of given Uniswap pair in ETH/ERC20 Tokens
    @param _ToTokenContractAddress The ERC20 token to zapout in (address(0x00) if ether)
    @param _FromUniPoolAddress The uniswap pair address to zapout from
    @param _IncomingLP The amount of LP
    @return the amount of eth/tokens received after zapout
     */
    function ZapOut(
        address _ToTokenContractAddress,
        address _FromUniPoolAddress,
        uint256 _IncomingLP,
        uint256 slippage
    ) public payable nonReentrant stopInEmergency returns (uint256) {
        IUniswapV2Pair pair = IUniswapV2Pair(_FromUniPoolAddress);

        require(address(pair) != address(0), "Error: Invalid Unipool Address");

        //get pair tokens
        address token0 = pair.token0();
        address token1 = pair.token1();

        TransferHelper.safeTransferFrom(
            _FromUniPoolAddress,
            msg.sender,
            address(this),
            _IncomingLP
        );

        uint256 goodwillPortion = _transferGoodwill(
            _FromUniPoolAddress,
            _IncomingLP
        );

        TransferHelper.safeApprove(
            _FromUniPoolAddress,
            address(uniswapV2Router),
            SafeMath.sub(_IncomingLP, goodwillPortion)
        );

        (uint256 amountA, uint256 amountB) = uniswapV2Router.removeLiquidity(
            token0,
            token1,
            SafeMath.sub(_IncomingLP, goodwillPortion),
            1,
            1,
            address(this),
            now + 60
        );

        uint256 withSlippage = slippage > 0 && slippage < 10000
            ? slippage
            : defaultSlippage;

        uint256 tokenBought;
        if (
            canSwapFromV2(_ToTokenContractAddress, token0) &&
            canSwapFromV2(_ToTokenContractAddress, token1)
        ) {
            tokenBought = swapFromV2(
                token0,
                _ToTokenContractAddress,
                amountA,
                withSlippage
            );
            tokenBought += swapFromV2(
                token1,
                _ToTokenContractAddress,
                amountB,
                withSlippage
            );
        } else if (canSwapFromV2(_ToTokenContractAddress, token0)) {
            uint256 token0Bought = swapFromV2(
                token1,
                token0,
                amountB,
                withSlippage
            );
            tokenBought = swapFromV2(
                token0,
                _ToTokenContractAddress,
                token0Bought.add(amountA),
                withSlippage
            );
        } else if (canSwapFromV2(_ToTokenContractAddress, token1)) {
            uint256 token1Bought = swapFromV2(
                token0,
                token1,
                amountA,
                withSlippage
            );
            tokenBought = swapFromV2(
                token1,
                _ToTokenContractAddress,
                token1Bought.add(amountB),
                withSlippage
            );
        }

        require(tokenBought > 0, "ERR: Token exchange");

        if (_ToTokenContractAddress == address(0)) {
            msg.sender.transfer(tokenBought);
        } else {
            TransferHelper.safeTransfer(
                _ToTokenContractAddress,
                msg.sender,
                tokenBought
            );
        }

        return tokenBought;
    }

    //swaps _fromToken for _toToken
    //for eth, address(0) otherwise ERC token address
    function swapFromV2(
        address _fromToken,
        address _toToken,
        uint256 amount,
        uint256 slippage
    ) internal returns (uint256) {
        require(
            _fromToken != address(0) || _toToken != address(0),
            "Invalid Exchange values"
        );
        if (_fromToken == _toToken) return amount;

        require(canSwapFromV2(_fromToken, _toToken), "Cannot be exchanged");
        require(amount > 0, "Invalid amount");

        if (_fromToken == address(0)) {
            if (_toToken == wethTokenAddress) {
                IWETH(wethTokenAddress).deposit.value(amount)();
                return amount;
            }
            address[] memory path = new address[](2);
            path[0] = wethTokenAddress;
            path[1] = _toToken;
            uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1];
            minTokens = SafeMath.div(
                SafeMath.mul(minTokens, SafeMath.sub(10000, slippage)),
                10000
            );
            uint256[] memory amounts = uniswapV2Router
                .swapExactETHForTokens
                .value(amount)(minTokens, path, address(this), now + 180);
            return amounts[1];
        } else if (_toToken == address(0)) {
            if (_fromToken == wethTokenAddress) {
                IWETH(wethTokenAddress).withdraw(amount);
                return amount;
            }
            address[] memory path = new address[](2);
            TransferHelper.safeApprove(
                _fromToken,
                address(uniswapV2Router),
                amount
            );
            path[0] = _fromToken;
            path[1] = wethTokenAddress;
            uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1];
            minTokens = SafeMath.div(
                SafeMath.mul(minTokens, SafeMath.sub(10000, slippage)),
                10000
            );
            uint256[] memory amounts = uniswapV2Router.swapExactTokensForETH(
                amount,
                minTokens,
                path,
                address(this),
                now + 180
            );
            return amounts[1];
        } else {
            TransferHelper.safeApprove(
                _fromToken,
                address(uniswapV2Router),
                amount
            );
            uint256 returnedAmount = _swapTokenToTokenV2(
                _fromToken,
                _toToken,
                amount,
                slippage
            );
            require(returnedAmount > 0, "Error in swap");
            return returnedAmount;
        }
    }

    //swaps 2 ERC tokens (UniV2)
    function _swapTokenToTokenV2(
        address _fromToken,
        address _toToken,
        uint256 amount,
        uint256 slippage
    ) internal returns (uint256) {
        IUniswapV2Pair pair1 = IUniswapV2Pair(
            UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress)
        );
        IUniswapV2Pair pair2 = IUniswapV2Pair(
            UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress)
        );
        IUniswapV2Pair pair3 = IUniswapV2Pair(
            UniSwapV2FactoryAddress.getPair(_fromToken, _toToken)
        );

        uint256[] memory amounts;

        if (_haveReserve(pair3)) {
            address[] memory path = new address[](2);
            path[0] = _fromToken;
            path[1] = _toToken;
            uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1];
            minTokens = SafeMath.div(
                SafeMath.mul(minTokens, SafeMath.sub(10000, slippage)),
                10000
            );
            amounts = uniswapV2Router.swapExactTokensForTokens(
                amount,
                minTokens,
                path,
                address(this),
                now + 180
            );
            return amounts[1];
        } else if (_haveReserve(pair1) && _haveReserve(pair2)) {
            address[] memory path = new address[](3);
            path[0] = _fromToken;
            path[1] = wethTokenAddress;
            path[2] = _toToken;
            uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[2];
            minTokens = SafeMath.div(
                SafeMath.mul(minTokens, SafeMath.sub(10000, slippage)),
                10000
            );
            amounts = uniswapV2Router.swapExactTokensForTokens(
                amount,
                minTokens,
                path,
                address(this),
                now + 180
            );
            return amounts[2];
        }
        return 0;
    }

    function canSwapFromV2(address _fromToken, address _toToken)
        public
        view
        returns (bool)
    {
        require(
            _fromToken != address(0) || _toToken != address(0),
            "Invalid Exchange values"
        );

        if (_fromToken == _toToken) return true;

        if (_fromToken == address(0) || _fromToken == wethTokenAddress) {
            if (_toToken == wethTokenAddress || _toToken == address(0))
                return true;
            IUniswapV2Pair pair = IUniswapV2Pair(
                UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress)
            );
            if (_haveReserve(pair)) return true;
        } else if (_toToken == address(0) || _toToken == wethTokenAddress) {
            if (_fromToken == wethTokenAddress || _fromToken == address(0))
                return true;
            IUniswapV2Pair pair = IUniswapV2Pair(
                UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress)
            );
            if (_haveReserve(pair)) return true;
        } else {
            IUniswapV2Pair pair1 = IUniswapV2Pair(
                UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress)
            );
            IUniswapV2Pair pair2 = IUniswapV2Pair(
                UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress)
            );
            IUniswapV2Pair pair3 = IUniswapV2Pair(
                UniSwapV2FactoryAddress.getPair(_fromToken, _toToken)
            );
            if (_haveReserve(pair1) && _haveReserve(pair2)) return true;
            if (_haveReserve(pair3)) return true;
        }
        return false;
    }

    //checks if the UNI v2 contract have reserves to swap tokens
    function _haveReserve(IUniswapV2Pair pair) internal view returns (bool) {
        if (address(pair) != address(0)) {
            uint256 totalSupply = pair.totalSupply();
            if (totalSupply > 0) return true;
        }
    }

    /**
    @notice This function is used to calculate and transfer goodwill
    @param _tokenContractAddress Token in which goodwill is deducted
    @param tokens2Trade The total amount of tokens to be zapped in
    @return The quantity of goodwill deducted
     */
    function _transferGoodwill(
        address _tokenContractAddress,
        uint256 tokens2Trade
    ) internal returns (uint256 goodwillPortion) {
        goodwillPortion = SafeMath.div(
            SafeMath.mul(tokens2Trade, goodwill),
            10000
        );

        if (goodwillPortion == 0) {
            return 0;
        }

        TransferHelper.safeTransfer(
            _tokenContractAddress,
            dzgoodwillAddress,
            goodwillPortion
        );
    }

    function updateSlippage(uint256 _newSlippage) public onlyOwner {
        require(
            _newSlippage > 0 && _newSlippage < 10000,
            "Slippage Value not allowed"
        );
        defaultSlippage = _newSlippage;
    }

    function set_new_goodwill(uint16 _new_goodwill) public onlyOwner {
        require(
            _new_goodwill >= 0 && _new_goodwill < 10000,
            "GoodWill Value not allowed"
        );
        goodwill = _new_goodwill;
    }

    function set_new_dzgoodwillAddress(address _new_dzgoodwillAddress)
        public
        onlyOwner
    {
        dzgoodwillAddress = _new_dzgoodwillAddress;
    }

    function inCaseTokengetsStuck(IERC20 _TokenAddress) public onlyOwner {
        uint256 qty = _TokenAddress.balanceOf(address(this));
        TransferHelper.safeTransfer(address(_TokenAddress), owner(), qty);
    }

    // - to Pause the contract
    function toggleContractActive() public onlyOwner {
        stopped = !stopped;
    }

    // - to withdraw any ETH balance sitting in the contract
    function withdraw() public onlyOwner {
        uint256 contractBalance = address(this).balance;
        address payable _to = owner().toPayable();
        _to.transfer(contractBalance);
    }

    // - to kill the contract
    function destruct() public onlyOwner {
        address payable _to = owner().toPayable();
        selfdestruct(_to);
    }

    function() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint16","name":"_goodwill","type":"uint16"},{"internalType":"address","name":"_dzgoodwillAddress","type":"address"},{"internalType":"uint256","name":"_slippage","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"UniSwapV2FactoryAddress","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_ToTokenContractAddress","type":"address"},{"internalType":"address","name":"_FromUniPoolAddress","type":"address"},{"internalType":"uint256","name":"_IncomingLP","type":"uint256"},{"internalType":"uint256","name":"slippage","type":"uint256"}],"name":"ZapOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_FromUniPoolAddress","type":"address"},{"internalType":"uint256","name":"_IncomingLP","type":"uint256"}],"name":"ZapOut2PairToken","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_fromToken","type":"address"},{"internalType":"address","name":"_toToken","type":"address"}],"name":"canSwapFromV2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"defaultSlippage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dzgoodwillAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goodwill","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_TokenAddress","type":"address"}],"name":"inCaseTokengetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_dzgoodwillAddress","type":"address"}],"name":"set_new_dzgoodwillAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_new_goodwill","type":"uint16"}],"name":"set_new_goodwill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"toggleContractActive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_newSlippage","type":"uint256"}],"name":"updateSlippage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526000805460ff60a81b19169055600380546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155600480548216735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f1790556005805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790553480156200008457600080fd5b50604051620032ce380380620032ce83398181016040526060811015620000aa57600080fd5b50805160208201516040909201516000805460ff19166001178155919291620000db6001600160e01b036200018b16565b60008054610100600160a81b0319166101006001600160a01b038416908102919091178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805461ffff9094167601000000000000000000000000000000000000000000000261ffff60b01b1990941693909317909255600180546001600160a01b039092166001600160a01b03199092169190911790556002556200018f565b3390565b61312f806200019f6000396000f3fe6080604052600436106101145760003560e01c8063715018a6116100a0578063c3a8fcb011610064578063c3a8fcb014610326578063e88c68141461033b578063ee857b6914610350578063f27cf32014610395578063f2fde38b146103d057610114565b8063715018a614610272578063849e25f4146102875780638da5cb5b146102ba5780638f32d59b146102cf578063b10e1dbc146102f857610114565b80633ccfd60b116100e75780633ccfd60b1461019b57806349c082cd146101b05780635487404a146101fe578063551196d5146102135780635de0398e1461024657610114565b80631385d24c1461011657806315b0d4961461012b5780631694505e146101555780632b68b9c614610186575b005b34801561012257600080fd5b50610114610403565b34801561013757600080fd5b506101146004803603602081101561014e57600080fd5b503561046b565b34801561016157600080fd5b5061016a610519565b604080516001600160a01b039092168252519081900360200190f35b34801561019257600080fd5b50610114610528565b3480156101a757600080fd5b50610114610598565b6101ec600480360360808110156101c657600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561062c565b60408051918252519081900360200190f35b34801561020a57600080fd5b506101ec610aba565b34801561021f57600080fd5b506101146004803603602081101561023657600080fd5b50356001600160a01b0316610ac0565b34801561025257600080fd5b5061025b610b95565b6040805161ffff9092168252519081900360200190f35b34801561027e57600080fd5b50610114610ba6565b34801561029357600080fd5b50610114600480360360208110156102aa57600080fd5b50356001600160a01b0316610c49565b3480156102c657600080fd5b5061016a610cbf565b3480156102db57600080fd5b506102e4610cd3565b604080519115158252519081900360200190f35b34801561030457600080fd5b506101146004803603602081101561031b57600080fd5b503561ffff16610cfc565b34801561033257600080fd5b5061016a610dbf565b34801561034757600080fd5b5061016a610dce565b61037c6004803603604081101561036657600080fd5b506001600160a01b038135169060200135610ddd565b6040805192835260208301919091528051918290030190f35b3480156103a157600080fd5b506102e4600480360360408110156103b857600080fd5b506001600160a01b03813581169160200135166110dd565b3480156103dc57600080fd5b50610114600480360360208110156103f357600080fd5b50356001600160a01b031661151c565b61040b610cd3565b61044a576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6000805460ff60a81b198116600160a81b9182900460ff1615909102179055565b610473610cd3565b6104b2576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6000811180156104c3575061271081105b610514576040805162461bcd60e51b815260206004820152601a60248201527f536c6970706167652056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600255565b6003546001600160a01b031681565b610530610cd3565b61056f576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b600061058a61057c610cbf565b6001600160a01b031661156f565b9050806001600160a01b0316ff5b6105a0610cd3565b6105df576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b303160006105ee61057c610cbf565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610627573d6000803e3d6000fd5b505050565b6000805460ff16610684576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff16156106e1576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b03811661073d576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d60208110156107a257600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b1580156107ea57600080fd5b505afa1580156107fe573d6000803e3d6000fd5b505050506040513d602081101561081457600080fd5b5051905061082487333089611576565b600061083088886116d3565b6003549091506108549089906001600160a01b031661084f8a85611720565b611769565b60035460009081906001600160a01b031663baa2abde86866108768d88611720565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523060a4820152603c420160c4820152815160e480830193928290030181600087803b1580156108e557600080fd5b505af11580156108f9573d6000803e3d6000fd5b505050506040513d604081101561090f57600080fd5b50805160209091015190925090506000881580159061092f575061271089105b61093b5760025461093d565b885b9050600061094b8d886110dd565b801561095c575061095c8d876110dd565b156109815761096d878e86856118d3565b905061097b868e85856118d3565b016109fb565b61098b8d886110dd565b156109c357600061099e878986866118d3565b90506109bb888f6109b5848963ffffffff61227e16565b866118d3565b9150506109fb565b6109cd8d876110dd565b156109fb5760006109e0888887866118d3565b90506109f7878f6109b5848863ffffffff61227e16565b9150505b60008111610a50576040805162461bcd60e51b815260206004820152601360248201527f4552523a20546f6b656e2065786368616e676500000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038d16610a9157604051339082156108fc029083906000818181858888f19350505050158015610a8b573d6000803e3d6000fd5b50610a9c565b610a9c8d33836122d8565b9750505050505050506000805460ff19166001179055949350505050565b60025481565b610ac8610cd3565b610b07576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610b5157600080fd5b505afa158015610b65573d6000803e3d6000fd5b505050506040513d6020811015610b7b57600080fd5b50519050610b9182610b8b610cbf565b836122d8565b5050565b600054600160b01b900461ffff1681565b610bae610cd3565b610bed576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b600080546040516101009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805474ffffffffffffffffffffffffffffffffffffffff0019169055565b610c51610cd3565b610c90576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60005461010090046001600160a01b031690565b6000805461010090046001600160a01b0316610ced61243b565b6001600160a01b031614905090565b610d04610cd3565b610d43576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6127108161ffff1610610d9d576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6000805461ffff909216600160b01b0261ffff60b01b19909216919091179055565b6001546001600160a01b031681565b6004546001600160a01b031681565b60008054819060ff16610e37576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff1615610e94576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b038116610ef0576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2b57600080fd5b505afa158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d6020811015610fc757600080fd5b50519050610fd787333089611576565b6000610fe388886116d3565b6003549091506110029089906001600160a01b031661084f8a85611720565b6003546001600160a01b031663baa2abde848461101f8b86611720565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523360a4820152603c420160c4820152815160e480830193928290030181600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d60408110156110b857600080fd5b5080516020909101516000805460ff1916600117905590999098509650505050505050565b60006001600160a01b0383161515806110fe57506001600160a01b03821615155b61114f576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642045786368616e67652076616c756573000000000000000000604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316141561117157506001611516565b6001600160a01b038316158061119457506005546001600160a01b038481169116145b15611272576005546001600160a01b03838116911614806111bc57506001600160a01b038216155b156111c957506001611516565b600480546005546040805163e6a4390560e01b81526001600160a01b03878116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561122657600080fd5b505afa15801561123a573d6000803e3d6000fd5b505050506040513d602081101561125057600080fd5b5051905061125d8161243f565b1561126c576001915050611516565b50611512565b6001600160a01b038216158061129557506005546001600160a01b038381169116145b15611327576005546001600160a01b03848116911614806112bd57506001600160a01b038316155b156112ca57506001611516565b600480546005546040805163e6a4390560e01b81526001600160a01b03888116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561122657600080fd5b600480546005546040805163e6a4390560e01b81526001600160a01b03888116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561138457600080fd5b505afa158015611398573d6000803e3d6000fd5b505050506040513d60208110156113ae57600080fd5b5051600480546005546040805163e6a4390560e01b81526001600160a01b0389811695820195909552918416602483015251939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561141157600080fd5b505afa158015611425573d6000803e3d6000fd5b505050506040513d602081101561143b57600080fd5b5051600480546040805163e6a4390560e01b81526001600160a01b038a81169482019490945288841660248201529051939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561149c57600080fd5b505afa1580156114b0573d6000803e3d6000fd5b505050506040513d60208110156114c657600080fd5b505190506114d38361243f565b80156114e357506114e38261243f565b156114f45760019350505050611516565b6114fd8161243f565b1561150e5760019350505050611516565b5050505b5060005b92915050565b611524610cd3565b611563576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b61156c816124cf565b50565b805b919050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106115fb5780518252601f1990920191602091820191016115dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461165d576040519150601f19603f3d011682016040523d82523d6000602084013e611662565b606091505b5091509150818015611690575080511580611690575080806020019051602081101561168d57600080fd5b50515b6116cb5760405162461bcd60e51b81526004018080602001828103825260248152602001806130d76024913960400191505060405180910390fd5b505050505050565b600080546116f9906116f1908490600160b01b900461ffff16612587565b6127106125e0565b90508061170857506000611516565b6001546115169084906001600160a01b0316836122d8565b600061176283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612622565b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106117e65780518252601f1990920191602091820191016117c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b509150915081801561187b57508051158061187b575080806020019051602081101561187857600080fd5b50515b6118cc576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b5050505050565b60006001600160a01b0385161515806118f457506001600160a01b03841615155b611945576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642045786368616e67652076616c756573000000000000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03161415611966575081612276565b61197085856110dd565b6119c1576040805162461bcd60e51b815260206004820152601360248201527f43616e6e6f742062652065786368616e67656400000000000000000000000000604482015290519081900360640190fd5b60008311611a16576040805162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038516611e61576005546001600160a01b0385811691161415611aab57600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a8a57600080fd5b505af1158015611a9e573d6000803e3d6000fd5b5050505050829050612276565b6040805160028082526060808301845292602083019080388339505060055482519293506001600160a01b031691839150600090611ae557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110611b1357fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b81526004810189815260248201928352865160448301528651600096949094169463d06ca61f948b948994909260649091019185820191028083838c5b83811015611b91578181015183820152602001611b79565b50505050905001935050505060006040518083038186803b158015611bb557600080fd5b505afa158015611bc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611bf257600080fd5b8101908080516040519392919084640100000000821115611c1257600080fd5b908301906020820185811115611c2757600080fd5b8251866020820283011164010000000082111715611c4457600080fd5b82525081516020918201928201910280838360005b83811015611c71578181015183820152602001611c59565b50505050905001604052505050600181518110611c8a57fe5b60200260200101519050611cac6116f182611ca761271088611720565b612587565b90506060600360009054906101000a90046001600160a01b03166001600160a01b0316637ff36ab5878486304260b4016040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611d4f578181015183820152602001611d37565b50505050905001955050505050506000604051808303818588803b158015611d7657600080fd5b505af1158015611d8a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015611db457600080fd5b8101908080516040519392919084640100000000821115611dd457600080fd5b908301906020820185811115611de957600080fd5b8251866020820283011164010000000082111715611e0657600080fd5b82525081516020918201928201910280838360005b83811015611e33578181015183820152602001611e1b565b50505050905001604052505050905080600181518110611e4f57fe5b60200260200101519350505050612276565b6001600160a01b038416612206576005546001600160a01b0386811691161415611ef25760055460408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611ed257600080fd5b505af1158015611ee6573d6000803e3d6000fd5b50505050829050612276565b60408051600280825260608083018452926020830190803883395050600354919250611f2a918891506001600160a01b031686611769565b8581600081518110611f3857fe5b6001600160a01b039283166020918202929092010152600554825191169082906001908110611f6357fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b81526004810189815260248201928352865160448301528651600096949094169463d06ca61f948b948994909260649091019185820191028083838c5b83811015611fe1578181015183820152602001611fc9565b50505050905001935050505060006040518083038186803b15801561200557600080fd5b505afa158015612019573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561204257600080fd5b810190808051604051939291908464010000000082111561206257600080fd5b90830190602082018581111561207757600080fd5b825186602082028301116401000000008211171561209457600080fd5b82525081516020918201928201910280838360005b838110156120c15781810151838201526020016120a9565b505050509050016040525050506001815181106120da57fe5b602002602001015190506120f76116f182611ca761271088611720565b90506060600360009054906101000a90046001600160a01b03166001600160a01b03166318cbafe5878486304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156121a0578181015183820152602001612188565b505050509050019650505050505050600060405180830381600087803b1580156121c957600080fd5b505af11580156121dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611db457600080fd5b60035461221e9086906001600160a01b031685611769565b600061222c868686866126b9565b905060008111612273576040805162461bcd60e51b815260206004820152600d60248201526c04572726f7220696e207377617609c1b604482015290519081900360640190fd5b90505b949350505050565b600082820183811015611762576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106123555780518252601f199092019160209182019101612336565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123b7576040519150601f19603f3d011682016040523d82523d6000602084013e6123bc565b606091505b50915091508180156123ea5750805115806123ea57508080602001905160208110156123e757600080fd5b50515b6118cc576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b3390565b60006001600160a01b03821615611571576000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561248b57600080fd5b505afa15801561249f573d6000803e3d6000fd5b505050506040513d60208110156124b557600080fd5b5051905080156124c9576001915050611571565b50919050565b6001600160a01b0381166125145760405162461bcd60e51b81526004018080602001828103825260268152602001806130706026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b60008261259657506000611516565b828202828482816125a357fe5b04146117625760405162461bcd60e51b81526004018080602001828103825260218152602001806130966021913960400191505060405180910390fd5b600061176283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061300a565b600081848411156126b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267657818101518382015260200161265e565b50505050905090810190601f1680156126a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600480546005546040805163e6a4390560e01b81526001600160a01b03898116958201959095529184166024830152516000938493169163e6a43905916044808301926020929190829003018186803b15801561271557600080fd5b505afa158015612729573d6000803e3d6000fd5b505050506040513d602081101561273f57600080fd5b5051600480546005546040805163e6a4390560e01b81526001600160a01b038b811695820195909552918416602483015251939450600093929091169163e6a4390591604480820192602092909190829003018186803b1580156127a257600080fd5b505afa1580156127b6573d6000803e3d6000fd5b505050506040513d60208110156127cc57600080fd5b5051600480546040805163e6a4390560e01b81526001600160a01b038c8116948201949094528a841660248201529051939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561282d57600080fd5b505afa158015612841573d6000803e3d6000fd5b505050506040513d602081101561285757600080fd5b5051905060606128668261243f565b15612c18576040805160028082526060808301845292602083019080388339019050509050898160008151811061289957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088816001815181106128c757fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b8152600481018d815260248201928352865160448301528651600096949094169463d06ca61f948f948994909260649091019185820191028083838c5b8381101561294557818101518382015260200161292d565b50505050905001935050505060006040518083038186803b15801561296957600080fd5b505afa15801561297d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156129a657600080fd5b81019080805160405193929190846401000000008211156129c657600080fd5b9083019060208201858111156129db57600080fd5b82518660208202830111640100000000821117156129f857600080fd5b82525081516020918201928201910280838360005b83811015612a25578181015183820152602001612a0d565b50505050905001604052505050600181518110612a3e57fe5b60200260200101519050612a5b6116f182611ca76127108c611720565b9050600360009054906101000a90046001600160a01b03166001600160a01b03166338ed17398a8385304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612b02578181015183820152602001612aea565b505050509050019650505050505050600060405180830381600087803b158015612b2b57600080fd5b505af1158015612b3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612b6857600080fd5b8101908080516040519392919084640100000000821115612b8857600080fd5b908301906020820185811115612b9d57600080fd5b8251866020820283011164010000000082111715612bba57600080fd5b82525081516020918201928201910280838360005b83811015612be7578181015183820152602001612bcf565b50505050905001604052505050925082600181518110612c0357fe5b60200260200101519650505050505050612276565b612c218461243f565b8015612c315750612c318361243f565b15612ffb57604080516003808252608082019092526060916020820183803883390190505090508981600081518110612c6657fe5b6001600160a01b039283166020918202929092010152600554825191169082906001908110612c9157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508881600281518110612cbf57fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b8152600481018d815260248201928352865160448301528651600096949094169463d06ca61f948f948994909260649091019185820191028083838c5b83811015612d3d578181015183820152602001612d25565b50505050905001935050505060006040518083038186803b158015612d6157600080fd5b505afa158015612d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612d9e57600080fd5b8101908080516040519392919084640100000000821115612dbe57600080fd5b908301906020820185811115612dd357600080fd5b8251866020820283011164010000000082111715612df057600080fd5b82525081516020918201928201910280838360005b83811015612e1d578181015183820152602001612e05565b50505050905001604052505050600281518110612e3657fe5b60200260200101519050612e536116f182611ca76127108c611720565b9050600360009054906101000a90046001600160a01b03166001600160a01b03166338ed17398a8385304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612efa578181015183820152602001612ee2565b505050509050019650505050505050600060405180830381600087803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612f6057600080fd5b8101908080516040519392919084640100000000821115612f8057600080fd5b908301906020820185811115612f9557600080fd5b8251866020820283011164010000000082111715612fb257600080fd5b82525081516020918201928201910280838360005b83811015612fdf578181015183820152602001612fc7565b50505050905001604052505050925082600281518110612c0357fe5b50600098975050505050505050565b600081836130595760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267657818101518382015260200161265e565b50600083858161306557fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a265627a7a72315820c828ef351ea71a9bdb392664f45fa720b46c030433aee0a6353a91bccc5e37f264736f6c634300050c00320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f79cabc4caca5eca8ee6a36651a0ad5a2190f04e00000000000000000000000000000000000000000000000000000000000000c8

Deployed Bytecode

0x6080604052600436106101145760003560e01c8063715018a6116100a0578063c3a8fcb011610064578063c3a8fcb014610326578063e88c68141461033b578063ee857b6914610350578063f27cf32014610395578063f2fde38b146103d057610114565b8063715018a614610272578063849e25f4146102875780638da5cb5b146102ba5780638f32d59b146102cf578063b10e1dbc146102f857610114565b80633ccfd60b116100e75780633ccfd60b1461019b57806349c082cd146101b05780635487404a146101fe578063551196d5146102135780635de0398e1461024657610114565b80631385d24c1461011657806315b0d4961461012b5780631694505e146101555780632b68b9c614610186575b005b34801561012257600080fd5b50610114610403565b34801561013757600080fd5b506101146004803603602081101561014e57600080fd5b503561046b565b34801561016157600080fd5b5061016a610519565b604080516001600160a01b039092168252519081900360200190f35b34801561019257600080fd5b50610114610528565b3480156101a757600080fd5b50610114610598565b6101ec600480360360808110156101c657600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561062c565b60408051918252519081900360200190f35b34801561020a57600080fd5b506101ec610aba565b34801561021f57600080fd5b506101146004803603602081101561023657600080fd5b50356001600160a01b0316610ac0565b34801561025257600080fd5b5061025b610b95565b6040805161ffff9092168252519081900360200190f35b34801561027e57600080fd5b50610114610ba6565b34801561029357600080fd5b50610114600480360360208110156102aa57600080fd5b50356001600160a01b0316610c49565b3480156102c657600080fd5b5061016a610cbf565b3480156102db57600080fd5b506102e4610cd3565b604080519115158252519081900360200190f35b34801561030457600080fd5b506101146004803603602081101561031b57600080fd5b503561ffff16610cfc565b34801561033257600080fd5b5061016a610dbf565b34801561034757600080fd5b5061016a610dce565b61037c6004803603604081101561036657600080fd5b506001600160a01b038135169060200135610ddd565b6040805192835260208301919091528051918290030190f35b3480156103a157600080fd5b506102e4600480360360408110156103b857600080fd5b506001600160a01b03813581169160200135166110dd565b3480156103dc57600080fd5b50610114600480360360208110156103f357600080fd5b50356001600160a01b031661151c565b61040b610cd3565b61044a576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6000805460ff60a81b198116600160a81b9182900460ff1615909102179055565b610473610cd3565b6104b2576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6000811180156104c3575061271081105b610514576040805162461bcd60e51b815260206004820152601a60248201527f536c6970706167652056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600255565b6003546001600160a01b031681565b610530610cd3565b61056f576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b600061058a61057c610cbf565b6001600160a01b031661156f565b9050806001600160a01b0316ff5b6105a0610cd3565b6105df576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b303160006105ee61057c610cbf565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610627573d6000803e3d6000fd5b505050565b6000805460ff16610684576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff16156106e1576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b03811661073d576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d60208110156107a257600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b1580156107ea57600080fd5b505afa1580156107fe573d6000803e3d6000fd5b505050506040513d602081101561081457600080fd5b5051905061082487333089611576565b600061083088886116d3565b6003549091506108549089906001600160a01b031661084f8a85611720565b611769565b60035460009081906001600160a01b031663baa2abde86866108768d88611720565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523060a4820152603c420160c4820152815160e480830193928290030181600087803b1580156108e557600080fd5b505af11580156108f9573d6000803e3d6000fd5b505050506040513d604081101561090f57600080fd5b50805160209091015190925090506000881580159061092f575061271089105b61093b5760025461093d565b885b9050600061094b8d886110dd565b801561095c575061095c8d876110dd565b156109815761096d878e86856118d3565b905061097b868e85856118d3565b016109fb565b61098b8d886110dd565b156109c357600061099e878986866118d3565b90506109bb888f6109b5848963ffffffff61227e16565b866118d3565b9150506109fb565b6109cd8d876110dd565b156109fb5760006109e0888887866118d3565b90506109f7878f6109b5848863ffffffff61227e16565b9150505b60008111610a50576040805162461bcd60e51b815260206004820152601360248201527f4552523a20546f6b656e2065786368616e676500000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038d16610a9157604051339082156108fc029083906000818181858888f19350505050158015610a8b573d6000803e3d6000fd5b50610a9c565b610a9c8d33836122d8565b9750505050505050506000805460ff19166001179055949350505050565b60025481565b610ac8610cd3565b610b07576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610b5157600080fd5b505afa158015610b65573d6000803e3d6000fd5b505050506040513d6020811015610b7b57600080fd5b50519050610b9182610b8b610cbf565b836122d8565b5050565b600054600160b01b900461ffff1681565b610bae610cd3565b610bed576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b600080546040516101009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805474ffffffffffffffffffffffffffffffffffffffff0019169055565b610c51610cd3565b610c90576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60005461010090046001600160a01b031690565b6000805461010090046001600160a01b0316610ced61243b565b6001600160a01b031614905090565b610d04610cd3565b610d43576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6127108161ffff1610610d9d576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6000805461ffff909216600160b01b0261ffff60b01b19909216919091179055565b6001546001600160a01b031681565b6004546001600160a01b031681565b60008054819060ff16610e37576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff1615610e94576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b038116610ef0576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2b57600080fd5b505afa158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d6020811015610fc757600080fd5b50519050610fd787333089611576565b6000610fe388886116d3565b6003549091506110029089906001600160a01b031661084f8a85611720565b6003546001600160a01b031663baa2abde848461101f8b86611720565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523360a4820152603c420160c4820152815160e480830193928290030181600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d60408110156110b857600080fd5b5080516020909101516000805460ff1916600117905590999098509650505050505050565b60006001600160a01b0383161515806110fe57506001600160a01b03821615155b61114f576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642045786368616e67652076616c756573000000000000000000604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316141561117157506001611516565b6001600160a01b038316158061119457506005546001600160a01b038481169116145b15611272576005546001600160a01b03838116911614806111bc57506001600160a01b038216155b156111c957506001611516565b600480546005546040805163e6a4390560e01b81526001600160a01b03878116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561122657600080fd5b505afa15801561123a573d6000803e3d6000fd5b505050506040513d602081101561125057600080fd5b5051905061125d8161243f565b1561126c576001915050611516565b50611512565b6001600160a01b038216158061129557506005546001600160a01b038381169116145b15611327576005546001600160a01b03848116911614806112bd57506001600160a01b038316155b156112ca57506001611516565b600480546005546040805163e6a4390560e01b81526001600160a01b03888116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561122657600080fd5b600480546005546040805163e6a4390560e01b81526001600160a01b03888116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561138457600080fd5b505afa158015611398573d6000803e3d6000fd5b505050506040513d60208110156113ae57600080fd5b5051600480546005546040805163e6a4390560e01b81526001600160a01b0389811695820195909552918416602483015251939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561141157600080fd5b505afa158015611425573d6000803e3d6000fd5b505050506040513d602081101561143b57600080fd5b5051600480546040805163e6a4390560e01b81526001600160a01b038a81169482019490945288841660248201529051939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561149c57600080fd5b505afa1580156114b0573d6000803e3d6000fd5b505050506040513d60208110156114c657600080fd5b505190506114d38361243f565b80156114e357506114e38261243f565b156114f45760019350505050611516565b6114fd8161243f565b1561150e5760019350505050611516565b5050505b5060005b92915050565b611524610cd3565b611563576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b61156c816124cf565b50565b805b919050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106115fb5780518252601f1990920191602091820191016115dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461165d576040519150601f19603f3d011682016040523d82523d6000602084013e611662565b606091505b5091509150818015611690575080511580611690575080806020019051602081101561168d57600080fd5b50515b6116cb5760405162461bcd60e51b81526004018080602001828103825260248152602001806130d76024913960400191505060405180910390fd5b505050505050565b600080546116f9906116f1908490600160b01b900461ffff16612587565b6127106125e0565b90508061170857506000611516565b6001546115169084906001600160a01b0316836122d8565b600061176283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612622565b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106117e65780518252601f1990920191602091820191016117c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b509150915081801561187b57508051158061187b575080806020019051602081101561187857600080fd5b50515b6118cc576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b5050505050565b60006001600160a01b0385161515806118f457506001600160a01b03841615155b611945576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642045786368616e67652076616c756573000000000000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03161415611966575081612276565b61197085856110dd565b6119c1576040805162461bcd60e51b815260206004820152601360248201527f43616e6e6f742062652065786368616e67656400000000000000000000000000604482015290519081900360640190fd5b60008311611a16576040805162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038516611e61576005546001600160a01b0385811691161415611aab57600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a8a57600080fd5b505af1158015611a9e573d6000803e3d6000fd5b5050505050829050612276565b6040805160028082526060808301845292602083019080388339505060055482519293506001600160a01b031691839150600090611ae557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110611b1357fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b81526004810189815260248201928352865160448301528651600096949094169463d06ca61f948b948994909260649091019185820191028083838c5b83811015611b91578181015183820152602001611b79565b50505050905001935050505060006040518083038186803b158015611bb557600080fd5b505afa158015611bc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611bf257600080fd5b8101908080516040519392919084640100000000821115611c1257600080fd5b908301906020820185811115611c2757600080fd5b8251866020820283011164010000000082111715611c4457600080fd5b82525081516020918201928201910280838360005b83811015611c71578181015183820152602001611c59565b50505050905001604052505050600181518110611c8a57fe5b60200260200101519050611cac6116f182611ca761271088611720565b612587565b90506060600360009054906101000a90046001600160a01b03166001600160a01b0316637ff36ab5878486304260b4016040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611d4f578181015183820152602001611d37565b50505050905001955050505050506000604051808303818588803b158015611d7657600080fd5b505af1158015611d8a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015611db457600080fd5b8101908080516040519392919084640100000000821115611dd457600080fd5b908301906020820185811115611de957600080fd5b8251866020820283011164010000000082111715611e0657600080fd5b82525081516020918201928201910280838360005b83811015611e33578181015183820152602001611e1b565b50505050905001604052505050905080600181518110611e4f57fe5b60200260200101519350505050612276565b6001600160a01b038416612206576005546001600160a01b0386811691161415611ef25760055460408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611ed257600080fd5b505af1158015611ee6573d6000803e3d6000fd5b50505050829050612276565b60408051600280825260608083018452926020830190803883395050600354919250611f2a918891506001600160a01b031686611769565b8581600081518110611f3857fe5b6001600160a01b039283166020918202929092010152600554825191169082906001908110611f6357fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b81526004810189815260248201928352865160448301528651600096949094169463d06ca61f948b948994909260649091019185820191028083838c5b83811015611fe1578181015183820152602001611fc9565b50505050905001935050505060006040518083038186803b15801561200557600080fd5b505afa158015612019573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561204257600080fd5b810190808051604051939291908464010000000082111561206257600080fd5b90830190602082018581111561207757600080fd5b825186602082028301116401000000008211171561209457600080fd5b82525081516020918201928201910280838360005b838110156120c15781810151838201526020016120a9565b505050509050016040525050506001815181106120da57fe5b602002602001015190506120f76116f182611ca761271088611720565b90506060600360009054906101000a90046001600160a01b03166001600160a01b03166318cbafe5878486304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156121a0578181015183820152602001612188565b505050509050019650505050505050600060405180830381600087803b1580156121c957600080fd5b505af11580156121dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611db457600080fd5b60035461221e9086906001600160a01b031685611769565b600061222c868686866126b9565b905060008111612273576040805162461bcd60e51b815260206004820152600d60248201526c04572726f7220696e207377617609c1b604482015290519081900360640190fd5b90505b949350505050565b600082820183811015611762576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106123555780518252601f199092019160209182019101612336565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123b7576040519150601f19603f3d011682016040523d82523d6000602084013e6123bc565b606091505b50915091508180156123ea5750805115806123ea57508080602001905160208110156123e757600080fd5b50515b6118cc576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b3390565b60006001600160a01b03821615611571576000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561248b57600080fd5b505afa15801561249f573d6000803e3d6000fd5b505050506040513d60208110156124b557600080fd5b5051905080156124c9576001915050611571565b50919050565b6001600160a01b0381166125145760405162461bcd60e51b81526004018080602001828103825260268152602001806130706026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b60008261259657506000611516565b828202828482816125a357fe5b04146117625760405162461bcd60e51b81526004018080602001828103825260218152602001806130966021913960400191505060405180910390fd5b600061176283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061300a565b600081848411156126b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267657818101518382015260200161265e565b50505050905090810190601f1680156126a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600480546005546040805163e6a4390560e01b81526001600160a01b03898116958201959095529184166024830152516000938493169163e6a43905916044808301926020929190829003018186803b15801561271557600080fd5b505afa158015612729573d6000803e3d6000fd5b505050506040513d602081101561273f57600080fd5b5051600480546005546040805163e6a4390560e01b81526001600160a01b038b811695820195909552918416602483015251939450600093929091169163e6a4390591604480820192602092909190829003018186803b1580156127a257600080fd5b505afa1580156127b6573d6000803e3d6000fd5b505050506040513d60208110156127cc57600080fd5b5051600480546040805163e6a4390560e01b81526001600160a01b038c8116948201949094528a841660248201529051939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561282d57600080fd5b505afa158015612841573d6000803e3d6000fd5b505050506040513d602081101561285757600080fd5b5051905060606128668261243f565b15612c18576040805160028082526060808301845292602083019080388339019050509050898160008151811061289957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088816001815181106128c757fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b8152600481018d815260248201928352865160448301528651600096949094169463d06ca61f948f948994909260649091019185820191028083838c5b8381101561294557818101518382015260200161292d565b50505050905001935050505060006040518083038186803b15801561296957600080fd5b505afa15801561297d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156129a657600080fd5b81019080805160405193929190846401000000008211156129c657600080fd5b9083019060208201858111156129db57600080fd5b82518660208202830111640100000000821117156129f857600080fd5b82525081516020918201928201910280838360005b83811015612a25578181015183820152602001612a0d565b50505050905001604052505050600181518110612a3e57fe5b60200260200101519050612a5b6116f182611ca76127108c611720565b9050600360009054906101000a90046001600160a01b03166001600160a01b03166338ed17398a8385304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612b02578181015183820152602001612aea565b505050509050019650505050505050600060405180830381600087803b158015612b2b57600080fd5b505af1158015612b3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612b6857600080fd5b8101908080516040519392919084640100000000821115612b8857600080fd5b908301906020820185811115612b9d57600080fd5b8251866020820283011164010000000082111715612bba57600080fd5b82525081516020918201928201910280838360005b83811015612be7578181015183820152602001612bcf565b50505050905001604052505050925082600181518110612c0357fe5b60200260200101519650505050505050612276565b612c218461243f565b8015612c315750612c318361243f565b15612ffb57604080516003808252608082019092526060916020820183803883390190505090508981600081518110612c6657fe5b6001600160a01b039283166020918202929092010152600554825191169082906001908110612c9157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508881600281518110612cbf57fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b8152600481018d815260248201928352865160448301528651600096949094169463d06ca61f948f948994909260649091019185820191028083838c5b83811015612d3d578181015183820152602001612d25565b50505050905001935050505060006040518083038186803b158015612d6157600080fd5b505afa158015612d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612d9e57600080fd5b8101908080516040519392919084640100000000821115612dbe57600080fd5b908301906020820185811115612dd357600080fd5b8251866020820283011164010000000082111715612df057600080fd5b82525081516020918201928201910280838360005b83811015612e1d578181015183820152602001612e05565b50505050905001604052505050600281518110612e3657fe5b60200260200101519050612e536116f182611ca76127108c611720565b9050600360009054906101000a90046001600160a01b03166001600160a01b03166338ed17398a8385304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612efa578181015183820152602001612ee2565b505050509050019650505050505050600060405180830381600087803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612f6057600080fd5b8101908080516040519392919084640100000000821115612f8057600080fd5b908301906020820185811115612f9557600080fd5b8251866020820283011164010000000082111715612fb257600080fd5b82525081516020918201928201910280838360005b83811015612fdf578181015183820152602001612fc7565b50505050905001604052505050925082600281518110612c0357fe5b50600098975050505050505050565b600081836130595760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267657818101518382015260200161265e565b50600083858161306557fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a265627a7a72315820c828ef351ea71a9bdb392664f45fa720b46c030433aee0a6353a91bccc5e37f264736f6c634300050c0032

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

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f79cabc4caca5eca8ee6a36651a0ad5a2190f04e00000000000000000000000000000000000000000000000000000000000000c8

-----Decoded View---------------
Arg [0] : _goodwill (uint16): 0
Arg [1] : _dzgoodwillAddress (address): 0xf79Cabc4cacA5ECa8eE6A36651A0Ad5A2190F04E
Arg [2] : _slippage (uint256): 200

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000f79cabc4caca5eca8ee6a36651a0ad5a2190f04e
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c8


Deployed Bytecode Sourcemap

30913:15177:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45534:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45534:86:0;;;:::i;44609:239::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44609:239:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44609:239:0;;:::i;31181:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31181:122:0;;;:::i;:::-;;;;-1:-1:-1;;;;;31181:122:0;;;;;;;;;;;;;;45924:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45924:125:0;;;:::i;45690:195::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45690:195:0;;;:::i;33828:3167::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;33828:3167:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;31142:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31142:30:0;;;:::i;45278:216::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45278:216:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45278:216:0;-1:-1:-1;;;;;45278:216:0;;:::i;31074:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31074:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8473:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8473:140:0;;;:::i;45102:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45102:168:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45102:168:0;-1:-1:-1;;;;;45102:168:0;;:::i;7662:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7662:79:0;;;:::i;8028:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8028:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;44856:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44856:238:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44856:238:0;;;;:::i;31103:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31103:32:0;;;:::i;31312:128::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31312:128:0;;;:::i;32242:1210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;32242:1210:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;41831:1677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41831:1677:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;41831:1677:0;;;;;;;;;;:::i;8768:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8768:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8768:109:0;-1:-1:-1;;;;;8768:109:0;;:::i;45534:86::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45605:7;;;-1:-1:-1;;;;45594:18:0;;-1:-1:-1;;;45605:7:0;;;;;;45604:8;45594:18;;;;;;45534:86::o;44609:239::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;44720:1;44705:12;:16;:40;;;;;44740:5;44725:12;:20;44705:40;44683:116;;;;;-1:-1:-1;;;44683:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;44810:15;:30;44609:239::o;31181:122::-;;;-1:-1:-1;;;;;31181:122:0;;:::o;45924:125::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45972:19;45994;:7;:5;:7::i;:::-;-1:-1:-1;;;;;45994:17:0;;:19::i;:::-;45972:41;;46037:3;-1:-1:-1;;;;;46024:17:0;;45690:195;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45772:4;45764:21;45738:23;45818:19;:7;:5;:7::i;:19::-;45848:29;;45796:41;;-1:-1:-1;;;;;;45848:12:0;;;:29;;;;;45861:15;;45848:29;;;;45861:15;45848:12;:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45848:29:0;7931:1;;45690:195::o;33828:3167::-;34041:7;17219:11;;;;17211:55;;;;;-1:-1:-1;;;17211:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17358:5;17344:19;;-1:-1:-1;;17344:19:0;;;;;-1:-1:-1;;;31853:7:0;;17344:19;31853:7;31849:102;;;31877:28;;;-1:-1:-1;;;31877:28:0;;;;;;;;;;;;-1:-1:-1;;;31877:28:0;;;;;;;;;;;;;;31849:102;34098:19;-1:-1:-1;;;;;34139:27:0;;34131:70;;;;;-1:-1:-1;;;34131:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34241:14;34258:4;-1:-1:-1;;;;;34258:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34258:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34258:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34258:13:0;34299;;;-1:-1:-1;;;34299:13:0;;;;34258;;-1:-1:-1;34282:14:0;;-1:-1:-1;;;;;34299:11:0;;;;;:13;;;;;34258;;34299;;;;;;;:11;:13;;;5:2:-1;;;;30:1;27;20:12;5:2;34299:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34299:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34299:13:0;;-1:-1:-1;34325:155:0;34371:19;34405:10;34438:4;34458:11;34325:31;:155::i;:::-;34493:23;34519:88;34551:19;34585:11;34519:17;:88::i;:::-;34703:15;;34493:114;;-1:-1:-1;34620:167:0;;34661:19;;-1:-1:-1;;;;;34703:15:0;34734:42;34747:11;34493:114;34734:12;:42::i;:::-;34620:26;:167::i;:::-;34837:15;;34801;;;;-1:-1:-1;;;;;34837:15:0;:31;34883:6;34904;34925:42;34938:11;34951:15;34925:12;:42::i;:::-;34837:224;;;-1:-1:-1;;;;;;34837:224:0;;;;;;;-1:-1:-1;;;;;34837:224:0;;;;;;;;;;;;;;;;;;;34982:1;34837:224;;;;;;;;;;35022:4;34837:224;;;;35048:2;35042:3;:8;34837:224;;;;;;;;;;;;;;;;;-1:-1:-1;34837:224:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;34837:224:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34837:224:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34837:224:0;;;;;;;;;-1:-1:-1;34837:224:0;-1:-1:-1;35074:20:0;35097:12;;;;;:32;;;35124:5;35113:8;:16;35097:32;:87;;35169:15;;35097:87;;;35145:8;35097:87;35074:110;;35197:19;35245:46;35259:23;35284:6;35245:13;:46::i;:::-;:109;;;;;35308:46;35322:23;35347:6;35308:13;:46::i;:::-;35227:1380;;;35395:149;35424:6;35449:23;35491:7;35517:12;35395:10;:149::i;:::-;35381:163;;35574:149;35603:6;35628:23;35670:7;35696:12;35574:10;:149::i;:::-;35559:164;35227:1380;;;35745:46;35759:23;35784:6;35745:13;:46::i;:::-;35741:866;;;35808:20;35831:132;35860:6;35885;35910:7;35936:12;35831:10;:132::i;:::-;35808:155;-1:-1:-1;35992:167:0;36021:6;36046:23;36088:25;35808:155;36105:7;36088:25;:16;:25;:::i;:::-;36132:12;35992:10;:167::i;:::-;35978:181;;35741:866;;;;36181:46;36195:23;36220:6;36181:13;:46::i;:::-;36177:430;;;36244:20;36267:132;36296:6;36321;36346:7;36372:12;36267:10;:132::i;:::-;36244:155;-1:-1:-1;36428:167:0;36457:6;36482:23;36524:25;36244:155;36541:7;36524:25;:16;:25;:::i;36428:167::-;36414:181;;36177:430;;36641:1;36627:11;:15;36619:47;;;;;-1:-1:-1;;;36619:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36683:37:0;;36679:278;;36737:32;;:10;;:32;;;;;36757:11;;36737:32;;;;36757:11;36737:10;:32;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36737:32:0;36679:278;;;36802:143;36848:23;36890:10;36919:11;36802:27;:143::i;:::-;36976:11;-1:-1:-1;;;;;;;;17524:11:0;:18;;-1:-1:-1;;17524:18:0;17538:4;17524:18;;;33828:3167;;-1:-1:-1;;;;33828:3167:0:o;31142:30::-;;;;:::o;45278:216::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45372:38;;;-1:-1:-1;;;45372:38:0;;45404:4;45372:38;;;;;;45358:11;;-1:-1:-1;;;;;45372:23:0;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;45372:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45372:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45372:38:0;;-1:-1:-1;45421:65:0;45457:13;45473:7;:5;:7::i;:::-;45482:3;45421:27;:65::i;:::-;7931:1;45278:216;:::o;31074:22::-;;;-1:-1:-1;;;31074:22:0;;;;;:::o;8473:140::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;8572:1;8556:6;;8535:40;;8556:6;;;;-1:-1:-1;;;;;8556:6:0;;8535:40;;8572:1;;8535:40;8603:1;8586:19;;-1:-1:-1;;8586:19:0;;;8473:140::o;45102:168::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45220:17;:42;;-1:-1:-1;;45220:42:0;-1:-1:-1;;;;;45220:42:0;;;;;;;;;;45102:168::o;7662:79::-;7700:7;7727:6;;;;-1:-1:-1;;;;;7727:6:0;;7662:79::o;8028:94::-;8068:4;8108:6;;;;;-1:-1:-1;;;;;8108:6:0;8092:12;:10;:12::i;:::-;-1:-1:-1;;;;;8092:22:0;;8085:29;;8028:94;:::o;44856:238::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;44992:5;44976:13;:21;;;44932:119;;;;;-1:-1:-1;;;44932:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;45062:8;:24;;;;;;-1:-1:-1;;;45062:24:0;-1:-1:-1;;;;45062:24:0;;;;;;;;;44856:238::o;31103:32::-;;;-1:-1:-1;;;;;31103:32:0;;:::o;31312:128::-;;;-1:-1:-1;;;;;31312:128:0;;:::o;32242:1210::-;32416:15;17219:11;;32416:15;;17219:11;;17211:55;;;;;-1:-1:-1;;;17211:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17358:5;17344:19;;-1:-1:-1;;17344:19:0;;;;;-1:-1:-1;;;31853:7:0;;17344:19;31853:7;31849:102;;;31877:28;;;-1:-1:-1;;;31877:28:0;;;;;;;;;;;;-1:-1:-1;;;31877:28:0;;;;;;;;;;;;;;31849:102;32503:19;-1:-1:-1;;;;;32544:27:0;;32536:70;;;;;-1:-1:-1;;;32536:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32643:14;32660:4;-1:-1:-1;;;;;32660:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32660:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32660:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32660:13:0;32701;;;-1:-1:-1;;;32701:13:0;;;;32660;;-1:-1:-1;32684:14:0;;-1:-1:-1;;;;;32701:11:0;;;;;:13;;;;;32660;;32701;;;;;;;:11;:13;;;5:2:-1;;;;30:1;27;20:12;5:2;32701:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32701:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32701:13:0;;-1:-1:-1;32727:155:0;32773:19;32807:10;32840:4;32860:11;32727:31;:155::i;:::-;32895:23;32921:88;32953:19;32987:11;32921:17;:88::i;:::-;33105:15;;32895:114;;-1:-1:-1;33022:167:0;;33063:19;;-1:-1:-1;;;;;33105:15:0;33136:42;33149:11;32895:114;33136:12;:42::i;33022:167::-;33223:15;;-1:-1:-1;;;;;33223:15:0;:31;33269:6;33290;33311:42;33324:11;33337:15;33311:12;:42::i;:::-;33223:221;;;-1:-1:-1;;;;;;33223:221:0;;;;;;;-1:-1:-1;;;;;33223:221:0;;;;;;;;;;;;;;;;;;;33368:1;33223:221;;;;;;;;;;33400:10;33223:221;;;;33431:2;33425:3;:8;33223:221;;;;;;;;;;;;;;;;;-1:-1:-1;33223:221:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;33223:221:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33223:221:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33223:221:0;;;;;;;17524:11;:18;;-1:-1:-1;;17524:18:0;17538:4;17524:18;;;33223:221;;;;-1:-1:-1;33223:221:0;-1:-1:-1;;;;;;;32242:1210:0:o;41831:1677::-;41940:4;-1:-1:-1;;;;;41984:24:0;;;;;:50;;-1:-1:-1;;;;;;42012:22:0;;;;41984:50;41962:123;;;;;-1:-1:-1;;;41962:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;42116:8;-1:-1:-1;;;;;42102:22:0;:10;-1:-1:-1;;;;;42102:22:0;;42098:39;;;-1:-1:-1;42133:4:0;42126:11;;42098:39;-1:-1:-1;;;;;42154:24:0;;;;:58;;-1:-1:-1;42196:16:0;;-1:-1:-1;;;;;42182:30:0;;;42196:16;;42182:30;42154:58;42150:1328;;;42245:16;;-1:-1:-1;;;;;42233:28:0;;;42245:16;;42233:28;;:54;;-1:-1:-1;;;;;;42265:22:0;;;42233:54;42229:88;;;-1:-1:-1;42313:4:0;42306:11;;42229:88;42387:23;;;42429:16;;42387:59;;;-1:-1:-1;;;42387:59:0;;-1:-1:-1;;;;;42387:59:0;;;;;;;;;;42429:16;;;42387:59;;;;;42332:19;;42387:23;;;;:31;;:59;;;;;;;;;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;42387:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42387:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;42387:59:0;;-1:-1:-1;42480:18:0;42387:59;42480:12;:18::i;:::-;42476:35;;;42507:4;42500:11;;;;;42476:35;42150:1328;;;;-1:-1:-1;;;;;42533:22:0;;;;:54;;-1:-1:-1;42571:16:0;;-1:-1:-1;;;;;42559:28:0;;;42571:16;;42559:28;42533:54;42529:949;;;42622:16;;-1:-1:-1;;;;;42608:30:0;;;42622:16;;42608:30;;:58;;-1:-1:-1;;;;;;42642:24:0;;;42608:58;42604:92;;;-1:-1:-1;42692:4:0;42685:11;;42604:92;42766:23;;;42810:16;;42766:61;;;-1:-1:-1;;;42766:61:0;;-1:-1:-1;;;;;42766:61:0;;;;;;;;;;42810:16;;;42766:61;;;;;42711:19;;42766:23;;;;:31;;:61;;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;42529:949:0;42981:23;;;43025:16;;42981:61;;;-1:-1:-1;;;42981:61:0;;-1:-1:-1;;;;;42981:61:0;;;;;;;;;;43025:16;;;42981:61;;;;;42925:20;;42981:23;;;;:31;;:61;;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;42981:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42981:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;42981:61:0;43128:23;;;43170:16;;43128:59;;;-1:-1:-1;;;43128:59:0;;-1:-1:-1;;;;;43128:59:0;;;;;;;;;;43170:16;;;43128:59;;;;;42981:61;;-1:-1:-1;43072:20:0;;43128:23;;;;;:31;;:59;;;;;42981:61;;43128:59;;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;43128:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43128:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43128:59:0;43273:23;;;:53;;;-1:-1:-1;;;43273:53:0;;-1:-1:-1;;;;;43273:53:0;;;;;;;;;;;;;;;;;;;43128:59;;-1:-1:-1;43217:20:0;;43273:23;;;;;:31;;:53;;;;;43128:59;;43273:53;;;;;;;;:23;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;43273:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43273:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43273:53:0;;-1:-1:-1;43360:19:0;43373:5;43360:12;:19::i;:::-;:42;;;;;43383:19;43396:5;43383:12;:19::i;:::-;43356:59;;;43411:4;43404:11;;;;;;;43356:59;43434:19;43447:5;43434:12;:19::i;:::-;43430:36;;;43462:4;43455:11;;;;;;;43430:36;42529:949;;;;-1:-1:-1;43495:5:0;41831:1677;;;;;:::o;8768:109::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;8841:28;8860:8;8841:18;:28::i;:::-;8768:109;:::o;13698:127::-;13808:7;13698:127;;;;:::o;28112:509::-;28397:51;;;-1:-1:-1;;;;;28397:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;28397:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;28372:87:0;;;;28337:12;;28351:17;;28372:10;;;;28397:51;28372:87;;;25:18:-1;28372:87:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;28372:87:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;28336:123:0;;;;28492:7;:57;;;;-1:-1:-1;28504:11:0;;:16;;:44;;;28535:4;28524:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28524:24:0;28504:44;28470:143;;;;-1:-1:-1;;;28470:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28112:509;;;;;;:::o;44100:501::-;44223:23;44331:8;;44277:94;;44304:36;;44317:12;;-1:-1:-1;;;44331:8:0;;;;44304:12;:36::i;:::-;44355:5;44277:12;:94::i;:::-;44259:112;-1:-1:-1;44388:20:0;44384:61;;-1:-1:-1;44432:1:0;44425:8;;44384:61;44535:17;;44457:136;;44499:21;;-1:-1:-1;;;;;44535:17:0;44567:15;44457:27;:136::i;1369:::-;1427:7;1454:43;1458:1;1461;1454:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1447:50;1369:136;-1:-1:-1;;;1369:136:0:o;27181:456::-;27425:45;;;-1:-1:-1;;;;;27425:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;27425:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;27400:81:0;;;;27365:12;;27379:17;;27400:10;;;;27425:45;27400:81;;;25:18:-1;27400:81:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;27400:81:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27364:117:0;;;;27514:7;:57;;;;-1:-1:-1;27526:11:0;;:16;;:44;;;27557:4;27546:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27546:24:0;27526:44;27492:137;;;;;-1:-1:-1;;;27492:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27181:456;;;;;:::o;37095:2694::-;37248:7;-1:-1:-1;;;;;37290:24:0;;;;;:50;;-1:-1:-1;;;;;;37318:22:0;;;;37290:50;37268:123;;;;;-1:-1:-1;;;37268:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;37420:8;-1:-1:-1;;;;;37406:22:0;:10;-1:-1:-1;;;;;37406:22:0;;37402:41;;;-1:-1:-1;37437:6:0;37430:13;;37402:41;37464:35;37478:10;37490:8;37464:13;:35::i;:::-;37456:67;;;;;-1:-1:-1;;;37456:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;37551:1;37542:6;:10;37534:37;;;;;-1:-1:-1;;;37534:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37588:24:0;;37584:2198;;37645:16;;-1:-1:-1;;;;;37633:28:0;;;37645:16;;37633:28;37629:148;;;37688:16;;;;;;;;;-1:-1:-1;;;;;37688:16:0;-1:-1:-1;;;;;37682:31:0;;37720:6;37682:47;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37682:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37682:47:0;;;;;37755:6;37748:13;;;;37629:148;37815:16;;;37829:1;37815:16;;;37791:21;37815:16;;;;;37791:21;37815:16;;;;;105:10:-1;37815:16:0;88:34:-1;-1:-1;;37856:16:0;;37846:7;;;;-1:-1:-1;;;;;;37856:16:0;;37846:7;;-1:-1:-1;37856:16:0;;37846:7;;;;;;;;;:26;-1:-1:-1;;;;;37846:26:0;;;-1:-1:-1;;;;;37846:26:0;;;;;37897:8;37887:4;37892:1;37887:7;;;;;;;;-1:-1:-1;;;;;37887:18:0;;;:7;;;;;;;;;;:18;;;;37940:15;;:43;;;-1:-1:-1;;;37940:43:0;;;;;;;;;;;;;;;;;;;;;;37920:17;;37940:15;;;;;:29;;37970:6;;37978:4;;37940:43;;;;;;;;;;;;;;;37920:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37940:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37940:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37940:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;37940:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;37940:43:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;37940:43:0;;421:4:-1;412:14;;;;37940:43:0;;;;;412:14:-1;37940:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37940:43:0;;;;;;;;;;;37984:1;37940:46;;;;;;;;;;;;;;37920:66;;38013:124;38044:54;38057:9;38068:29;38081:5;38088:8;38068:12;:29::i;:::-;38044:12;:54::i;38013:124::-;38001:136;;38152:24;38179:15;;;;;;;;;-1:-1:-1;;;;;38179:15:0;-1:-1:-1;;;;;38179:55:0;;38259:6;38267:9;38278:4;38292;38299:3;38305;38299:9;38179:130;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38179:130:0;-1:-1:-1;;;;;38179:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38179:130:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38179:130:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38179:130:0;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;38179:130:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;38179:130:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;38179:130:0;;421:4:-1;412:14;;;;38179:130:0;;;;;412:14:-1;38179:130:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38179:130:0;;;;;;;;;;;38152:157;;38331:7;38339:1;38331:10;;;;;;;;;;;;;;38324:17;;;;;;;37584:2198;-1:-1:-1;;;;;38363:22:0;;38359:1423;;38420:16;;-1:-1:-1;;;;;38406:30:0;;;38420:16;;38406:30;38402:143;;;38463:16;;38457:40;;;-1:-1:-1;;;38457:40:0;;;;;;;;;;-1:-1:-1;;;;;38463:16:0;;;;38457:32;;:40;;;;;38463:16;;38457:40;;;;;;;;38463:16;;38457:40;;;5:2:-1;;;;30:1;27;20:12;5:2;38457:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38457:40:0;;;;38523:6;38516:13;;;;38402:143;38583:16;;;38597:1;38583:16;;;38559:21;38583:16;;;;;38559:21;38583:16;;;;;105:10:-1;38583:16:0;88:34:-1;-1:-1;;38696:15:0;;38559:40;;-1:-1:-1;38614:138:0;;38659:10;;-1:-1:-1;;;;;;38696:15:0;38731:6;38614:26;:138::i;:::-;38777:10;38767:4;38772:1;38767:7;;;;;;;;-1:-1:-1;;;;;38767:20:0;;;:7;;;;;;;;;:20;38812:16;;38802:7;;38812:16;;;38802:4;;38812:16;;38802:7;;;;;;-1:-1:-1;;;;;38802:26:0;;;:7;;;;;;;;;;:26;;;;38863:15;;:43;;;-1:-1:-1;;;38863:43:0;;;;;;;;;;;;;;;;;;;;;;38843:17;;38863:15;;;;;:29;;38893:6;;38901:4;;38863:43;;;;;;;;;;;;;;;38843:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38863:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38863:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38863:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;38863:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;38863:43:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;38863:43:0;;421:4:-1;412:14;;;;38863:43:0;;;;;412:14:-1;38863:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38863:43:0;;;;;;;;;;;38907:1;38863:46;;;;;;;;;;;;;;38843:66;;38936:124;38967:54;38980:9;38991:29;39004:5;39011:8;38991:12;:29::i;38936:124::-;38924:136;;39075:24;39102:15;;;;;;;;;-1:-1:-1;;;;;39102:15:0;-1:-1:-1;;;;;39102:37:0;;39158:6;39183:9;39211:4;39242;39266:3;39272;39266:9;39102:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39102:188:0;-1:-1:-1;;;;;39102:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;39102:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;39102:188:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39102:188:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;39102:188:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;38359:1423:0;39437:15;;39355:138;;39400:10;;-1:-1:-1;;;;;39437:15:0;39472:6;39355:26;:138::i;:::-;39508:22;39533:142;39571:10;39600:8;39627:6;39652:8;39533:19;:142::i;:::-;39508:167;;39715:1;39698:14;:18;39690:44;;;;;-1:-1:-1;;;39690:44:0;;;;;;;;;;;;-1:-1:-1;;;39690:44:0;;;;;;;;;;;;;;;39756:14;-1:-1:-1;38359:1423:0;37095:2694;;;;;;:::o;913:181::-;971:7;1003:5;;;1027:6;;;;1019:46;;;;;-1:-1:-1;;;1019:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27645:459;27891:45;;;-1:-1:-1;;;;;27891:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;27891:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;27866:81:0;;;;27831:12;;27845:17;;27866:10;;;;27891:45;27866:81;;;25:18:-1;27866:81:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;27866:81:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27830:117:0;;;;27980:7;:57;;;;-1:-1:-1;27992:11:0;;:16;;:44;;;28023:4;28012:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28012:24:0;27992:44;27958:138;;;;;-1:-1:-1;;;27958:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6368:98;6448:10;6368:98;:::o;43582:237::-;43648:4;-1:-1:-1;;;;;43669:27:0;;;43665:147;;43713:19;43735:4;-1:-1:-1;;;;;43735:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43735:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43735:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43735:18:0;;-1:-1:-1;43772:15:0;;43768:32;;43796:4;43789:11;;;;;43768:32;43665:147;43582:237;;;:::o;8983:229::-;-1:-1:-1;;;;;9057:22:0;;9049:73;;;;-1:-1:-1;;;9049:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9159:6;;;9138:38;;-1:-1:-1;;;;;9138:38:0;;;;9159:6;;;;;;9138:38;;;9187:6;:17;;-1:-1:-1;;;;;9187:17:0;;;;;-1:-1:-1;;9187:17:0;;;;;;;;;8983:229::o;2285:471::-;2343:7;2588:6;2584:47;;-1:-1:-1;2618:1:0;2611:8;;2584:47;2655:5;;;2659:1;2655;:5;:1;2679:5;;;;;:10;2671:56;;;;-1:-1:-1;;;2671:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3224:132;3282:7;3309:39;3313:1;3316;3309:39;;;;;;;;;;;;;;;;;:3;:39::i;1842:192::-;1928:7;1964:12;1956:6;;;;1948:29;;;;-1:-1:-1;;;1948:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1948:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2000:5:0;;;1842:192::o;39831:1992::-;40065:23;;;40109:16;;40065:61;;;-1:-1:-1;;;40065:61:0;;-1:-1:-1;;;;;40065:61:0;;;;;;;;;;40109:16;;;40065:61;;;;;39993:7;;;;40065:23;;:31;;:61;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;40065:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40065:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40065:61:0;40200:23;;;40242:16;;40200:59;;;-1:-1:-1;;;40200:59:0;;-1:-1:-1;;;;;40200:59:0;;;;;;;;;;40242:16;;;40200:59;;;;;40065:61;;-1:-1:-1;40148:20:0;;40200:23;;;;;:31;;:59;;;;;40065:61;;40200:59;;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;40200:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40200:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40200:59:0;40333:23;;;:53;;;-1:-1:-1;;;40333:53:0;;-1:-1:-1;;;;;40333:53:0;;;;;;;;;;;;;;;;;;;40200:59;;-1:-1:-1;40281:20:0;;40333:23;;;;;:31;;:53;;;;;40200:59;;40333:53;;;;;;;;:23;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;40333:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40333:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40333:53:0;;-1:-1:-1;40410:24:0;40451:19;40333:53;40451:12;:19::i;:::-;40447:1350;;;40511:16;;;40525:1;40511:16;;;40487:21;40511:16;;;;;40487:21;40511:16;;;;;105:10:-1;40511:16:0;88:34:-1;136:17;;-1:-1;40511:16:0;40487:40;;40552:10;40542:4;40547:1;40542:7;;;;;;;;;;;;;:20;-1:-1:-1;;;;;40542:20:0;;;-1:-1:-1;;;;;40542:20:0;;;;;40587:8;40577:4;40582:1;40577:7;;;;;;;;-1:-1:-1;;;;;40577:18:0;;;:7;;;;;;;;;;:18;;;;40630:15;;:43;;;-1:-1:-1;;;40630:43:0;;;;;;;;;;;;;;;;;;;;;;40610:17;;40630:15;;;;;:29;;40660:6;;40668:4;;40630:43;;;;;;;;;;;;;;;40610:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40630:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40630:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40630:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;40630:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;40630:43:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;40630:43:0;;421:4:-1;412:14;;;;40630:43:0;;;;;412:14:-1;40630:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40630:43:0;;;;;;;;;;;40674:1;40630:46;;;;;;;;;;;;;;40610:66;;40703:124;40734:54;40747:9;40758:29;40771:5;40778:8;40758:12;:29::i;40703:124::-;40691:136;;40852:15;;;;;;;;;-1:-1:-1;;;;;40852:15:0;-1:-1:-1;;;;;40852:40:0;;40911:6;40936:9;40964:4;40995;41019:3;41025;41019:9;40852:191;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40852:191:0;-1:-1:-1;;;;;40852:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40852:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40852:191:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40852:191:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;40852:191:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;40852:191:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;40852:191:0;;421:4:-1;412:14;;;;40852:191:0;;;;;412:14:-1;40852:191:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40852:191:0;;;;;;;;;;;40842:201;;41065:7;41073:1;41065:10;;;;;;;;;;;;;;41058:17;;;;;;;;;;40447:1350;41097:19;41110:5;41097:12;:19::i;:::-;:42;;;;;41120:19;41133:5;41120:12;:19::i;:::-;41093:704;;;41180:16;;;41194:1;41180:16;;;;;;;;;41156:21;;41180:16;;;41156:21;;105:10:-1;41180:16:0;88:34:-1;136:17;;-1:-1;41180:16:0;41156:40;;41221:10;41211:4;41216:1;41211:7;;;;;;;;-1:-1:-1;;;;;41211:20:0;;;:7;;;;;;;;;:20;41256:16;;41246:7;;41256:16;;;41246:4;;41256:16;;41246:7;;;;;;;;;;;:26;-1:-1:-1;;;;;41246:26:0;;;-1:-1:-1;;;;;41246:26:0;;;;;41297:8;41287:4;41292:1;41287:7;;;;;;;;-1:-1:-1;;;;;41287:18:0;;;:7;;;;;;;;;;:18;;;;41340:15;;:43;;;-1:-1:-1;;;41340:43:0;;;;;;;;;;;;;;;;;;;;;;41320:17;;41340:15;;;;;:29;;41370:6;;41378:4;;41340:43;;;;;;;;;;;;;;;41320:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41340:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41340:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41340:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;41340:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;41340:43:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;41340:43:0;;421:4:-1;412:14;;;;41340:43:0;;;;;412:14:-1;41340:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41340:43:0;;;;;;;;;;;41384:1;41340:46;;;;;;;;;;;;;;41320:66;;41413:124;41444:54;41457:9;41468:29;41481:5;41488:8;41468:12;:29::i;41413:124::-;41401:136;;41562:15;;;;;;;;;-1:-1:-1;;;;;41562:15:0;-1:-1:-1;;;;;41562:40:0;;41621:6;41646:9;41674:4;41705;41729:3;41735;41729:9;41562:191;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41562:191:0;-1:-1:-1;;;;;41562:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41562:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41562:191:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41562:191:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;41562:191:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;41562:191:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;41562:191:0;;421:4:-1;412:14;;;;41562:191:0;;;;;412:14:-1;41562:191:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41562:191:0;;;;;;;;;;;41552:201;;41775:7;41783:1;41775:10;;;;;;;41093:704;-1:-1:-1;41814:1:0;;39831:1992;-1:-1:-1;;;;;;;;39831:1992:0:o;3886:345::-;3972:7;4074:12;4067:5;4059:28;;;;-1:-1:-1;;;4059:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4059:28:0;;4098:9;4114:1;4110;:5;;;;;;;3886:345;-1:-1:-1;;;;;3886:345:0:o

Swarm Source

bzzr://c828ef351ea71a9bdb392664f45fa720b46c030433aee0a6353a91bccc5e37f2

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Zapper.Fi: Uniswap Zap Out V2 contract has migrated to 0x343E3a490c9251dC0eaA81Da146ba6ABe6C78b2d.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.