ETH Price: $1,940.84 (-1.95%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw210669682024-10-28 21:58:47490 days ago1730152727IN
0x19FffDB5...c5480e6E7
0 ETH0.0015706511.8
Withdraw210317232024-10-23 23:57:59495 days ago1729727879IN
0x19FffDB5...c5480e6E7
0 ETH0.001481045.71990403
Withdraw210277172024-10-23 10:33:59496 days ago1729679639IN
0x19FffDB5...c5480e6E7
0 ETH0.001697336.55525274
Withdraw210275532024-10-23 10:00:47496 days ago1729677647IN
0x19FffDB5...c5480e6E7
0 ETH0.001709116.6007153
Withdraw210273972024-10-23 9:29:23496 days ago1729675763IN
0x19FffDB5...c5480e6E7
0 ETH0.001840936.10359198
Deposit207294722024-09-11 19:31:35537 days ago1726083095IN
0x19FffDB5...c5480e6E7
5.6 ETH0.001152195.1923087
Deposit To206978422024-09-07 9:31:59542 days ago1725701519IN
0x19FffDB5...c5480e6E7
0.2 ETH0.000540762.63145321
Deposit206239002024-08-28 1:47:11552 days ago1724809631IN
0x19FffDB5...c5480e6E7
0.25 ETH0.000276261.34819273
Deposit205935692024-08-23 20:04:23556 days ago1724443463IN
0x19FffDB5...c5480e6E7
0.1749 ETH0.000436632.3262005
Deposit205381542024-08-16 2:19:23564 days ago1723774763IN
0x19FffDB5...c5480e6E7
0.32 ETH0.000176750.95525411
Return To Sacrif...205334892024-08-15 10:39:23565 days ago1723718363IN
0x19FffDB5...c5480e6E7
0.2 ETH0.000850353.38916909
Deposit204697382024-08-06 13:09:59574 days ago1722949799IN
0x19FffDB5...c5480e6E7
0.46 ETH0.009539594.36467281
Sacrifice To Tre...204692152024-08-06 11:25:11574 days ago1722943511IN
0x19FffDB5...c5480e6E7
0 ETH0.000729322.96185897
Deposit204691922024-08-06 11:20:35574 days ago1722943235IN
0x19FffDB5...c5480e6E7
2 ETH0.01143031.95947617
Set Sacrificed T...204687892024-08-06 9:59:59574 days ago1722938399IN
0x19FffDB5...c5480e6E7
0 ETH0.000157843.40694508

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer210317232024-10-23 23:57:59495 days ago1729727879
0x19FffDB5...c5480e6E7
0.96579416 ETH
Transfer210317232024-10-23 23:57:59495 days ago1729727879
0x19FffDB5...c5480e6E7
0.96579416 ETH
Transfer210277172024-10-23 10:33:59496 days ago1729679639
0x19FffDB5...c5480e6E7
0.19957894 ETH
Transfer210277172024-10-23 10:33:59496 days ago1729679639
0x19FffDB5...c5480e6E7
0.19957894 ETH
Transfer210275532024-10-23 10:00:47496 days ago1729677647
0x19FffDB5...c5480e6E7
5.57541432 ETH
Transfer210275532024-10-23 10:00:47496 days ago1729677647
0x19FffDB5...c5480e6E7
5.57541432 ETH
Transfer210273972024-10-23 9:29:23496 days ago1729675763
0x19FffDB5...c5480e6E7
2.07746888 ETH
Transfer210273972024-10-23 9:29:23496 days ago1729675763
0x19FffDB5...c5480e6E7
2.07746888 ETH
Transfer*207294722024-09-11 19:31:35537 days ago1726083095
0x19FffDB5...c5480e6E7
5.6 ETH
Transfer*206978422024-09-07 9:31:59542 days ago1725701519
0x19FffDB5...c5480e6E7
0.2 ETH
Transfer*206239002024-08-28 1:47:11552 days ago1724809631
0x19FffDB5...c5480e6E7
0.25 ETH
Transfer*205935692024-08-23 20:04:23556 days ago1724443463
0x19FffDB5...c5480e6E7
0.1749 ETH
Transfer*205381542024-08-16 2:19:23564 days ago1723774763
0x19FffDB5...c5480e6E7
0.32 ETH
Transfer*205334892024-08-15 10:39:23565 days ago1723718363
0x19FffDB5...c5480e6E7
0.2 ETH
Transfer*204697382024-08-06 13:09:59574 days ago1722949799
0x19FffDB5...c5480e6E7
0.46 ETH
Transfer*204691922024-08-06 11:20:35574 days ago1722943235
0x19FffDB5...c5480e6E7
2 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AgfiFortuna

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : test3.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// interface for WETH (wrapped ETH)
interface IWETH {
    function withdraw(uint256 wad) external;
    function deposit() external payable;
    function transfer(address recipient, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

// Import the interface for ERC20 tokens
interface ISACRIFICEDTOKEN {
    function mint(address to, uint256 value) external returns (bool);
    function setSacrificeProfit(address user, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
    function lastSacrificeProfit(address account) external view returns (uint256);
}

// Import the interface for ERC20 tokens
interface IPXETH {
    function deposit(address receiver,bool shouldCompound) external payable returns (uint256 postFeeAmount, uint256 feeAmount);
}

// Import the interface for ERC20 tokens
interface IPXETHTOKEN {
    function transfer(address recipient, uint256 amount) external returns (bool);
}

interface IAPXETH{
    function redeem(uint256 shares,address receiver,address owner) external returns (uint256 assets);
    function balanceOf(address account) external view returns (uint256);
    function convertToAssets(uint256 shares) external view returns (uint256);
    function convertToShares(uint256 assets) external view returns (uint256);
}

// Import the interface for the Uniswap V3 Swap
interface ISwap {
    function swap(
        address recipient,
        bool zeroForOne,
        int256 amountSpecified,
        uint160 sqrtPriceLimitX96,
        bytes calldata data
    ) external returns (int256 amount0);

    function slot0() external view returns (
        uint160 sqrtPriceX96,
        int24 tick,
        uint16 observationIndex,
        uint16 observationCardinality,
        uint16 observationCardinalityNext,
        uint8 feeProtocol,
        bool unlocked
    );
}

contract AgfiFortuna {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Deposit(address indexed from, address indexed to, uint256 value);
    event Withdraw(address indexed from, address indexed to, uint256 value);
    event Sacrifice(address indexed from, uint256 value);

    IWETH public weth;
    ISwap public swap;
    IPXETHTOKEN public pxethToken;
    IPXETH public pxeth;
    IAPXETH public apxeth;
    ISACRIFICEDTOKEN public sacrificedToken;

    address payable treasuryAddress;

    address public owner;
    uint256 public percentageSupply; // total amount of user owned funds representing 100% to scale the percentages of users correctly
    uint256 public sacrificedSupply; // total amount of tokens sacrificed to the treasury
    mapping(address => uint256) public userPercentageBalance;
    mapping(address => mapping(address => uint256)) public allowance;
    string public name = "AGFI: Fortuna";
    string public symbol = "AGFR";
    uint8 public decimals = 18;
    uint256 public reflectionTax = 25e15; // Amount paid back to holders

    uint256 public totalTreasuryReturns = 0; // tracks the total amount of eth returned from the treasury (Just used for tracking no actual functionality)
    uint256 public sacrificersBalance = 0; // amount of unclaimed value belonging to sacrificers
    uint256 public sacrificersProfit = 0; // amount of profit per token sacrificed to the treasury
    uint256 private constant FULLPERCENT = 1e18;

    bool private locked;

    modifier noReentrancy() {
        require(!locked, "Reentrant call detected");
        locked = true;
        _;
        locked = false;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Not the owner");
        _;
    }

    modifier onlySacrificedToken() {
        require(msg.sender == address(sacrificedToken), "Not sacrificed token");
        _;
    }

    constructor() {
        owner = msg.sender;
        weth = IWETH(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
        swap = ISwap(0x02eDd21F1DB8EB146be60998e9801691e725F119);
        treasuryAddress = payable(0x4c3ADd465413A85EfcD24a523A3cEb68B7566F95);
        pxethToken = IPXETHTOKEN(0x04C154b66CB340F3Ae24111CC767e0184Ed00Cc6);
        pxeth = IPXETH(0xD664b74274DfEB538d9baC494F3a4760828B02b0);
        apxeth = IAPXETH(0x9Ba021B0a9b958B5E75cE9f6dff97C7eE52cb3E6);
    }

    function setReflectionTax(uint256 newReflectionTax) external onlyOwner(){
        reflectionTax = newReflectionTax;
    }

    function setTreasuryAddress(address newTreasuryAddress) external onlyOwner(){
        treasuryAddress = payable(newTreasuryAddress);
    }

    function setSwapAddress(address newSwapAddress) external onlyOwner(){
        swap = ISwap(newSwapAddress);
    }
    
    function setSacrificedToken(address newSacrificedToken) external onlyOwner(){
        sacrificedToken = ISACRIFICEDTOKEN(newSacrificedToken);
    }

    function depositLogic(address to, uint256 amount) internal {
        uint256 reflectionAmount = (amount * reflectionTax)/FULLPERCENT;
        uint256 preProfitFactor = profitFactor();
        (uint256 postFeeAmount,) = pxeth.deposit{value: amount}(address(this), true);
        uint256 percentageBalance = ((postFeeAmount-reflectionAmount) * FULLPERCENT) / preProfitFactor;
        userPercentageBalance[to] += percentageBalance;
        percentageSupply += percentageBalance;
        emit Deposit(msg.sender, to, amount);
    }

    // deposit ETH in exchange for tokens
    function deposit() external payable noReentrancy {
        require(msg.value > 0, "Must send ETH to deposit");
        depositLogic(msg.sender, msg.value);
    }

    // deposit ETH in exchange for tokens to a specific address
    function depositTo(address to) external payable noReentrancy {
        require(msg.value > 0, "Must send ETH to deposit");
        depositLogic(to, msg.value);
    }

    // logic for withdrawing PETH to the user directly without converting it
    function withdrawpxethLogic(address to, uint256 amount) internal returns(uint256){
        require(balanceOf(msg.sender) >= amount, "Not enough balance");
        uint256 initBalanceOf = balanceOf(msg.sender); // this is used to make sure the percentage requested by the user remains consistent
        claimSacrificedProfits(msg.sender);
        uint256 withdrawPercentage = (userPercentageBalance[msg.sender] * amount)/initBalanceOf;
        userPercentageBalance[msg.sender] -= withdrawPercentage;
        percentageSupply -= withdrawPercentage;
        emit Withdraw(msg.sender, to, amount);
        return apxeth.redeem(apxeth.convertToShares(amount), to, address(this));
    }

    // used for lower amounts. Best to withdraw using pxeth and let user decide what to do with it
    function withdrawLogic(address to, uint256 amount) internal {
        uint256 returnedAmount = withdrawpxethLogic(address(this), amount);
        (uint160 sqrtPriceX96, , , , , , ) = swap.slot0();
        uint160 sqrtPriceLimitX96 = sqrtPriceX96 * 9999 / 10000;

        bytes memory data = abi.encode(to);
        swap.swap(
            address(this), // This contract will handle the callback
            true,
            int256(returnedAmount),
            sqrtPriceLimitX96,
            data
        );
    }

    function uniswapV3SwapCallback(
        int256 amount0Delta,
        int256 amount1Delta,
        bytes calldata data
    ) external {
        require(msg.sender == address(swap), "Unauthorized");
        address to = abi.decode(data, (address));

        if (amount0Delta > 0) {
            require(pxethToken.transfer(address(swap), uint256(amount0Delta)), "Transfer failed");
            weth.withdraw(uint256(-amount1Delta));
            payable(to).transfer(uint256(-amount1Delta));
        }
        if (amount1Delta > 0) {
            require(weth.transfer(address(swap), uint256(amount1Delta)), "Transfer failed");
        }
    }

    // converts the underlying assets to ETH before withdrawing (don't call if you are withdrawing a large amount of funds as slippage might cause the withdraw to fail)
    function withdraw(uint256 amount) external noReentrancy{
        withdrawLogic(msg.sender, amount);
    }

    // converts the underlying assets to ETH before withdrawing (don't call if you are withdrawing a large amount of funds as slippage might cause the withdraw to fail)
    function withdrawTo(address to, uint256 amount) external noReentrancy{
        withdrawLogic(to, amount);
    }

    // Doesn't convert underlying assets before withdrawing
    function withdrawDirect(uint256 amount) external noReentrancy{
        withdrawpxethLogic(msg.sender, amount);
    }

    // Doesn't convert underlying assets before withdrawing
    function withdrawDirectTo(address to, uint256 amount) external noReentrancy{
        withdrawpxethLogic(to, amount);
    }

    // function to return value from the treasury to the sacrificed balances. Any value added here will only go towards the sacrified balances
    function returnToSacrificers() external payable {
        require(msg.value > 0, "Must send ETH");
        totalTreasuryReturns += msg.value;
        (uint256 postFeeAmount, ) = pxeth.deposit{value: msg.value}(address(this), true);

        sacrificersProfit += (apxeth.convertToShares(postFeeAmount)*1e18)/sacrificedSupply;
        sacrificersBalance += apxeth.convertToShares(postFeeAmount);
    }

    // this enables users to sacrifice a variable amount to the treasury to scale their investment. Sacrificied funds will earn rewards relative to how well the treasury performs
    function sacrificeToTreasury(uint256 amount) external noReentrancy {
        withdrawpxethLogic(treasuryAddress, amount);
        require(sacrificedToken.mint(msg.sender, amount), "Failed to mint");
        sacrificedSupply += amount;
        emit Sacrifice(msg.sender, amount);
    }

    function updateSacrificedProfits(address user) external onlySacrificedToken returns(bool){
        claimSacrificedProfits(user);
        return true;
    }

    // function to claim the profits earned from sacrificed balance. This is called automatically internally before any operation
    function claimSacrificedProfits(address user) internal {
        uint256 returnsToClaim = unclaimedReturns(user);
        require(sacrificedToken.setSacrificeProfit(user, sacrificersProfit), "Failed to set profit");
        if(returnsToClaim>0){
            uint256 percentageToClaim = apxeth.convertToAssets(returnsToClaim);
            sacrificersBalance -= returnsToClaim;
            userPercentageBalance[user] += percentageToClaim;
            percentageSupply += percentageToClaim;
        }
    }

    function approve(address spender, uint256 value) public returns (bool success) {
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    // logic for executing a transfer. The token balance is derived from the percentage of the value they own so when transfering funds it is actually the percentage that is moved
    function transferLogic(address from, address to, uint256 value) internal{
        require(balanceOf(from) >= value, "Not enough balance");
        uint256 initBalanceOf = balanceOf(msg.sender);
        claimSacrificedProfits(msg.sender);

        uint256 withdrawPercentage = (userPercentageBalance[from] * value)/initBalanceOf;

        userPercentageBalance[from] -= withdrawPercentage;
        userPercentageBalance[to] += withdrawPercentage;

        emit Transfer(from, to, value);
    }

    // Function to transfer tokens
    function transfer(address to, uint256 value) public returns (bool success) {
        transferLogic(msg.sender, to, value);
        return true;
    }

    // Function to transfer tokens from an approved allowance
    function transferFrom(address from, address to, uint256 value) public returns (bool success) {
        require(value <= allowance[from][msg.sender], "Allowance exceeded");
        allowance[from][msg.sender] -= value;
        transferLogic(from, to, value);
        return true;
    }

    // calculates the balance of a user accounting for their sacrificed balance as well as their normal balance
    function balanceOf(address account) public view virtual returns (uint256) {
        uint256 userSupply = 0;
        uint256 specialSupply = 0;
        if(userPercentageBalance[account] != 0){
            userSupply = (apxeth.convertToAssets(usersapxethBalance())*userPercentageBalance[account])/(percentageSupply);
        }
        if(sacrificedToken.balanceOf(account) != 0){
            specialSupply = apxeth.convertToAssets(unclaimedReturns(account));
        }
        return specialSupply + userSupply;
    }

    // gets total supply accounting both sacrificed profits and user funds
    function totalSupply() public view virtual returns (uint256) {
        return apxeth.convertToAssets(apxeth.balanceOf(address(this)));
    }

    // value is pegged to pxeth which in turn is pegged to eth. This returns the value of the underlying funds to scale the balance correctly
    function profitFactor() public view returns(uint256)
    {
        if(percentageSupply == 0){
            return FULLPERCENT;
        }
        return (apxeth.convertToAssets(usersapxethBalance())*1e18)/percentageSupply;
    }

    // how much value is owned by the non sacrificed balance
    function usersapxethBalance() public view returns (uint256) {
        if(sacrificersBalance >= apxeth.balanceOf(address(this))){
            return 0;
        }
        return apxeth.balanceOf(address(this)) - sacrificersBalance;
    }

    // returns unclaimed value earned by the sacrificed balance
    function unclaimedReturns(address account) public view returns (uint256) {
        if(sacrificedToken.balanceOf(account) == 0){
            return 0;
        }
        return (sacrificedToken.balanceOf(account)*(sacrificersProfit - sacrificedToken.lastSacrificeProfit(account)))/FULLPERCENT;
    }

    receive() external payable {}
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Sacrifice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"apxeth","outputs":[{"internalType":"contract IAPXETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"depositTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentageSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pxeth","outputs":[{"internalType":"contract IPXETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pxethToken","outputs":[{"internalType":"contract IPXETHTOKEN","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnToSacrificers","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sacrificeToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sacrificedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificedToken","outputs":[{"internalType":"contract ISACRIFICEDTOKEN","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificersBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificersProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newReflectionTax","type":"uint256"}],"name":"setReflectionTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSacrificedToken","type":"address"}],"name":"setSacrificedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSwapAddress","type":"address"}],"name":"setSwapAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swap","outputs":[{"internalType":"contract ISwap","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTreasuryReturns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unclaimedReturns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"updateSacrificedProfits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userPercentageBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usersapxethBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawDirect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawDirectTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600d81526020017f414746493a20466f7274756e6100000000000000000000000000000000000000815250600c90816100489190610542565b506040518060400160405280600481526020017f4147465200000000000000000000000000000000000000000000000000000000815250600d908161008d9190610542565b506012600e5f6101000a81548160ff021916908360ff1602179055506658d15e17628000600f555f6010555f6011555f6012553480156100cb575f80fd5b503360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507302edd21f1db8eb146be60998e9801691e725f11960015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734c3add465413a85efcd24a523a3ceb68b7566f9560065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507304c154b66cb340f3ae24111cc767e0184ed00cc660025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d664b74274dfeb538d9bac494f3a4760828b02b060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739ba021b0a9b958b5e75ce9f6dff97c7ee52cb3e660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610611565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061038357607f821691505b6020821081036103965761039561033f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103bd565b61040286836103bd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61044661044161043c8461041a565b610423565b61041a565b9050919050565b5f819050919050565b61045f8361042c565b61047361046b8261044d565b8484546103c9565b825550505050565b5f90565b61048761047b565b610492818484610456565b505050565b5b818110156104b5576104aa5f8261047f565b600181019050610498565b5050565b601f8211156104fa576104cb8161039c565b6104d4846103ae565b810160208510156104e3578190505b6104f76104ef856103ae565b830182610497565b50505b505050565b5f82821c905092915050565b5f61051a5f19846008026104ff565b1980831691505092915050565b5f610532838361050b565b9150826002028217905092915050565b61054b82610308565b67ffffffffffffffff81111561056457610563610312565b5b61056e825461036c565b6105798282856104b9565b5f60209050601f8311600181146105aa575f8415610598578287015190505b6105a28582610527565b865550610609565b601f1984166105b88661039c565b5f5b828110156105df578489015182556001820191506020850194506020810190506105ba565b868310156105fc57848901516105f8601f89168261050b565b8355505b6001600288020188555050505b505050505050565b6140448061061e5f395ff3fe60806040526004361061023e575f3560e01c80638119c0651161012d578063cb9a1065116100aa578063dd62ed3e1161006e578063dd62ed3e14610829578063e168f99d14610865578063e1d0bd291461088d578063e217b5a3146108b7578063fa461e33146108df57610245565b8063cb9a106514610765578063cd8992881461078f578063d0e30db0146107cb578063d453bf52146107d5578063d8b0d849146107ff57610245565b806395d89b41116100f157806395d89b411461068f578063a5bc6d6f146106b9578063a9059cbb146106e3578063b760faf91461071f578063b8a8471e1461073b57610245565b80638119c065146105bd578063823e7651146105e75780638b30c7c8146106115780638cdfe1661461063b5780638da5cb5b1461066557610245565b8063313ce567116101bb578063508662a01161017f578063508662a0146104b95780636605bfda146104f557806370a082311461051d57806374b4b17e146105595780637dc4b9cc1461059557610245565b8063313ce56714610409578063392fc668146104335780633ac11da01461045b5780633ae2f354146104655780633fc8cef31461048f57610245565b806318160ddd1161020257806318160ddd1461032b5780631cfd460c14610355578063205c28781461037d57806323b872dd146103a55780632e1a7d4d146103e157610245565b806306fdde0314610249578063095ea7b3146102735780630cadd9a4146102af57806316486416146102d95780631724ecee1461030157610245565b3661024557005b5f80fd5b348015610254575f80fd5b5061025d610907565b60405161026a919061300d565b60405180910390f35b34801561027e575f80fd5b50610299600480360381019061029491906130c2565b610993565b6040516102a6919061311a565b60405180910390f35b3480156102ba575f80fd5b506102c3610a80565b6040516102d09190613142565b60405180910390f35b3480156102e4575f80fd5b506102ff60048036038101906102fa919061315b565b610bd6565b005b34801561030c575f80fd5b50610315610ca8565b60405161032291906131e1565b60405180910390f35b348015610336575f80fd5b5061033f610ccd565b60405161034c9190613142565b60405180910390f35b348015610360575f80fd5b5061037b600480360381019061037691906131fa565b610e04565b005b348015610388575f80fd5b506103a3600480360381019061039e91906130c2565b610ff6565b005b3480156103b0575f80fd5b506103cb60048036038101906103c69190613225565b611086565b6040516103d8919061311a565b60405180910390f35b3480156103ec575f80fd5b50610407600480360381019061040291906131fa565b6111e6565b005b348015610414575f80fd5b5061041d611275565b60405161042a9190613290565b60405180910390f35b34801561043e575f80fd5b50610459600480360381019061045491906130c2565b611287565b005b610463611318565b005b348015610470575f80fd5b50610479611597565b6040516104869190613142565b60405180910390f35b34801561049a575f80fd5b506104a361159d565b6040516104b091906132c9565b60405180910390f35b3480156104c4575f80fd5b506104df60048036038101906104da919061315b565b6115c0565b6040516104ec919061311a565b60405180910390f35b348015610500575f80fd5b5061051b6004803603810190610516919061315b565b611662565b005b348015610528575f80fd5b50610543600480360381019061053e919061315b565b611734565b6040516105509190613142565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a919061315b565b6119ce565b60405161058c9190613142565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b6919061315b565b611bda565b005b3480156105c8575f80fd5b506105d1611cac565b6040516105de9190613302565b60405180910390f35b3480156105f2575f80fd5b506105fb611cd1565b604051610608919061333b565b60405180910390f35b34801561061c575f80fd5b50610625611cf6565b6040516106329190613374565b60405180910390f35b348015610646575f80fd5b5061064f611d1b565b60405161065c9190613142565b60405180910390f35b348015610670575f80fd5b50610679611dfb565b604051610686919061339c565b60405180910390f35b34801561069a575f80fd5b506106a3611e20565b6040516106b0919061300d565b60405180910390f35b3480156106c4575f80fd5b506106cd611eac565b6040516106da9190613142565b60405180910390f35b3480156106ee575f80fd5b50610709600480360381019061070491906130c2565b611eb2565b604051610716919061311a565b60405180910390f35b6107396004803603810190610734919061315b565b611ec8565b005b348015610746575f80fd5b5061074f611f99565b60405161075c9190613142565b60405180910390f35b348015610770575f80fd5b50610779611f9f565b60405161078691906133d5565b60405180910390f35b34801561079a575f80fd5b506107b560048036038101906107b0919061315b565b611fc4565b6040516107c29190613142565b60405180910390f35b6107d3611fd9565b005b3480156107e0575f80fd5b506107e96120a9565b6040516107f69190613142565b60405180910390f35b34801561080a575f80fd5b506108136120af565b6040516108209190613142565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906133ee565b6120b5565b60405161085c9190613142565b60405180910390f35b348015610870575f80fd5b5061088b600480360381019061088691906131fa565b6120d5565b005b348015610898575f80fd5b506108a1612165565b6040516108ae9190613142565b60405180910390f35b3480156108c2575f80fd5b506108dd60048036038101906108d891906131fa565b61216b565b005b3480156108ea575f80fd5b50610905600480360381019061090091906134c0565b612204565b005b600c80546109149061355e565b80601f01602080910402602001604051908101604052809291908181526020018280546109409061355e565b801561098b5780601f106109625761010080835404028352916020019161098b565b820191905f5260205f20905b81548152906001019060200180831161096e57829003601f168201915b505050505081565b5f81600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a6e9190613142565b60405180910390a36001905092915050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610adb919061339c565b602060405180830381865afa158015610af6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1a91906135a2565b60115410610b2a575f9050610bd3565b60115460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b87919061339c565b602060405180830381865afa158015610ba2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc691906135a2565b610bd091906135fa565b90505b90565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613677565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d65919061339c565b602060405180830381865afa158015610d80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da491906135a2565b6040518263ffffffff1660e01b8152600401610dc09190613142565b602060405180830381865afa158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff91906135a2565b905090565b60135f9054906101000a900460ff1615610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a906136df565b60405180910390fd5b600160135f6101000a81548160ff021916908315150217905550610e9860065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261258f565b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401610ef59291906136fd565b6020604051808303815f875af1158015610f11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f35919061374e565b610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b906137c3565b60405180910390fd5b8060095f828254610f8591906137e1565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fff8488d11ac2308131a8d9936ff5d9df537241466d5b70a4d0637191ca0aca5482604051610fd29190613142565b60405180910390a25f60135f6101000a81548160ff02191690831515021790555050565b60135f9054906101000a900460ff1615611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055506110698282612857565b5f60135f6101000a81548160ff0219169083151502179055505050565b5f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115611142576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111399061385e565b60405180910390fd5b81600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546111c991906135fa565b925050819055506111db8484846129e8565b600190509392505050565b60135f9054906101000a900460ff1615611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055506112593382612857565b5f60135f6101000a81548160ff02191690831515021790555050565b600e5f9054906101000a900460ff1681565b60135f9054906101000a900460ff16156112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055506112fa828261258f565b505f60135f6101000a81548160ff0219169083151502179055505050565b5f341161135a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611351906138c6565b60405180910390fd5b3460105f82825461136b91906137e1565b925050819055505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663adc9740c343060016040518463ffffffff1660e01b81526004016113d19291906138e4565b604080518083038185885af11580156113ec573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611411919061390b565b509050600954670de0b6b3a764000060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6e6f592846040518263ffffffff1660e01b815260040161147a9190613142565b602060405180830381865afa158015611495573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b991906135a2565b6114c39190613949565b6114cd91906139b7565b60125f8282546114dd91906137e1565b9250508190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6e6f592826040518263ffffffff1660e01b815260040161153e9190613142565b602060405180830381865afa158015611559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157d91906135a2565b60115f82825461158d91906137e1565b9250508190555050565b600f5481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790613a31565b60405180910390fd5b61165982612bb1565b60019050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e890613677565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f90505f80600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461187657600854600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a611804610a80565b6040518263ffffffff1660e01b81526004016118209190613142565b602060405180830381865afa15801561183b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185f91906135a2565b6118699190613949565b61187391906139b7565b91505b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016118d1919061339c565b602060405180830381865afa1580156118ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191091906135a2565b146119b95760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a61195b866119ce565b6040518263ffffffff1660e01b81526004016119779190613142565b602060405180830381865afa158015611992573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b691906135a2565b90505b81816119c591906137e1565b92505050919050565b5f8060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401611a2a919061339c565b602060405180830381865afa158015611a45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6991906135a2565b03611a76575f9050611bd5565b670de0b6b3a764000060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e991a2d7846040518263ffffffff1660e01b8152600401611ad9919061339c565b602060405180830381865afa158015611af4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1891906135a2565b601254611b2591906135fa565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401611b7f919061339c565b602060405180830381865afa158015611b9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbe91906135a2565b611bc89190613949565b611bd291906139b7565b90505b919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6090613677565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8060085403611d3557670de0b6b3a76400009050611df8565b600854670de0b6b3a764000060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a611d86610a80565b6040518263ffffffff1660e01b8152600401611da29190613142565b602060405180830381865afa158015611dbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de191906135a2565b611deb9190613949565b611df591906139b7565b90505b90565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d8054611e2d9061355e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e599061355e565b8015611ea45780601f10611e7b57610100808354040283529160200191611ea4565b820191905f5260205f20905b815481529060010190602001808311611e8757829003601f168201915b505050505081565b60105481565b5f611ebe3384846129e8565b6001905092915050565b60135f9054906101000a900460ff1615611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055505f3411611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a90613a99565b60405180910390fd5b611f7d8134612dc7565b5f60135f6101000a81548160ff02191690831515021790555050565b60095481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915090505481565b60135f9054906101000a900460ff1615612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055505f3411612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b90613a99565b60405180910390fd5b61208e3334612dc7565b5f60135f6101000a81548160ff021916908315150217905550565b60125481565b60115481565b600b602052815f5260405f20602052805f5260405f205f91509150505481565b60135f9054906101000a900460ff1615612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b906136df565b60405180910390fd5b600160135f6101000a81548160ff021916908315150217905550612148338261258f565b505f60135f6101000a81548160ff02191690831515021790555050565b60085481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f190613677565b60405180910390fd5b80600f8190555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a90613b01565b60405180910390fd5b5f82828101906122a39190613b5a565b90505f8513156124855760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518363ffffffff1660e01b815260040161232a9291906136fd565b6020604051808303815f875af1158015612346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236a919061374e565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a090613bcf565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856123ee90613bed565b6040518263ffffffff1660e01b815260040161240a9190613142565b5f604051808303815f87803b158015612421575f80fd5b505af1158015612433573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff166108fc8561245b90613bed565b90811502906040515f60405180830381858888f19350505050158015612483573d5f803e3d5ffd5b505b5f841315612588575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b81526004016125089291906136fd565b6020604051808303815f875af1158015612524573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612548919061374e565b612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e90613bcf565b60405180910390fd5b5b5050505050565b5f8161259a33611734565b10156125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290613c7d565b60405180910390fd5b5f6125e533611734565b90506125f033612bb1565b5f8184600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461263b9190613949565b61264591906139b7565b905080600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461269391906135fa565b925050819055508060085f8282546126ab91906135fa565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8660405161270f9190613142565b60405180910390a360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba08765260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6e6f592876040518263ffffffff1660e01b81526004016127ae9190613142565b602060405180830381865afa1580156127c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ed91906135a2565b87306040518463ffffffff1660e01b815260040161280d93929190613c9b565b6020604051808303815f875af1158015612829573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284d91906135a2565b9250505092915050565b5f612862308361258f565b90505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156128cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f39190613d91565b50505050505090505f61271061270f8361290d9190613e2e565b6129179190613e6f565b90505f8560405160200161292b919061339c565b604051602081830303815290604052905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663128acb083060018786866040518663ffffffff1660e01b815260040161299f959493929190613f0f565b6020604051808303815f875af11580156129bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129df9190613f7b565b50505050505050565b806129f284611734565b1015612a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2a90613c7d565b60405180910390fd5b5f612a3d33611734565b9050612a4833612bb1565b5f8183600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a939190613949565b612a9d91906139b7565b905080600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612aeb91906135fa565b9250508190555080600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b3e91906137e1565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612ba29190613142565b60405180910390a35050505050565b5f612bbb826119ce565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f140209e836012546040518363ffffffff1660e01b8152600401612c1b9291906136fd565b6020604051808303815f875af1158015612c37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c5b919061374e565b612c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9190613ff0565b60405180910390fd5b5f811115612dc3575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a836040518263ffffffff1660e01b8152600401612cfd9190613142565b602060405180830381865afa158015612d18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3c91906135a2565b90508160115f828254612d4f91906135fa565b9250508190555080600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612da291906137e1565b925050819055508060085f828254612dba91906137e1565b92505081905550505b5050565b5f670de0b6b3a7640000600f5483612ddf9190613949565b612de991906139b7565b90505f612df4611d1b565b90505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663adc9740c853060016040518463ffffffff1660e01b8152600401612e559291906138e4565b604080518083038185885af1158015612e70573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612e95919061390b565b5090505f82670de0b6b3a76400008584612eaf91906135fa565b612eb99190613949565b612ec391906139b7565b905080600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f1191906137e1565b925050819055508060085f828254612f2991906137e1565b925050819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6287604051612f8d9190613142565b60405180910390a3505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612fdf82612f9d565b612fe98185612fa7565b9350612ff9818560208601612fb7565b61300281612fc5565b840191505092915050565b5f6020820190508181035f8301526130258184612fd5565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61305e82613035565b9050919050565b61306e81613054565b8114613078575f80fd5b50565b5f8135905061308981613065565b92915050565b5f819050919050565b6130a18161308f565b81146130ab575f80fd5b50565b5f813590506130bc81613098565b92915050565b5f80604083850312156130d8576130d761302d565b5b5f6130e58582860161307b565b92505060206130f6858286016130ae565b9150509250929050565b5f8115159050919050565b61311481613100565b82525050565b5f60208201905061312d5f83018461310b565b92915050565b61313c8161308f565b82525050565b5f6020820190506131555f830184613133565b92915050565b5f602082840312156131705761316f61302d565b5b5f61317d8482850161307b565b91505092915050565b5f819050919050565b5f6131a96131a461319f84613035565b613186565b613035565b9050919050565b5f6131ba8261318f565b9050919050565b5f6131cb826131b0565b9050919050565b6131db816131c1565b82525050565b5f6020820190506131f45f8301846131d2565b92915050565b5f6020828403121561320f5761320e61302d565b5b5f61321c848285016130ae565b91505092915050565b5f805f6060848603121561323c5761323b61302d565b5b5f6132498682870161307b565b935050602061325a8682870161307b565b925050604061326b868287016130ae565b9150509250925092565b5f60ff82169050919050565b61328a81613275565b82525050565b5f6020820190506132a35f830184613281565b92915050565b5f6132b3826131b0565b9050919050565b6132c3816132a9565b82525050565b5f6020820190506132dc5f8301846132ba565b92915050565b5f6132ec826131b0565b9050919050565b6132fc816132e2565b82525050565b5f6020820190506133155f8301846132f3565b92915050565b5f613325826131b0565b9050919050565b6133358161331b565b82525050565b5f60208201905061334e5f83018461332c565b92915050565b5f61335e826131b0565b9050919050565b61336e81613354565b82525050565b5f6020820190506133875f830184613365565b92915050565b61339681613054565b82525050565b5f6020820190506133af5f83018461338d565b92915050565b5f6133bf826131b0565b9050919050565b6133cf816133b5565b82525050565b5f6020820190506133e85f8301846133c6565b92915050565b5f80604083850312156134045761340361302d565b5b5f6134118582860161307b565b92505060206134228582860161307b565b9150509250929050565b5f819050919050565b61343e8161342c565b8114613448575f80fd5b50565b5f8135905061345981613435565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126134805761347f61345f565b5b8235905067ffffffffffffffff81111561349d5761349c613463565b5b6020830191508360018202830111156134b9576134b8613467565b5b9250929050565b5f805f80606085870312156134d8576134d761302d565b5b5f6134e58782880161344b565b94505060206134f68782880161344b565b935050604085013567ffffffffffffffff81111561351757613516613031565b5b6135238782880161346b565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061357557607f821691505b60208210810361358857613587613531565b5b50919050565b5f8151905061359c81613098565b92915050565b5f602082840312156135b7576135b661302d565b5b5f6135c48482850161358e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136048261308f565b915061360f8361308f565b9250828203905081811115613627576136266135cd565b5b92915050565b7f4e6f7420746865206f776e6572000000000000000000000000000000000000005f82015250565b5f613661600d83612fa7565b915061366c8261362d565b602082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f5265656e7472616e742063616c6c2064657465637465640000000000000000005f82015250565b5f6136c9601783612fa7565b91506136d482613695565b602082019050919050565b5f6020820190508181035f8301526136f6816136bd565b9050919050565b5f6040820190506137105f83018561338d565b61371d6020830184613133565b9392505050565b61372d81613100565b8114613737575f80fd5b50565b5f8151905061374881613724565b92915050565b5f602082840312156137635761376261302d565b5b5f6137708482850161373a565b91505092915050565b7f4661696c656420746f206d696e740000000000000000000000000000000000005f82015250565b5f6137ad600e83612fa7565b91506137b882613779565b602082019050919050565b5f6020820190508181035f8301526137da816137a1565b9050919050565b5f6137eb8261308f565b91506137f68361308f565b925082820190508082111561380e5761380d6135cd565b5b92915050565b7f416c6c6f77616e636520657863656564656400000000000000000000000000005f82015250565b5f613848601283612fa7565b915061385382613814565b602082019050919050565b5f6020820190508181035f8301526138758161383c565b9050919050565b7f4d7573742073656e6420455448000000000000000000000000000000000000005f82015250565b5f6138b0600d83612fa7565b91506138bb8261387c565b602082019050919050565b5f6020820190508181035f8301526138dd816138a4565b9050919050565b5f6040820190506138f75f83018561338d565b613904602083018461310b565b9392505050565b5f80604083850312156139215761392061302d565b5b5f61392e8582860161358e565b925050602061393f8582860161358e565b9150509250929050565b5f6139538261308f565b915061395e8361308f565b925082820261396c8161308f565b91508282048414831517613983576139826135cd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139c18261308f565b91506139cc8361308f565b9250826139dc576139db61398a565b5b828204905092915050565b7f4e6f74207361637269666963656420746f6b656e0000000000000000000000005f82015250565b5f613a1b601483612fa7565b9150613a26826139e7565b602082019050919050565b5f6020820190508181035f830152613a4881613a0f565b9050919050565b7f4d7573742073656e642045544820746f206465706f73697400000000000000005f82015250565b5f613a83601883612fa7565b9150613a8e82613a4f565b602082019050919050565b5f6020820190508181035f830152613ab081613a77565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613aeb600c83612fa7565b9150613af682613ab7565b602082019050919050565b5f6020820190508181035f830152613b1881613adf565b9050919050565b5f613b2982613035565b9050919050565b613b3981613b1f565b8114613b43575f80fd5b50565b5f81359050613b5481613b30565b92915050565b5f60208284031215613b6f57613b6e61302d565b5b5f613b7c84828501613b46565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f613bb9600f83612fa7565b9150613bc482613b85565b602082019050919050565b5f6020820190508181035f830152613be681613bad565b9050919050565b5f613bf78261342c565b91507f80000000000000000000000000000000000000000000000000000000000000008203613c2957613c286135cd565b5b815f039050919050565b7f4e6f7420656e6f7567682062616c616e636500000000000000000000000000005f82015250565b5f613c67601283612fa7565b9150613c7282613c33565b602082019050919050565b5f6020820190508181035f830152613c9481613c5b565b9050919050565b5f606082019050613cae5f830186613133565b613cbb602083018561338d565b613cc8604083018461338d565b949350505050565b613cd981613035565b8114613ce3575f80fd5b50565b5f81519050613cf481613cd0565b92915050565b5f8160020b9050919050565b613d0f81613cfa565b8114613d19575f80fd5b50565b5f81519050613d2a81613d06565b92915050565b5f61ffff82169050919050565b613d4681613d30565b8114613d50575f80fd5b50565b5f81519050613d6181613d3d565b92915050565b613d7081613275565b8114613d7a575f80fd5b50565b5f81519050613d8b81613d67565b92915050565b5f805f805f805f60e0888a031215613dac57613dab61302d565b5b5f613db98a828b01613ce6565b9750506020613dca8a828b01613d1c565b9650506040613ddb8a828b01613d53565b9550506060613dec8a828b01613d53565b9450506080613dfd8a828b01613d53565b93505060a0613e0e8a828b01613d7d565b92505060c0613e1f8a828b0161373a565b91505092959891949750929550565b5f613e3882613035565b9150613e4383613035565b9250828202613e5181613035565b91508282048414831517613e6857613e676135cd565b5b5092915050565b5f613e7982613035565b9150613e8483613035565b925082613e9457613e9361398a565b5b828204905092915050565b613ea88161342c565b82525050565b613eb781613035565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f613ee182613ebd565b613eeb8185613ec7565b9350613efb818560208601612fb7565b613f0481612fc5565b840191505092915050565b5f60a082019050613f225f83018861338d565b613f2f602083018761310b565b613f3c6040830186613e9f565b613f496060830185613eae565b8181036080830152613f5b8184613ed7565b90509695505050505050565b5f81519050613f7581613435565b92915050565b5f60208284031215613f9057613f8f61302d565b5b5f613f9d84828501613f67565b91505092915050565b7f4661696c656420746f207365742070726f6669740000000000000000000000005f82015250565b5f613fda601483612fa7565b9150613fe582613fa6565b602082019050919050565b5f6020820190508181035f83015261400781613fce565b905091905056fea2646970667358221220df481e02c23b0642c9e2a47f796dff838d2780038f6ef7845e705f12e1b8977964736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061023e575f3560e01c80638119c0651161012d578063cb9a1065116100aa578063dd62ed3e1161006e578063dd62ed3e14610829578063e168f99d14610865578063e1d0bd291461088d578063e217b5a3146108b7578063fa461e33146108df57610245565b8063cb9a106514610765578063cd8992881461078f578063d0e30db0146107cb578063d453bf52146107d5578063d8b0d849146107ff57610245565b806395d89b41116100f157806395d89b411461068f578063a5bc6d6f146106b9578063a9059cbb146106e3578063b760faf91461071f578063b8a8471e1461073b57610245565b80638119c065146105bd578063823e7651146105e75780638b30c7c8146106115780638cdfe1661461063b5780638da5cb5b1461066557610245565b8063313ce567116101bb578063508662a01161017f578063508662a0146104b95780636605bfda146104f557806370a082311461051d57806374b4b17e146105595780637dc4b9cc1461059557610245565b8063313ce56714610409578063392fc668146104335780633ac11da01461045b5780633ae2f354146104655780633fc8cef31461048f57610245565b806318160ddd1161020257806318160ddd1461032b5780631cfd460c14610355578063205c28781461037d57806323b872dd146103a55780632e1a7d4d146103e157610245565b806306fdde0314610249578063095ea7b3146102735780630cadd9a4146102af57806316486416146102d95780631724ecee1461030157610245565b3661024557005b5f80fd5b348015610254575f80fd5b5061025d610907565b60405161026a919061300d565b60405180910390f35b34801561027e575f80fd5b50610299600480360381019061029491906130c2565b610993565b6040516102a6919061311a565b60405180910390f35b3480156102ba575f80fd5b506102c3610a80565b6040516102d09190613142565b60405180910390f35b3480156102e4575f80fd5b506102ff60048036038101906102fa919061315b565b610bd6565b005b34801561030c575f80fd5b50610315610ca8565b60405161032291906131e1565b60405180910390f35b348015610336575f80fd5b5061033f610ccd565b60405161034c9190613142565b60405180910390f35b348015610360575f80fd5b5061037b600480360381019061037691906131fa565b610e04565b005b348015610388575f80fd5b506103a3600480360381019061039e91906130c2565b610ff6565b005b3480156103b0575f80fd5b506103cb60048036038101906103c69190613225565b611086565b6040516103d8919061311a565b60405180910390f35b3480156103ec575f80fd5b50610407600480360381019061040291906131fa565b6111e6565b005b348015610414575f80fd5b5061041d611275565b60405161042a9190613290565b60405180910390f35b34801561043e575f80fd5b50610459600480360381019061045491906130c2565b611287565b005b610463611318565b005b348015610470575f80fd5b50610479611597565b6040516104869190613142565b60405180910390f35b34801561049a575f80fd5b506104a361159d565b6040516104b091906132c9565b60405180910390f35b3480156104c4575f80fd5b506104df60048036038101906104da919061315b565b6115c0565b6040516104ec919061311a565b60405180910390f35b348015610500575f80fd5b5061051b6004803603810190610516919061315b565b611662565b005b348015610528575f80fd5b50610543600480360381019061053e919061315b565b611734565b6040516105509190613142565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a919061315b565b6119ce565b60405161058c9190613142565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b6919061315b565b611bda565b005b3480156105c8575f80fd5b506105d1611cac565b6040516105de9190613302565b60405180910390f35b3480156105f2575f80fd5b506105fb611cd1565b604051610608919061333b565b60405180910390f35b34801561061c575f80fd5b50610625611cf6565b6040516106329190613374565b60405180910390f35b348015610646575f80fd5b5061064f611d1b565b60405161065c9190613142565b60405180910390f35b348015610670575f80fd5b50610679611dfb565b604051610686919061339c565b60405180910390f35b34801561069a575f80fd5b506106a3611e20565b6040516106b0919061300d565b60405180910390f35b3480156106c4575f80fd5b506106cd611eac565b6040516106da9190613142565b60405180910390f35b3480156106ee575f80fd5b50610709600480360381019061070491906130c2565b611eb2565b604051610716919061311a565b60405180910390f35b6107396004803603810190610734919061315b565b611ec8565b005b348015610746575f80fd5b5061074f611f99565b60405161075c9190613142565b60405180910390f35b348015610770575f80fd5b50610779611f9f565b60405161078691906133d5565b60405180910390f35b34801561079a575f80fd5b506107b560048036038101906107b0919061315b565b611fc4565b6040516107c29190613142565b60405180910390f35b6107d3611fd9565b005b3480156107e0575f80fd5b506107e96120a9565b6040516107f69190613142565b60405180910390f35b34801561080a575f80fd5b506108136120af565b6040516108209190613142565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906133ee565b6120b5565b60405161085c9190613142565b60405180910390f35b348015610870575f80fd5b5061088b600480360381019061088691906131fa565b6120d5565b005b348015610898575f80fd5b506108a1612165565b6040516108ae9190613142565b60405180910390f35b3480156108c2575f80fd5b506108dd60048036038101906108d891906131fa565b61216b565b005b3480156108ea575f80fd5b50610905600480360381019061090091906134c0565b612204565b005b600c80546109149061355e565b80601f01602080910402602001604051908101604052809291908181526020018280546109409061355e565b801561098b5780601f106109625761010080835404028352916020019161098b565b820191905f5260205f20905b81548152906001019060200180831161096e57829003601f168201915b505050505081565b5f81600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a6e9190613142565b60405180910390a36001905092915050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610adb919061339c565b602060405180830381865afa158015610af6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1a91906135a2565b60115410610b2a575f9050610bd3565b60115460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b87919061339c565b602060405180830381865afa158015610ba2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc691906135a2565b610bd091906135fa565b90505b90565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613677565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d65919061339c565b602060405180830381865afa158015610d80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da491906135a2565b6040518263ffffffff1660e01b8152600401610dc09190613142565b602060405180830381865afa158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff91906135a2565b905090565b60135f9054906101000a900460ff1615610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a906136df565b60405180910390fd5b600160135f6101000a81548160ff021916908315150217905550610e9860065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261258f565b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401610ef59291906136fd565b6020604051808303815f875af1158015610f11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f35919061374e565b610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b906137c3565b60405180910390fd5b8060095f828254610f8591906137e1565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fff8488d11ac2308131a8d9936ff5d9df537241466d5b70a4d0637191ca0aca5482604051610fd29190613142565b60405180910390a25f60135f6101000a81548160ff02191690831515021790555050565b60135f9054906101000a900460ff1615611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055506110698282612857565b5f60135f6101000a81548160ff0219169083151502179055505050565b5f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115611142576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111399061385e565b60405180910390fd5b81600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546111c991906135fa565b925050819055506111db8484846129e8565b600190509392505050565b60135f9054906101000a900460ff1615611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055506112593382612857565b5f60135f6101000a81548160ff02191690831515021790555050565b600e5f9054906101000a900460ff1681565b60135f9054906101000a900460ff16156112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055506112fa828261258f565b505f60135f6101000a81548160ff0219169083151502179055505050565b5f341161135a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611351906138c6565b60405180910390fd5b3460105f82825461136b91906137e1565b925050819055505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663adc9740c343060016040518463ffffffff1660e01b81526004016113d19291906138e4565b604080518083038185885af11580156113ec573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611411919061390b565b509050600954670de0b6b3a764000060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6e6f592846040518263ffffffff1660e01b815260040161147a9190613142565b602060405180830381865afa158015611495573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b991906135a2565b6114c39190613949565b6114cd91906139b7565b60125f8282546114dd91906137e1565b9250508190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6e6f592826040518263ffffffff1660e01b815260040161153e9190613142565b602060405180830381865afa158015611559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157d91906135a2565b60115f82825461158d91906137e1565b9250508190555050565b600f5481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790613a31565b60405180910390fd5b61165982612bb1565b60019050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e890613677565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f90505f80600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461187657600854600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a611804610a80565b6040518263ffffffff1660e01b81526004016118209190613142565b602060405180830381865afa15801561183b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185f91906135a2565b6118699190613949565b61187391906139b7565b91505b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016118d1919061339c565b602060405180830381865afa1580156118ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191091906135a2565b146119b95760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a61195b866119ce565b6040518263ffffffff1660e01b81526004016119779190613142565b602060405180830381865afa158015611992573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b691906135a2565b90505b81816119c591906137e1565b92505050919050565b5f8060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401611a2a919061339c565b602060405180830381865afa158015611a45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6991906135a2565b03611a76575f9050611bd5565b670de0b6b3a764000060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e991a2d7846040518263ffffffff1660e01b8152600401611ad9919061339c565b602060405180830381865afa158015611af4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1891906135a2565b601254611b2591906135fa565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401611b7f919061339c565b602060405180830381865afa158015611b9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbe91906135a2565b611bc89190613949565b611bd291906139b7565b90505b919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6090613677565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8060085403611d3557670de0b6b3a76400009050611df8565b600854670de0b6b3a764000060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a611d86610a80565b6040518263ffffffff1660e01b8152600401611da29190613142565b602060405180830381865afa158015611dbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de191906135a2565b611deb9190613949565b611df591906139b7565b90505b90565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d8054611e2d9061355e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e599061355e565b8015611ea45780601f10611e7b57610100808354040283529160200191611ea4565b820191905f5260205f20905b815481529060010190602001808311611e8757829003601f168201915b505050505081565b60105481565b5f611ebe3384846129e8565b6001905092915050565b60135f9054906101000a900460ff1615611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055505f3411611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a90613a99565b60405180910390fd5b611f7d8134612dc7565b5f60135f6101000a81548160ff02191690831515021790555050565b60095481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915090505481565b60135f9054906101000a900460ff1615612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f906136df565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055505f3411612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b90613a99565b60405180910390fd5b61208e3334612dc7565b5f60135f6101000a81548160ff021916908315150217905550565b60125481565b60115481565b600b602052815f5260405f20602052805f5260405f205f91509150505481565b60135f9054906101000a900460ff1615612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b906136df565b60405180910390fd5b600160135f6101000a81548160ff021916908315150217905550612148338261258f565b505f60135f6101000a81548160ff02191690831515021790555050565b60085481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f190613677565b60405180910390fd5b80600f8190555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a90613b01565b60405180910390fd5b5f82828101906122a39190613b5a565b90505f8513156124855760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518363ffffffff1660e01b815260040161232a9291906136fd565b6020604051808303815f875af1158015612346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236a919061374e565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a090613bcf565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856123ee90613bed565b6040518263ffffffff1660e01b815260040161240a9190613142565b5f604051808303815f87803b158015612421575f80fd5b505af1158015612433573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff166108fc8561245b90613bed565b90811502906040515f60405180830381858888f19350505050158015612483573d5f803e3d5ffd5b505b5f841315612588575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b81526004016125089291906136fd565b6020604051808303815f875af1158015612524573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612548919061374e565b612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e90613bcf565b60405180910390fd5b5b5050505050565b5f8161259a33611734565b10156125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290613c7d565b60405180910390fd5b5f6125e533611734565b90506125f033612bb1565b5f8184600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461263b9190613949565b61264591906139b7565b905080600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461269391906135fa565b925050819055508060085f8282546126ab91906135fa565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8660405161270f9190613142565b60405180910390a360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba08765260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6e6f592876040518263ffffffff1660e01b81526004016127ae9190613142565b602060405180830381865afa1580156127c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ed91906135a2565b87306040518463ffffffff1660e01b815260040161280d93929190613c9b565b6020604051808303815f875af1158015612829573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284d91906135a2565b9250505092915050565b5f612862308361258f565b90505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156128cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f39190613d91565b50505050505090505f61271061270f8361290d9190613e2e565b6129179190613e6f565b90505f8560405160200161292b919061339c565b604051602081830303815290604052905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663128acb083060018786866040518663ffffffff1660e01b815260040161299f959493929190613f0f565b6020604051808303815f875af11580156129bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129df9190613f7b565b50505050505050565b806129f284611734565b1015612a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2a90613c7d565b60405180910390fd5b5f612a3d33611734565b9050612a4833612bb1565b5f8183600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a939190613949565b612a9d91906139b7565b905080600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612aeb91906135fa565b9250508190555080600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b3e91906137e1565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612ba29190613142565b60405180910390a35050505050565b5f612bbb826119ce565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f140209e836012546040518363ffffffff1660e01b8152600401612c1b9291906136fd565b6020604051808303815f875af1158015612c37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c5b919061374e565b612c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9190613ff0565b60405180910390fd5b5f811115612dc3575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307a2d13a836040518263ffffffff1660e01b8152600401612cfd9190613142565b602060405180830381865afa158015612d18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3c91906135a2565b90508160115f828254612d4f91906135fa565b9250508190555080600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612da291906137e1565b925050819055508060085f828254612dba91906137e1565b92505081905550505b5050565b5f670de0b6b3a7640000600f5483612ddf9190613949565b612de991906139b7565b90505f612df4611d1b565b90505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663adc9740c853060016040518463ffffffff1660e01b8152600401612e559291906138e4565b604080518083038185885af1158015612e70573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612e95919061390b565b5090505f82670de0b6b3a76400008584612eaf91906135fa565b612eb99190613949565b612ec391906139b7565b905080600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f1191906137e1565b925050819055508060085f828254612f2991906137e1565b925050819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6287604051612f8d9190613142565b60405180910390a3505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612fdf82612f9d565b612fe98185612fa7565b9350612ff9818560208601612fb7565b61300281612fc5565b840191505092915050565b5f6020820190508181035f8301526130258184612fd5565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61305e82613035565b9050919050565b61306e81613054565b8114613078575f80fd5b50565b5f8135905061308981613065565b92915050565b5f819050919050565b6130a18161308f565b81146130ab575f80fd5b50565b5f813590506130bc81613098565b92915050565b5f80604083850312156130d8576130d761302d565b5b5f6130e58582860161307b565b92505060206130f6858286016130ae565b9150509250929050565b5f8115159050919050565b61311481613100565b82525050565b5f60208201905061312d5f83018461310b565b92915050565b61313c8161308f565b82525050565b5f6020820190506131555f830184613133565b92915050565b5f602082840312156131705761316f61302d565b5b5f61317d8482850161307b565b91505092915050565b5f819050919050565b5f6131a96131a461319f84613035565b613186565b613035565b9050919050565b5f6131ba8261318f565b9050919050565b5f6131cb826131b0565b9050919050565b6131db816131c1565b82525050565b5f6020820190506131f45f8301846131d2565b92915050565b5f6020828403121561320f5761320e61302d565b5b5f61321c848285016130ae565b91505092915050565b5f805f6060848603121561323c5761323b61302d565b5b5f6132498682870161307b565b935050602061325a8682870161307b565b925050604061326b868287016130ae565b9150509250925092565b5f60ff82169050919050565b61328a81613275565b82525050565b5f6020820190506132a35f830184613281565b92915050565b5f6132b3826131b0565b9050919050565b6132c3816132a9565b82525050565b5f6020820190506132dc5f8301846132ba565b92915050565b5f6132ec826131b0565b9050919050565b6132fc816132e2565b82525050565b5f6020820190506133155f8301846132f3565b92915050565b5f613325826131b0565b9050919050565b6133358161331b565b82525050565b5f60208201905061334e5f83018461332c565b92915050565b5f61335e826131b0565b9050919050565b61336e81613354565b82525050565b5f6020820190506133875f830184613365565b92915050565b61339681613054565b82525050565b5f6020820190506133af5f83018461338d565b92915050565b5f6133bf826131b0565b9050919050565b6133cf816133b5565b82525050565b5f6020820190506133e85f8301846133c6565b92915050565b5f80604083850312156134045761340361302d565b5b5f6134118582860161307b565b92505060206134228582860161307b565b9150509250929050565b5f819050919050565b61343e8161342c565b8114613448575f80fd5b50565b5f8135905061345981613435565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126134805761347f61345f565b5b8235905067ffffffffffffffff81111561349d5761349c613463565b5b6020830191508360018202830111156134b9576134b8613467565b5b9250929050565b5f805f80606085870312156134d8576134d761302d565b5b5f6134e58782880161344b565b94505060206134f68782880161344b565b935050604085013567ffffffffffffffff81111561351757613516613031565b5b6135238782880161346b565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061357557607f821691505b60208210810361358857613587613531565b5b50919050565b5f8151905061359c81613098565b92915050565b5f602082840312156135b7576135b661302d565b5b5f6135c48482850161358e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136048261308f565b915061360f8361308f565b9250828203905081811115613627576136266135cd565b5b92915050565b7f4e6f7420746865206f776e6572000000000000000000000000000000000000005f82015250565b5f613661600d83612fa7565b915061366c8261362d565b602082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f5265656e7472616e742063616c6c2064657465637465640000000000000000005f82015250565b5f6136c9601783612fa7565b91506136d482613695565b602082019050919050565b5f6020820190508181035f8301526136f6816136bd565b9050919050565b5f6040820190506137105f83018561338d565b61371d6020830184613133565b9392505050565b61372d81613100565b8114613737575f80fd5b50565b5f8151905061374881613724565b92915050565b5f602082840312156137635761376261302d565b5b5f6137708482850161373a565b91505092915050565b7f4661696c656420746f206d696e740000000000000000000000000000000000005f82015250565b5f6137ad600e83612fa7565b91506137b882613779565b602082019050919050565b5f6020820190508181035f8301526137da816137a1565b9050919050565b5f6137eb8261308f565b91506137f68361308f565b925082820190508082111561380e5761380d6135cd565b5b92915050565b7f416c6c6f77616e636520657863656564656400000000000000000000000000005f82015250565b5f613848601283612fa7565b915061385382613814565b602082019050919050565b5f6020820190508181035f8301526138758161383c565b9050919050565b7f4d7573742073656e6420455448000000000000000000000000000000000000005f82015250565b5f6138b0600d83612fa7565b91506138bb8261387c565b602082019050919050565b5f6020820190508181035f8301526138dd816138a4565b9050919050565b5f6040820190506138f75f83018561338d565b613904602083018461310b565b9392505050565b5f80604083850312156139215761392061302d565b5b5f61392e8582860161358e565b925050602061393f8582860161358e565b9150509250929050565b5f6139538261308f565b915061395e8361308f565b925082820261396c8161308f565b91508282048414831517613983576139826135cd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139c18261308f565b91506139cc8361308f565b9250826139dc576139db61398a565b5b828204905092915050565b7f4e6f74207361637269666963656420746f6b656e0000000000000000000000005f82015250565b5f613a1b601483612fa7565b9150613a26826139e7565b602082019050919050565b5f6020820190508181035f830152613a4881613a0f565b9050919050565b7f4d7573742073656e642045544820746f206465706f73697400000000000000005f82015250565b5f613a83601883612fa7565b9150613a8e82613a4f565b602082019050919050565b5f6020820190508181035f830152613ab081613a77565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613aeb600c83612fa7565b9150613af682613ab7565b602082019050919050565b5f6020820190508181035f830152613b1881613adf565b9050919050565b5f613b2982613035565b9050919050565b613b3981613b1f565b8114613b43575f80fd5b50565b5f81359050613b5481613b30565b92915050565b5f60208284031215613b6f57613b6e61302d565b5b5f613b7c84828501613b46565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f613bb9600f83612fa7565b9150613bc482613b85565b602082019050919050565b5f6020820190508181035f830152613be681613bad565b9050919050565b5f613bf78261342c565b91507f80000000000000000000000000000000000000000000000000000000000000008203613c2957613c286135cd565b5b815f039050919050565b7f4e6f7420656e6f7567682062616c616e636500000000000000000000000000005f82015250565b5f613c67601283612fa7565b9150613c7282613c33565b602082019050919050565b5f6020820190508181035f830152613c9481613c5b565b9050919050565b5f606082019050613cae5f830186613133565b613cbb602083018561338d565b613cc8604083018461338d565b949350505050565b613cd981613035565b8114613ce3575f80fd5b50565b5f81519050613cf481613cd0565b92915050565b5f8160020b9050919050565b613d0f81613cfa565b8114613d19575f80fd5b50565b5f81519050613d2a81613d06565b92915050565b5f61ffff82169050919050565b613d4681613d30565b8114613d50575f80fd5b50565b5f81519050613d6181613d3d565b92915050565b613d7081613275565b8114613d7a575f80fd5b50565b5f81519050613d8b81613d67565b92915050565b5f805f805f805f60e0888a031215613dac57613dab61302d565b5b5f613db98a828b01613ce6565b9750506020613dca8a828b01613d1c565b9650506040613ddb8a828b01613d53565b9550506060613dec8a828b01613d53565b9450506080613dfd8a828b01613d53565b93505060a0613e0e8a828b01613d7d565b92505060c0613e1f8a828b0161373a565b91505092959891949750929550565b5f613e3882613035565b9150613e4383613035565b9250828202613e5181613035565b91508282048414831517613e6857613e676135cd565b5b5092915050565b5f613e7982613035565b9150613e8483613035565b925082613e9457613e9361398a565b5b828204905092915050565b613ea88161342c565b82525050565b613eb781613035565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f613ee182613ebd565b613eeb8185613ec7565b9350613efb818560208601612fb7565b613f0481612fc5565b840191505092915050565b5f60a082019050613f225f83018861338d565b613f2f602083018761310b565b613f3c6040830186613e9f565b613f496060830185613eae565b8181036080830152613f5b8184613ed7565b90509695505050505050565b5f81519050613f7581613435565b92915050565b5f60208284031215613f9057613f8f61302d565b5b5f613f9d84828501613f67565b91505092915050565b7f4661696c656420746f207365742070726f6669740000000000000000000000005f82015250565b5f613fda601483612fa7565b9150613fe582613fa6565b602082019050919050565b5f6020820190508181035f83015261400781613fce565b905091905056fea2646970667358221220df481e02c23b0642c9e2a47f796dff838d2780038f6ef7845e705f12e1b8977964736f6c634300081a0033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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