ETH Price: $3,355.70 (+0.93%)

Contract

0x3cce423604205e53b148A87254038C55756b8838
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

Transaction Hash
Method
Block
From
To
Claim Amount212387152024-11-21 21:12:2337 hrs ago1732223543IN
0x3cce4236...5756b8838
0 ETH0.0017363416.07725512
Claim Amount212172942024-11-18 21:28:474 days ago1731965327IN
0x3cce4236...5756b8838
0 ETH0.0020124818.63409865
Claim Amount211181222024-11-05 1:18:5918 days ago1730769539IN
0x3cce4236...5756b8838
0 ETH0.000405743.7569326
Claim Amount210657132024-10-28 17:46:4725 days ago1730137607IN
0x3cce4236...5756b8838
0 ETH0.0017389716.10159095
Claim Amount206128842024-08-26 12:52:1188 days ago1724676731IN
0x3cce4236...5756b8838
0 ETH0.000311312.88253618
Claim Amount204969662024-08-10 8:17:59105 days ago1723277879IN
0x3cce4236...5756b8838
0 ETH0.000126271.16919799
Claim Amount204824142024-08-08 7:36:47107 days ago1723102607IN
0x3cce4236...5756b8838
0 ETH0.000204291.8916103
Claim Amount204761412024-08-07 10:36:59108 days ago1723027019IN
0x3cce4236...5756b8838
0 ETH0.00028432.63247916
Buy With Eth204534652024-08-04 6:42:23111 days ago1722753743IN
0x3cce4236...5756b8838
0.001 ETH0.00006311
Claim Amount204507112024-08-03 21:29:35111 days ago1722720575IN
0x3cce4236...5756b8838
0 ETH0.000195291.8083153
Claim Amount204184432024-07-30 9:20:59116 days ago1722331259IN
0x3cce4236...5756b8838
0 ETH0.000432094.00087467
Claim Amount203438932024-07-19 23:33:59126 days ago1721432039IN
0x3cce4236...5756b8838
0 ETH0.000401823.7206183
Claim Amount203355362024-07-18 19:36:23127 days ago1721331383IN
0x3cce4236...5756b8838
0 ETH0.0011588310.72992228
Claim Amount203290512024-07-17 21:51:47128 days ago1721253107IN
0x3cce4236...5756b8838
0 ETH0.000480784.45171352
Claim Amount203213752024-07-16 20:10:47129 days ago1721160647IN
0x3cce4236...5756b8838
0 ETH0.0017182215.90949259
Claim Amount203174882024-07-16 7:09:59130 days ago1721113799IN
0x3cce4236...5756b8838
0 ETH0.000923278.54884475
Claim Amount202510212024-07-07 0:21:35139 days ago1720311695IN
0x3cce4236...5756b8838
0 ETH0.000203431.88367433
Claim Amount202044662024-06-30 12:21:11145 days ago1719750071IN
0x3cce4236...5756b8838
0 ETH0.000363293.36384624
Claim Amount202017082024-06-30 3:06:47146 days ago1719716807IN
0x3cce4236...5756b8838
0 ETH0.00023042.13336276
Claim Amount202015102024-06-30 2:26:47146 days ago1719714407IN
0x3cce4236...5756b8838
0 ETH0.000181111.6769997
Claim Amount201994372024-06-29 19:29:47146 days ago1719689387IN
0x3cce4236...5756b8838
0 ETH0.000157831.46143136
Claim Amount201715662024-06-25 22:05:11150 days ago1719353111IN
0x3cce4236...5756b8838
0 ETH0.000394653.65421029
Claim Amount201610842024-06-24 10:55:59151 days ago1719226559IN
0x3cce4236...5756b8838
0 ETH0.00050554.68058073
Claim Amount201419652024-06-21 18:44:35154 days ago1718995475IN
0x3cce4236...5756b8838
0 ETH0.000444774.11824194
Claim Amount201351082024-06-20 19:45:35155 days ago1718912735IN
0x3cce4236...5756b8838
0 ETH0.000657236.08554645
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
189747392024-01-10 6:24:23318 days ago1704867863
0x3cce4236...5756b8838
0.0000461 ETH
189747052024-01-10 6:17:35318 days ago1704867455
0x3cce4236...5756b8838
0.00002305 ETH
189746962024-01-10 6:15:47318 days ago1704867347
0x3cce4236...5756b8838
0.00115255 ETH
189746932024-01-10 6:15:11318 days ago1704867311
0x3cce4236...5756b8838
0.00023057 ETH
189734702024-01-10 2:08:11318 days ago1704852491
0x3cce4236...5756b8838
0.006 ETH
189731052024-01-10 0:53:47318 days ago1704848027
0x3cce4236...5756b8838
0.29 ETH
189730872024-01-10 0:50:11318 days ago1704847811
0x3cce4236...5756b8838
0.002 ETH
189730492024-01-10 0:42:35318 days ago1704847355
0x3cce4236...5756b8838
0.0195 ETH
189729692024-01-10 0:26:23318 days ago1704846383
0x3cce4236...5756b8838
0.013 ETH
189729412024-01-10 0:20:47318 days ago1704846047
0x3cce4236...5756b8838
0.013 ETH
189728902024-01-10 0:10:35318 days ago1704845435
0x3cce4236...5756b8838
0.19 ETH
189728352024-01-09 23:59:35318 days ago1704844775
0x3cce4236...5756b8838
0.0605 ETH
189728282024-01-09 23:58:11318 days ago1704844691
0x3cce4236...5756b8838
0.24 ETH
189727982024-01-09 23:52:11318 days ago1704844331
0x3cce4236...5756b8838
0.20037118 ETH
189727632024-01-09 23:45:11318 days ago1704843911
0x3cce4236...5756b8838
0.0087 ETH
189726822024-01-09 23:28:59318 days ago1704842939
0x3cce4236...5756b8838
0.0153225 ETH
189726682024-01-09 23:26:11318 days ago1704842771
0x3cce4236...5756b8838
0.04 ETH
189726502024-01-09 23:22:35318 days ago1704842555
0x3cce4236...5756b8838
0.042 ETH
189726502024-01-09 23:22:35318 days ago1704842555
0x3cce4236...5756b8838
0.09089 ETH
189726412024-01-09 23:20:47318 days ago1704842447
0x3cce4236...5756b8838
0.005 ETH
189726312024-01-09 23:18:35318 days ago1704842315
0x3cce4236...5756b8838
0.01 ETH
189726222024-01-09 23:16:47318 days ago1704842207
0x3cce4236...5756b8838
0.004 ETH
189726162024-01-09 23:15:35318 days ago1704842135
0x3cce4236...5756b8838
0.005 ETH
189726072024-01-09 23:13:47318 days ago1704842027
0x3cce4236...5756b8838
0.05 ETH
189726032024-01-09 23:12:59318 days ago1704841979
0x3cce4236...5756b8838
0.048 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BtcInuSale

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-25
*/

/**
 *Submitted for verification at Etherscan.io on 2023-11-24
*/

/**
 *Submitted for verification at Etherscan.io on 2023-11-24
*/
pragma solidity ^0.8.10;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = _NOT_ENTERED;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                0,
                "Address: low-level call failed"
            );
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data
    ) internal view returns (bytes memory) {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(
        bytes memory returndata,
        string memory errorMessage
    ) private pure {
        if (returndata.length > 0) {
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

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

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

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

//SPDX-License-Identifier: MIT

interface Aggregator {
    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}

contract BtcInuSale is ReentrancyGuard, Ownable {
    IERC20Metadata public USDT;
    Aggregator internal aggregatorInterface;
    uint256 public presaleId;
    uint256 public USDT_MULTIPLIER;
    uint256 public ETH_MULTIPLIER;
    address public fundReceiver;
    address public btcInu;

    struct Presale {
        uint256 startTime;
        uint256 endTime;
        uint256 price;
        uint256 soldTokens;
        uint256 tokensToSell;
        uint256 UsdtHardcap;
        uint256 amountRaised;
        bool Active;
    }

    struct ClaimData {
        uint256 claimAt;
        uint256 totalAmount;
        uint256 claimedAmount;
    }

    mapping(uint256 => bool) public paused;
    mapping(uint256 => Presale) public presale;
    mapping(address =>  ClaimData) public userClaimData;

    event PresaleCreated(
        uint256 indexed _id,
        uint256 _totalTokens,
        uint256 _startTime,
        uint256 _endTime
    );

    event PresaleUpdated(
        bytes32 indexed key,
        uint256 prevValue,
        uint256 newValue,
        uint256 timestamp
    );

    event TokensBought(
        address indexed user,
        uint256 indexed id,
        address indexed purchaseToken,
        uint256 tokensBought,
        uint256 amountPaid,
        uint256 timestamp
    );

    event TokensClaimed(
        address indexed user,
        uint256 amount,
        uint256 timestamp
    );

    event PresaleTokenAddressUpdated(
        address indexed prevValue,
        address indexed newValue,
        uint256 timestamp
    );

    event PresalePaused(uint256 indexed id, uint256 timestamp);
    event PresaleUnpaused(uint256 indexed id, uint256 timestamp);

    constructor(address _oracle, address _usdt, address _btcInu) {
        aggregatorInterface = Aggregator(_oracle);
        btcInu = _btcInu;
        USDT = IERC20Metadata(_usdt);
        ETH_MULTIPLIER = (10 ** 18);
        USDT_MULTIPLIER = (10 ** 6);
        fundReceiver = msg.sender;
    }

    function createPresale(
        uint256 _price,
        uint256 _tokensToSell,
        uint256 _UsdtHardcap,
        uint256 _startTime,
        uint256 _endTime,
        bool _isActive
    ) external onlyOwner {
        require(_price > 0, "Zero price");
        require(_tokensToSell > 0, "Zero tokens to sell");
        require(presale[presaleId].Active == false, "Inactive the previous presale");

        presaleId++;

        presale[presaleId] = Presale(
            _startTime,
            _endTime,
            _price,
            0,
            _tokensToSell,
            _UsdtHardcap,
            0,
            _isActive
        );

        emit PresaleCreated(presaleId, _tokensToSell, 0, 0);
    }

    function endPresale() public onlyOwner {
        require(presale[presaleId].Active, "This presale is already Inactive");
        presale[presaleId].Active = false;
    }

    function updatePresale(
        uint256 _id,
        uint256 _startTime,
        uint256 _endTime,
        uint256 _price,
        uint256 _tokensToSell,
        uint256 _Hardcap
    ) external checkPresaleId(_id) onlyOwner {
        require(_price > 0, "Zero price");
        require(_tokensToSell > 0, "Zero tokens to sell");
        presale[_id].startTime =_startTime;
        presale[_id].price = _price;
        presale[_id].endTime = _endTime;
        presale[_id].tokensToSell = _tokensToSell;
        presale[_id].UsdtHardcap = _Hardcap;
    }

    function changeFundWallet(address _wallet) external onlyOwner {
        require(_wallet != address(0), "Invalid parameters");
        fundReceiver = _wallet;
    }

    function changeUSDTToken(address _newAddress) external onlyOwner {
        require(_newAddress != address(0), "Zero token address");
        USDT = IERC20Metadata(_newAddress);
    }

    function pausePresale(uint256 _id) external checkPresaleId(_id) onlyOwner {
        require(!paused[_id], "Already paused");
        paused[_id] = true;
        emit PresalePaused(_id, block.timestamp);
    }

    function unPausePresale(
        uint256 _id
    ) external checkPresaleId(_id) onlyOwner {
        require(paused[_id], "Not paused");
        paused[_id] = false;
        emit PresaleUnpaused(_id, block.timestamp);
    }

    function getLatestPrice() public view returns (uint256) {
        (, int256 price, , , ) = aggregatorInterface.latestRoundData();
        price = (price * (10 ** 10));
        return uint256(price);
    }

    modifier checkPresaleId(uint256 _id) {
        require(_id > 0 && _id <= presaleId, "Invalid presale id");
        _;
    }

    modifier checkSaleState(uint256 _id, uint256 amount) {
        require(
            block.timestamp >= presale[_id].startTime &&
                presale[_id].Active == true,
            "Invalid time for buying"
        );
        require(
            amount > 0 &&
                amount <= presale[_id].tokensToSell - presale[_id].soldTokens,
            "Invalid sale amount"
        );
        _;
    }

    function buyWithUSDT(
        uint256 usdAmount
    )
        external
        checkPresaleId(presaleId)
        checkSaleState(presaleId, usdtToTokens(presaleId, usdAmount))
        nonReentrant
        returns (bool)
    {
        require(block.timestamp <= presale[presaleId].endTime,"presale Time is over");
        require(!paused[presaleId], "Presale paused");
        require(
            presale[presaleId].amountRaised + usdAmount <=
                presale[presaleId].UsdtHardcap,
            "Amount should be less than leftHardcap"
        );
        uint256 numberOfTokens = usdtToTokens(presaleId, usdAmount);
        require(
            presale[presaleId].soldTokens + numberOfTokens <=
                presale[presaleId].tokensToSell
        );
        presale[presaleId].soldTokens += numberOfTokens;
        presale[presaleId].amountRaised += usdAmount;
        if (userClaimData[_msgSender()].totalAmount > 0) {
            userClaimData[_msgSender()]
                .totalAmount += numberOfTokens;
        } else {
            userClaimData[_msgSender()] = ClaimData(
                0,
                numberOfTokens,
                0
            );
        }

        uint256 ourAllowance = USDT.allowance(
            _msgSender(),
            address(this)
        );
        require(usdAmount <= ourAllowance, "Make sure to add enough allowance");
        (bool success, ) = address(USDT).call(
            abi.encodeWithSignature(
                "transferFrom(address,address,uint256)",
                _msgSender(),
                fundReceiver,
                usdAmount
            )
        );
        require(success, "Token payment failed");
        emit TokensBought(
            _msgSender(),
            presaleId,
            address(USDT),
            numberOfTokens,
            usdAmount,
            block.timestamp
        );
        return true;
    }

    function buyWithEth()
        external
        payable
        checkPresaleId(presaleId)
        checkSaleState(presaleId, ethToTokens(presaleId, msg.value))
        nonReentrant
        returns (bool)
    {
        uint256 usdAmount = (msg.value * getLatestPrice() * USDT_MULTIPLIER) /
            (ETH_MULTIPLIER * ETH_MULTIPLIER);
        require(
            presale[presaleId].amountRaised + usdAmount <=
                presale[presaleId].UsdtHardcap,
            "Amount should be less than leftHardcap"
        );
        require(block.timestamp <= presale[presaleId].endTime,"presale Time is over");
        require(!paused[presaleId], "Presale paused");

        uint256 numberOfTokens = usdtToTokens(presaleId, usdAmount);
         require(
            presale[presaleId].soldTokens + numberOfTokens <=
                presale[presaleId].tokensToSell
        );
        presale[presaleId].soldTokens += numberOfTokens;
        presale[presaleId].amountRaised += usdAmount;

        if (userClaimData[_msgSender()].totalAmount > 0) {
            userClaimData[_msgSender()].totalAmount += numberOfTokens;
        } else {
            userClaimData[_msgSender()]= ClaimData(
                0, // Last claimed at
                numberOfTokens, // total tokens to be claimed
                0 // claimed amount
            );
        }

        sendValue(payable(fundReceiver), msg.value);
        emit TokensBought(
            _msgSender(),
            presaleId,
            address(0),
            numberOfTokens,
            msg.value,
            block.timestamp
        );
        return true;
    }

    function ethBuyHelper(
        uint256 _id,
        uint256 amount
    ) external view checkPresaleId(_id) returns (uint256 ethAmount) {
        uint256 usdPrice = (amount * presale[_id].price);
        ethAmount =
            (usdPrice * ETH_MULTIPLIER) /
            (getLatestPrice() * 10 ** IERC20Metadata(btcInu).decimals());
    }

    function usdtBuyHelper(
        uint256 _id,
        uint256 amount
    ) external view returns (uint256 usdPrice) {
        usdPrice =
            (amount * presale[_id].price) /
            10 ** IERC20Metadata(btcInu).decimals();
    }

    function ethToTokens(
        uint256 _id,
        uint256 amount
    ) public view returns (uint256 _tokens) {
        uint256 usdAmount = (amount * getLatestPrice() * USDT_MULTIPLIER) /
            (ETH_MULTIPLIER * ETH_MULTIPLIER);
        _tokens = usdtToTokens(_id, usdAmount);
    }

    function usdtToTokens(
        uint256 _id,
        uint256 amount
    ) public view returns (uint256 _tokens) {
        _tokens = (amount * presale[_id].price) / USDT_MULTIPLIER;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Low balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "ETH Payment failed");
    }

    function claimableAmount(
        address user
    ) public view  returns (uint256) {
        ClaimData memory _user = userClaimData[user];

        require(_user.totalAmount > 0, "Nothing to claim");
        uint256 amount = _user.totalAmount - _user.claimedAmount;
        require(amount > 0, "Already claimed");
        return amount;
    }

    function claimAmount(
    ) public  returns (bool) {
        uint256 amount = claimableAmount(msg.sender);

        require(amount > 0, "Zero claim amount");
        require(btcInu != address(0), "Presale token address not set");
        require(
            amount <= IERC20(btcInu).balanceOf(address(this)),
            "Not enough tokens in the contract"
        );

        userClaimData[msg.sender].claimAt = block.timestamp;

        userClaimData[msg.sender].claimedAmount += amount;

        bool status = IERC20(btcInu).transfer(msg.sender, amount);
        require(status, "Token transfer failed");
        emit TokensClaimed(msg.sender, amount, block.timestamp);

        return true;
    }

    function WithdrawTokens(address _token, uint256 amount) external onlyOwner {
        IERC20(_token).transfer(fundReceiver, amount);
    }

    function WithdrawContractFunds(uint256 amount) external onlyOwner {
        sendValue(payable(fundReceiver), amount);
    }

    function ChangeTokenToSell(address _token) public onlyOwner {
        btcInu = _token;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"address","name":"_usdt","type":"address"},{"internalType":"address","name":"_btcInu","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_endTime","type":"uint256"}],"name":"PresaleCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"PresalePaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"prevValue","type":"address"},{"indexed":true,"internalType":"address","name":"newValue","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"PresaleTokenAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"PresaleUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"prevValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"PresaleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"purchaseToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensBought","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPaid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TokensBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"ChangeTokenToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ETH_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20Metadata","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawContractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"btcInu","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyWithEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usdAmount","type":"uint256"}],"name":"buyWithUSDT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"changeFundWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeUSDTToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_tokensToSell","type":"uint256"},{"internalType":"uint256","name":"_UsdtHardcap","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_endTime","type":"uint256"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"createPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ethBuyHelper","outputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ethToTokens","outputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"pausePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"presale","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"soldTokens","type":"uint256"},{"internalType":"uint256","name":"tokensToSell","type":"uint256"},{"internalType":"uint256","name":"UsdtHardcap","type":"uint256"},{"internalType":"uint256","name":"amountRaised","type":"uint256"},{"internalType":"bool","name":"Active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unPausePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_endTime","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_tokensToSell","type":"uint256"},{"internalType":"uint256","name":"_Hardcap","type":"uint256"}],"name":"updatePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"usdtBuyHelper","outputs":[{"internalType":"uint256","name":"usdPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"usdtToTokens","outputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userClaimData","outputs":[{"internalType":"uint256","name":"claimAt","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"claimedAmount","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162004599380380620045998339818101604052810190620000379190620002bd565b60016000819055506200005f620000536200018560201b60201c565b6200018d60201b60201c565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a7640000600681905550620f424060058190555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000319565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002858262000258565b9050919050565b620002978162000278565b8114620002a357600080fd5b50565b600081519050620002b7816200028c565b92915050565b600080600060608486031215620002d957620002d862000253565b5b6000620002e986828701620002a6565b9350506020620002fc86828701620002a6565b92505060406200030f86828701620002a6565b9150509250925092565b61427080620003296000396000f3fe6080604052600436106101d75760003560e01c80638988504911610102578063d01608c111610095578063f2fde38b11610064578063f2fde38b146106a5578063f309fed9146106ce578063fb4aa0a11461070b578063fe9f676e14610736576101d7565b8063d01608c1146105e4578063dc716f001461060d578063e18e84f914610636578063e6ab143414610661576101d7565b8063a7c60160116100d1578063a7c6016014610528578063b2da1ad514610565578063c54e44eb1461058e578063cec419aa146105b9576101d7565b8063898850491461047e5780638da5cb5b146104bb5780638e15f473146104e6578063a43be57b14610511576101d7565b8063582b57231161017a578063718a196211610149578063718a1962146103ae578063727f0342146103eb578063830953ab1461042a5780638561c31514610455576101d7565b8063582b57231461031c578063680f2e4f146103455780636fb4adff1461036e578063715018a614610397576101d7565b80632127fe04116101b65780632127fe0414610260578063397643631461029d57806348bf4fcf146102c85780634a6413f7146102f3576101d7565b8062dde10e146101dc5780630ec809a81461021957806311b5444f14610242575b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612abb565b610773565b6040516102109190612b03565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612b7c565b610793565b005b61024a6107df565b6040516102579190612b03565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612ba9565b610d7e565b6040516102949190612bf8565b60405180910390f35b3480156102a957600080fd5b506102b2610ec9565b6040516102bf9190612bf8565b60405180910390f35b3480156102d457600080fd5b506102dd610ecf565b6040516102ea9190612bf8565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190612abb565b610ed5565b005b34801561032857600080fd5b50610343600480360381019061033e9190612abb565b610ff8565b005b34801561035157600080fd5b5061036c60048036038101906103679190612c13565b61102f565b005b34801561037a57600080fd5b5061039560048036038101906103909190612b7c565b6110dc565b005b3480156103a357600080fd5b506103ac611197565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612ba9565b6111ab565b6040516103e29190612bf8565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190612b7c565b6111fd565b60405161042193929190612c53565b60405180910390f35b34801561043657600080fd5b5061043f611227565b60405161044c9190612b03565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190612b7c565b6115c4565b005b34801561048a57600080fd5b506104a560048036038101906104a09190612b7c565b61167f565b6040516104b29190612bf8565b60405180910390f35b3480156104c757600080fd5b506104d0611798565b6040516104dd9190612c99565b60405180910390f35b3480156104f257600080fd5b506104fb6117c2565b6040516105089190612bf8565b60405180910390f35b34801561051d57600080fd5b50610526611876565b005b34801561053457600080fd5b5061054f600480360381019061054a9190612abb565b611916565b60405161055c9190612b03565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190612ce0565b6120e4565b005b34801561059a57600080fd5b506105a36122f9565b6040516105b09190612dcc565b60405180910390f35b3480156105c557600080fd5b506105ce61231f565b6040516105db9190612c99565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190612abb565b612345565b005b34801561061957600080fd5b50610634600480360381019061062f9190612de7565b612467565b005b34801561064257600080fd5b5061064b6125d7565b6040516106589190612bf8565b60405180910390f35b34801561066d57600080fd5b5061068860048036038101906106839190612abb565b6125dd565b60405161069c989796959493929190612e74565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c79190612b7c565b612632565b005b3480156106da57600080fd5b506106f560048036038101906106f09190612ba9565b6126b5565b6040516107029190612bf8565b60405180910390f35b34801561071757600080fd5b506107206126ee565b60405161072d9190612c99565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190612ba9565b612714565b60405161076a9190612bf8565b60405180910390f35b60096020528060005260406000206000915054906101000a900460ff1681565b61079b6127e7565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006004546000811180156107f657506004548111155b610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c90612f4f565b60405180910390fd5b600454610844600454346111ab565b600a6000838152602001908152602001600020600001544210158015610891575060011515600a600084815260200190815260200160002060070160009054906101000a900460ff161515145b6108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790612fbb565b60405180910390fd5b6000811180156109175750600a600083815260200190815260200160002060030154600a600084815260200190815260200160002060040154610913919061300a565b8111155b610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d9061308a565b60405180910390fd5b61095e612865565b600060065460065461097091906130aa565b60055461097b6117c2565b3461098691906130aa565b61099091906130aa565b61099a919061311b565b9050600a600060045481526020019081526020016000206005015481600a60006004548152602001908152602001600020600601546109d9919061314c565b1115610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a11906131f2565b60405180910390fd5b600a6000600454815260200190815260200160002060010154421115610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c9061325e565b60405180910390fd5b60096000600454815260200190815260200160002060009054906101000a900460ff1615610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf906132ca565b60405180910390fd5b6000610ae6600454836126b5565b9050600a600060045481526020019081526020016000206004015481600a6000600454815260200190815260200160002060030154610b25919061314c565b1115610b3057600080fd5b80600a600060045481526020019081526020016000206003016000828254610b58919061314c565b9250508190555081600a600060045481526020019081526020016000206006016000828254610b87919061314c565b925050819055506000600b6000610b9c6128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101541115610c455780600b6000610bed6128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254610c39919061314c565b92505081905550610cca565b6040518060600160405280600081526020018281526020016000815250600b6000610c6e6128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050505b610cf6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16346128bc565b600073ffffffffffffffffffffffffffffffffffffffff16600454610d196128b4565b73ffffffffffffffffffffffffffffffffffffffff167f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d36843442604051610d6293929190612c53565b60405180910390a4600195505050610d786129b0565b50505090565b600082600081118015610d9357506004548111155b610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990612f4f565b60405180910390fd5b6000600a60008681526020019081526020016000206002015484610df691906130aa565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e899190613323565b600a610e959190613483565b610e9d6117c2565b610ea791906130aa565b60065482610eb591906130aa565b610ebf919061311b565b9250505092915050565b60065481565b60055481565b80600081118015610ee857506004548111155b610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e90612f4f565b60405180910390fd5b610f2f6127e7565b6009600083815260200190815260200160002060009054906101000a900460ff1615610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f879061351a565b60405180910390fd5b60016009600084815260200190815260200160002060006101000a81548160ff021916908315150217905550817f927e6cd2dce24f32508868820cdc35f09d9de0f4b44e945114110125196fba9f42604051610fec9190612bf8565b60405180910390a25050565b6110006127e7565b61102c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826128bc565b50565b6110376127e7565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161109492919061353a565b6020604051808303816000875af11580156110b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d79190613578565b505050565b6110e46127e7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a906135f1565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61119f6127e7565b6111a960006129ba565b565b6000806006546006546111be91906130aa565b6005546111c96117c2565b856111d491906130aa565b6111de91906130aa565b6111e8919061311b565b90506111f484826126b5565b91505092915050565b600b6020528060005260406000206000915090508060000154908060010154908060020154905083565b6000806112333361167f565b905060008111611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f9061365d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611309576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611300906136c9565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113649190612c99565b602060405180830381865afa158015611381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a591906136fe565b8111156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de9061379d565b60405180910390fd5b42600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254611480919061314c565b925050819055506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016114e692919061353a565b6020604051808303816000875af1158015611505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115299190613578565b90508061156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613809565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f9923b4306c6c030f2bdfbf156517d5983b87e15b96176da122cd4f2effa4ba7b83426040516115b3929190613829565b60405180910390a260019250505090565b6115cc6127e7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361163b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116329061389e565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090506000816020015111611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a9061390a565b60405180910390fd5b600081604001518260200151611749919061300a565b90506000811161178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590613976565b60405180910390fd5b8092505050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118569190613a0e565b5050509150506402540be4008161186d9190613a89565b90508091505090565b61187e6127e7565b600a6000600454815260200190815260200160002060070160009054906101000a900460ff166118e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118da90613b4d565b60405180910390fd5b6000600a6000600454815260200190815260200160002060070160006101000a81548160ff021916908315150217905550565b600060045460008111801561192d57506004548111155b61196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390612f4f565b60405180910390fd5b60045461197b600454856126b5565b600a60008381526020019081526020016000206000015442101580156119c8575060011515600a600084815260200190815260200160002060070160009054906101000a900460ff161515145b611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90612fbb565b60405180910390fd5b600081118015611a4e5750600a600083815260200190815260200160002060030154600a600084815260200190815260200160002060040154611a4a919061300a565b8111155b611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a849061308a565b60405180910390fd5b611a95612865565b600a6000600454815260200190815260200160002060010154421115611af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae79061325e565b60405180910390fd5b60096000600454815260200190815260200160002060009054906101000a900460ff1615611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a906132ca565b60405180910390fd5b600a600060045481526020019081526020016000206005015485600a6000600454815260200190815260200160002060060154611b90919061314c565b1115611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc8906131f2565b60405180910390fd5b6000611bdf600454876126b5565b9050600a600060045481526020019081526020016000206004015481600a6000600454815260200190815260200160002060030154611c1e919061314c565b1115611c2957600080fd5b80600a600060045481526020019081526020016000206003016000828254611c51919061314c565b9250508190555085600a600060045481526020019081526020016000206006016000828254611c80919061314c565b925050819055506000600b6000611c956128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101541115611d3e5780600b6000611ce66128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611d32919061314c565b92505081905550611dc3565b6040518060600160405280600081526020018281526020016000815250600b6000611d676128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050505b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e611e0b6128b4565b306040518363ffffffff1660e01b8152600401611e29929190613b6d565b602060405180830381865afa158015611e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6a91906136fe565b905080871115611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690613c08565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ef26128b4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a604051602401611f2893929190613c28565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611fb29190613cd0565b6000604051808303816000865af19150503d8060008114611fef576040519150601f19603f3d011682016040523d82523d6000602084013e611ff4565b606091505b5050905080612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90613d33565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045461207c6128b4565b73ffffffffffffffffffffffffffffffffffffffff167f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d36868c426040516120c593929190612c53565b60405180910390a4600196505050506120dc6129b0565b505050919050565b6120ec6127e7565b6000861161212f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212690613d9f565b60405180910390fd5b60008511612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990613e0b565b60405180910390fd5b60001515600a6000600454815260200190815260200160002060070160009054906101000a900460ff161515146121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d590613e77565b60405180910390fd5b600460008154809291906121f190613e97565b91905055506040518061010001604052808481526020018381526020018781526020016000815260200186815260200185815260200160008152602001821515815250600a60006004548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff0219169083151502179055509050506004547f6a00651728a92841411081673eaa4eddbed06d102a590e050c22def40d4dd0b8866000806040516122e993929190613f1a565b60405180910390a2505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8060008111801561235857506004548111155b612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e90612f4f565b60405180910390fd5b61239f6127e7565b6009600083815260200190815260200160002060009054906101000a900460ff166123ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f690613f9d565b60405180910390fd5b60006009600084815260200190815260200160002060006101000a81548160ff021916908315150217905550817ff608654a6d8e1785594639dd55babb61d7ae157382015f904a24224e50333b1d4260405161245b9190612bf8565b60405180910390a25050565b8560008111801561247a57506004548111155b6124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b090612f4f565b60405180910390fd5b6124c16127e7565b60008411612504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fb90613d9f565b60405180910390fd5b60008311612547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253e90613e0b565b60405180910390fd5b85600a60008981526020019081526020016000206000018190555083600a60008981526020019081526020016000206002018190555084600a60008981526020019081526020016000206001018190555082600a60008981526020019081526020016000206004018190555081600a60008981526020019081526020016000206005018190555050505050505050565b60045481565b600a6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900460ff16905088565b61263a6127e7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a09061402f565b60405180910390fd5b6126b2816129ba565b50565b6000600554600a600085815260200190815260200160002060020154836126dc91906130aa565b6126e6919061311b565b905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a79190613323565b600a6127b39190613483565b600a600085815260200190815260200160002060020154836127d591906130aa565b6127df919061311b565b905092915050565b6127ef6128b4565b73ffffffffffffffffffffffffffffffffffffffff1661280d611798565b73ffffffffffffffffffffffffffffffffffffffff1614612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a9061409b565b60405180910390fd5b565b6002600054036128aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a190614107565b60405180910390fd5b6002600081905550565b600033905090565b804710156128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f690614173565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612925906141b9565b60006040518083038185875af1925050503d8060008114612962576040519150601f19603f3d011682016040523d82523d6000602084013e612967565b606091505b50509050806129ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a29061421a565b60405180910390fd5b505050565b6001600081905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b6000819050919050565b612a9881612a85565b8114612aa357600080fd5b50565b600081359050612ab581612a8f565b92915050565b600060208284031215612ad157612ad0612a80565b5b6000612adf84828501612aa6565b91505092915050565b60008115159050919050565b612afd81612ae8565b82525050565b6000602082019050612b186000830184612af4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b4982612b1e565b9050919050565b612b5981612b3e565b8114612b6457600080fd5b50565b600081359050612b7681612b50565b92915050565b600060208284031215612b9257612b91612a80565b5b6000612ba084828501612b67565b91505092915050565b60008060408385031215612bc057612bbf612a80565b5b6000612bce85828601612aa6565b9250506020612bdf85828601612aa6565b9150509250929050565b612bf281612a85565b82525050565b6000602082019050612c0d6000830184612be9565b92915050565b60008060408385031215612c2a57612c29612a80565b5b6000612c3885828601612b67565b9250506020612c4985828601612aa6565b9150509250929050565b6000606082019050612c686000830186612be9565b612c756020830185612be9565b612c826040830184612be9565b949350505050565b612c9381612b3e565b82525050565b6000602082019050612cae6000830184612c8a565b92915050565b612cbd81612ae8565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b60008060008060008060c08789031215612cfd57612cfc612a80565b5b6000612d0b89828a01612aa6565b9650506020612d1c89828a01612aa6565b9550506040612d2d89828a01612aa6565b9450506060612d3e89828a01612aa6565b9350506080612d4f89828a01612aa6565b92505060a0612d6089828a01612ccb565b9150509295509295509295565b6000819050919050565b6000612d92612d8d612d8884612b1e565b612d6d565b612b1e565b9050919050565b6000612da482612d77565b9050919050565b6000612db682612d99565b9050919050565b612dc681612dab565b82525050565b6000602082019050612de16000830184612dbd565b92915050565b60008060008060008060c08789031215612e0457612e03612a80565b5b6000612e1289828a01612aa6565b9650506020612e2389828a01612aa6565b9550506040612e3489828a01612aa6565b9450506060612e4589828a01612aa6565b9350506080612e5689828a01612aa6565b92505060a0612e6789828a01612aa6565b9150509295509295509295565b600061010082019050612e8a600083018b612be9565b612e97602083018a612be9565b612ea46040830189612be9565b612eb16060830188612be9565b612ebe6080830187612be9565b612ecb60a0830186612be9565b612ed860c0830185612be9565b612ee560e0830184612af4565b9998505050505050505050565b600082825260208201905092915050565b7f496e76616c69642070726573616c652069640000000000000000000000000000600082015250565b6000612f39601283612ef2565b9150612f4482612f03565b602082019050919050565b60006020820190508181036000830152612f6881612f2c565b9050919050565b7f496e76616c69642074696d6520666f7220627579696e67000000000000000000600082015250565b6000612fa5601783612ef2565b9150612fb082612f6f565b602082019050919050565b60006020820190508181036000830152612fd481612f98565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061301582612a85565b915061302083612a85565b925082820390508181111561303857613037612fdb565b5b92915050565b7f496e76616c69642073616c6520616d6f756e7400000000000000000000000000600082015250565b6000613074601383612ef2565b915061307f8261303e565b602082019050919050565b600060208201905081810360008301526130a381613067565b9050919050565b60006130b582612a85565b91506130c083612a85565b92508282026130ce81612a85565b915082820484148315176130e5576130e4612fdb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312682612a85565b915061313183612a85565b925082613141576131406130ec565b5b828204905092915050565b600061315782612a85565b915061316283612a85565b925082820190508082111561317a57613179612fdb565b5b92915050565b7f416d6f756e742073686f756c64206265206c657373207468616e206c6566744860008201527f6172646361700000000000000000000000000000000000000000000000000000602082015250565b60006131dc602683612ef2565b91506131e782613180565b604082019050919050565b6000602082019050818103600083015261320b816131cf565b9050919050565b7f70726573616c652054696d65206973206f766572000000000000000000000000600082015250565b6000613248601483612ef2565b915061325382613212565b602082019050919050565b600060208201905081810360008301526132778161323b565b9050919050565b7f50726573616c6520706175736564000000000000000000000000000000000000600082015250565b60006132b4600e83612ef2565b91506132bf8261327e565b602082019050919050565b600060208201905081810360008301526132e3816132a7565b9050919050565b600060ff82169050919050565b613300816132ea565b811461330b57600080fd5b50565b60008151905061331d816132f7565b92915050565b60006020828403121561333957613338612a80565b5b60006133478482850161330e565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156133a75780860481111561338357613382612fdb565b5b60018516156133925780820291505b80810290506133a085613350565b9450613367565b94509492505050565b6000826133c0576001905061347c565b816133ce576000905061347c565b81600181146133e457600281146133ee5761341d565b600191505061347c565b60ff841115613400576133ff612fdb565b5b8360020a91508482111561341757613416612fdb565b5b5061347c565b5060208310610133831016604e8410600b84101617156134525782820a90508381111561344d5761344c612fdb565b5b61347c565b61345f848484600161335d565b9250905081840481111561347657613475612fdb565b5b81810290505b9392505050565b600061348e82612a85565b9150613499836132ea565b92506134c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133b0565b905092915050565b7f416c726561647920706175736564000000000000000000000000000000000000600082015250565b6000613504600e83612ef2565b915061350f826134ce565b602082019050919050565b60006020820190508181036000830152613533816134f7565b9050919050565b600060408201905061354f6000830185612c8a565b61355c6020830184612be9565b9392505050565b60008151905061357281612cb4565b92915050565b60006020828403121561358e5761358d612a80565b5b600061359c84828501613563565b91505092915050565b7f496e76616c696420706172616d65746572730000000000000000000000000000600082015250565b60006135db601283612ef2565b91506135e6826135a5565b602082019050919050565b6000602082019050818103600083015261360a816135ce565b9050919050565b7f5a65726f20636c61696d20616d6f756e74000000000000000000000000000000600082015250565b6000613647601183612ef2565b915061365282613611565b602082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f50726573616c6520746f6b656e2061646472657373206e6f7420736574000000600082015250565b60006136b3601d83612ef2565b91506136be8261367d565b602082019050919050565b600060208201905081810360008301526136e2816136a6565b9050919050565b6000815190506136f881612a8f565b92915050565b60006020828403121561371457613713612a80565b5b6000613722848285016136e9565b91505092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e7472616360008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613787602183612ef2565b91506137928261372b565b604082019050919050565b600060208201905081810360008301526137b68161377a565b9050919050565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b60006137f3601583612ef2565b91506137fe826137bd565b602082019050919050565b60006020820190508181036000830152613822816137e6565b9050919050565b600060408201905061383e6000830185612be9565b61384b6020830184612be9565b9392505050565b7f5a65726f20746f6b656e20616464726573730000000000000000000000000000600082015250565b6000613888601283612ef2565b915061389382613852565b602082019050919050565b600060208201905081810360008301526138b78161387b565b9050919050565b7f4e6f7468696e6720746f20636c61696d00000000000000000000000000000000600082015250565b60006138f4601083612ef2565b91506138ff826138be565b602082019050919050565b60006020820190508181036000830152613923816138e7565b9050919050565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b6000613960600f83612ef2565b915061396b8261392a565b602082019050919050565b6000602082019050818103600083015261398f81613953565b9050919050565b600069ffffffffffffffffffff82169050919050565b6139b581613996565b81146139c057600080fd5b50565b6000815190506139d2816139ac565b92915050565b6000819050919050565b6139eb816139d8565b81146139f657600080fd5b50565b600081519050613a08816139e2565b92915050565b600080600080600060a08688031215613a2a57613a29612a80565b5b6000613a38888289016139c3565b9550506020613a49888289016139f9565b9450506040613a5a888289016136e9565b9350506060613a6b888289016136e9565b9250506080613a7c888289016139c3565b9150509295509295909350565b6000613a94826139d8565b9150613a9f836139d8565b9250828202613aad816139d8565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615613ae557613ae4612fdb565b5b8282058414831517613afa57613af9612fdb565b5b5092915050565b7f546869732070726573616c6520697320616c726561647920496e616374697665600082015250565b6000613b37602083612ef2565b9150613b4282613b01565b602082019050919050565b60006020820190508181036000830152613b6681613b2a565b9050919050565b6000604082019050613b826000830185612c8a565b613b8f6020830184612c8a565b9392505050565b7f4d616b65207375726520746f2061646420656e6f75676820616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf2602183612ef2565b9150613bfd82613b96565b604082019050919050565b60006020820190508181036000830152613c2181613be5565b9050919050565b6000606082019050613c3d6000830186612c8a565b613c4a6020830185612c8a565b613c576040830184612be9565b949350505050565b600081519050919050565b600081905092915050565b60005b83811015613c93578082015181840152602081019050613c78565b60008484015250505050565b6000613caa82613c5f565b613cb48185613c6a565b9350613cc4818560208601613c75565b80840191505092915050565b6000613cdc8284613c9f565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000613d1d601483612ef2565b9150613d2882613ce7565b602082019050919050565b60006020820190508181036000830152613d4c81613d10565b9050919050565b7f5a65726f20707269636500000000000000000000000000000000000000000000600082015250565b6000613d89600a83612ef2565b9150613d9482613d53565b602082019050919050565b60006020820190508181036000830152613db881613d7c565b9050919050565b7f5a65726f20746f6b656e7320746f2073656c6c00000000000000000000000000600082015250565b6000613df5601383612ef2565b9150613e0082613dbf565b602082019050919050565b60006020820190508181036000830152613e2481613de8565b9050919050565b7f496e616374697665207468652070726576696f75732070726573616c65000000600082015250565b6000613e61601d83612ef2565b9150613e6c82613e2b565b602082019050919050565b60006020820190508181036000830152613e9081613e54565b9050919050565b6000613ea282612a85565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ed457613ed3612fdb565b5b600182019050919050565b6000819050919050565b6000613f04613eff613efa84613edf565b612d6d565b612a85565b9050919050565b613f1481613ee9565b82525050565b6000606082019050613f2f6000830186612be9565b613f3c6020830185613f0b565b613f496040830184613f0b565b949350505050565b7f4e6f742070617573656400000000000000000000000000000000000000000000600082015250565b6000613f87600a83612ef2565b9150613f9282613f51565b602082019050919050565b60006020820190508181036000830152613fb681613f7a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614019602683612ef2565b915061402482613fbd565b604082019050919050565b600060208201905081810360008301526140488161400c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614085602083612ef2565b91506140908261404f565b602082019050919050565b600060208201905081810360008301526140b481614078565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006140f1601f83612ef2565b91506140fc826140bb565b602082019050919050565b60006020820190508181036000830152614120816140e4565b9050919050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b600061415d600b83612ef2565b915061416882614127565b602082019050919050565b6000602082019050818103600083015261418c81614150565b9050919050565b50565b60006141a3600083613c6a565b91506141ae82614193565b600082019050919050565b60006141c482614196565b9150819050919050565b7f455448205061796d656e74206661696c65640000000000000000000000000000600082015250565b6000614204601283612ef2565b915061420f826141ce565b602082019050919050565b60006020820190508181036000830152614233816141f7565b905091905056fea2646970667358221220efc3cc7fe2b48d06320f76ab149f55a02effdb7d2435b96846b37a6b637956da64736f6c634300081200330000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000584a4dd38d28fd1ea0e147ba7b70aed29a37e335

Deployed Bytecode

0x6080604052600436106101d75760003560e01c80638988504911610102578063d01608c111610095578063f2fde38b11610064578063f2fde38b146106a5578063f309fed9146106ce578063fb4aa0a11461070b578063fe9f676e14610736576101d7565b8063d01608c1146105e4578063dc716f001461060d578063e18e84f914610636578063e6ab143414610661576101d7565b8063a7c60160116100d1578063a7c6016014610528578063b2da1ad514610565578063c54e44eb1461058e578063cec419aa146105b9576101d7565b8063898850491461047e5780638da5cb5b146104bb5780638e15f473146104e6578063a43be57b14610511576101d7565b8063582b57231161017a578063718a196211610149578063718a1962146103ae578063727f0342146103eb578063830953ab1461042a5780638561c31514610455576101d7565b8063582b57231461031c578063680f2e4f146103455780636fb4adff1461036e578063715018a614610397576101d7565b80632127fe04116101b65780632127fe0414610260578063397643631461029d57806348bf4fcf146102c85780634a6413f7146102f3576101d7565b8062dde10e146101dc5780630ec809a81461021957806311b5444f14610242575b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612abb565b610773565b6040516102109190612b03565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612b7c565b610793565b005b61024a6107df565b6040516102579190612b03565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612ba9565b610d7e565b6040516102949190612bf8565b60405180910390f35b3480156102a957600080fd5b506102b2610ec9565b6040516102bf9190612bf8565b60405180910390f35b3480156102d457600080fd5b506102dd610ecf565b6040516102ea9190612bf8565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190612abb565b610ed5565b005b34801561032857600080fd5b50610343600480360381019061033e9190612abb565b610ff8565b005b34801561035157600080fd5b5061036c60048036038101906103679190612c13565b61102f565b005b34801561037a57600080fd5b5061039560048036038101906103909190612b7c565b6110dc565b005b3480156103a357600080fd5b506103ac611197565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612ba9565b6111ab565b6040516103e29190612bf8565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190612b7c565b6111fd565b60405161042193929190612c53565b60405180910390f35b34801561043657600080fd5b5061043f611227565b60405161044c9190612b03565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190612b7c565b6115c4565b005b34801561048a57600080fd5b506104a560048036038101906104a09190612b7c565b61167f565b6040516104b29190612bf8565b60405180910390f35b3480156104c757600080fd5b506104d0611798565b6040516104dd9190612c99565b60405180910390f35b3480156104f257600080fd5b506104fb6117c2565b6040516105089190612bf8565b60405180910390f35b34801561051d57600080fd5b50610526611876565b005b34801561053457600080fd5b5061054f600480360381019061054a9190612abb565b611916565b60405161055c9190612b03565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190612ce0565b6120e4565b005b34801561059a57600080fd5b506105a36122f9565b6040516105b09190612dcc565b60405180910390f35b3480156105c557600080fd5b506105ce61231f565b6040516105db9190612c99565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190612abb565b612345565b005b34801561061957600080fd5b50610634600480360381019061062f9190612de7565b612467565b005b34801561064257600080fd5b5061064b6125d7565b6040516106589190612bf8565b60405180910390f35b34801561066d57600080fd5b5061068860048036038101906106839190612abb565b6125dd565b60405161069c989796959493929190612e74565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c79190612b7c565b612632565b005b3480156106da57600080fd5b506106f560048036038101906106f09190612ba9565b6126b5565b6040516107029190612bf8565b60405180910390f35b34801561071757600080fd5b506107206126ee565b60405161072d9190612c99565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190612ba9565b612714565b60405161076a9190612bf8565b60405180910390f35b60096020528060005260406000206000915054906101000a900460ff1681565b61079b6127e7565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006004546000811180156107f657506004548111155b610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c90612f4f565b60405180910390fd5b600454610844600454346111ab565b600a6000838152602001908152602001600020600001544210158015610891575060011515600a600084815260200190815260200160002060070160009054906101000a900460ff161515145b6108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790612fbb565b60405180910390fd5b6000811180156109175750600a600083815260200190815260200160002060030154600a600084815260200190815260200160002060040154610913919061300a565b8111155b610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d9061308a565b60405180910390fd5b61095e612865565b600060065460065461097091906130aa565b60055461097b6117c2565b3461098691906130aa565b61099091906130aa565b61099a919061311b565b9050600a600060045481526020019081526020016000206005015481600a60006004548152602001908152602001600020600601546109d9919061314c565b1115610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a11906131f2565b60405180910390fd5b600a6000600454815260200190815260200160002060010154421115610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c9061325e565b60405180910390fd5b60096000600454815260200190815260200160002060009054906101000a900460ff1615610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf906132ca565b60405180910390fd5b6000610ae6600454836126b5565b9050600a600060045481526020019081526020016000206004015481600a6000600454815260200190815260200160002060030154610b25919061314c565b1115610b3057600080fd5b80600a600060045481526020019081526020016000206003016000828254610b58919061314c565b9250508190555081600a600060045481526020019081526020016000206006016000828254610b87919061314c565b925050819055506000600b6000610b9c6128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101541115610c455780600b6000610bed6128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254610c39919061314c565b92505081905550610cca565b6040518060600160405280600081526020018281526020016000815250600b6000610c6e6128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050505b610cf6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16346128bc565b600073ffffffffffffffffffffffffffffffffffffffff16600454610d196128b4565b73ffffffffffffffffffffffffffffffffffffffff167f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d36843442604051610d6293929190612c53565b60405180910390a4600195505050610d786129b0565b50505090565b600082600081118015610d9357506004548111155b610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990612f4f565b60405180910390fd5b6000600a60008681526020019081526020016000206002015484610df691906130aa565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e899190613323565b600a610e959190613483565b610e9d6117c2565b610ea791906130aa565b60065482610eb591906130aa565b610ebf919061311b565b9250505092915050565b60065481565b60055481565b80600081118015610ee857506004548111155b610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e90612f4f565b60405180910390fd5b610f2f6127e7565b6009600083815260200190815260200160002060009054906101000a900460ff1615610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f879061351a565b60405180910390fd5b60016009600084815260200190815260200160002060006101000a81548160ff021916908315150217905550817f927e6cd2dce24f32508868820cdc35f09d9de0f4b44e945114110125196fba9f42604051610fec9190612bf8565b60405180910390a25050565b6110006127e7565b61102c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826128bc565b50565b6110376127e7565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161109492919061353a565b6020604051808303816000875af11580156110b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d79190613578565b505050565b6110e46127e7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a906135f1565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61119f6127e7565b6111a960006129ba565b565b6000806006546006546111be91906130aa565b6005546111c96117c2565b856111d491906130aa565b6111de91906130aa565b6111e8919061311b565b90506111f484826126b5565b91505092915050565b600b6020528060005260406000206000915090508060000154908060010154908060020154905083565b6000806112333361167f565b905060008111611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f9061365d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611309576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611300906136c9565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113649190612c99565b602060405180830381865afa158015611381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a591906136fe565b8111156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de9061379d565b60405180910390fd5b42600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254611480919061314c565b925050819055506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016114e692919061353a565b6020604051808303816000875af1158015611505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115299190613578565b90508061156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613809565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f9923b4306c6c030f2bdfbf156517d5983b87e15b96176da122cd4f2effa4ba7b83426040516115b3929190613829565b60405180910390a260019250505090565b6115cc6127e7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361163b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116329061389e565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090506000816020015111611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a9061390a565b60405180910390fd5b600081604001518260200151611749919061300a565b90506000811161178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590613976565b60405180910390fd5b8092505050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118569190613a0e565b5050509150506402540be4008161186d9190613a89565b90508091505090565b61187e6127e7565b600a6000600454815260200190815260200160002060070160009054906101000a900460ff166118e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118da90613b4d565b60405180910390fd5b6000600a6000600454815260200190815260200160002060070160006101000a81548160ff021916908315150217905550565b600060045460008111801561192d57506004548111155b61196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390612f4f565b60405180910390fd5b60045461197b600454856126b5565b600a60008381526020019081526020016000206000015442101580156119c8575060011515600a600084815260200190815260200160002060070160009054906101000a900460ff161515145b611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90612fbb565b60405180910390fd5b600081118015611a4e5750600a600083815260200190815260200160002060030154600a600084815260200190815260200160002060040154611a4a919061300a565b8111155b611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a849061308a565b60405180910390fd5b611a95612865565b600a6000600454815260200190815260200160002060010154421115611af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae79061325e565b60405180910390fd5b60096000600454815260200190815260200160002060009054906101000a900460ff1615611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a906132ca565b60405180910390fd5b600a600060045481526020019081526020016000206005015485600a6000600454815260200190815260200160002060060154611b90919061314c565b1115611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc8906131f2565b60405180910390fd5b6000611bdf600454876126b5565b9050600a600060045481526020019081526020016000206004015481600a6000600454815260200190815260200160002060030154611c1e919061314c565b1115611c2957600080fd5b80600a600060045481526020019081526020016000206003016000828254611c51919061314c565b9250508190555085600a600060045481526020019081526020016000206006016000828254611c80919061314c565b925050819055506000600b6000611c956128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101541115611d3e5780600b6000611ce66128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611d32919061314c565b92505081905550611dc3565b6040518060600160405280600081526020018281526020016000815250600b6000611d676128b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050505b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e611e0b6128b4565b306040518363ffffffff1660e01b8152600401611e29929190613b6d565b602060405180830381865afa158015611e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6a91906136fe565b905080871115611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690613c08565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ef26128b4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a604051602401611f2893929190613c28565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611fb29190613cd0565b6000604051808303816000865af19150503d8060008114611fef576040519150601f19603f3d011682016040523d82523d6000602084013e611ff4565b606091505b5050905080612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90613d33565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045461207c6128b4565b73ffffffffffffffffffffffffffffffffffffffff167f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d36868c426040516120c593929190612c53565b60405180910390a4600196505050506120dc6129b0565b505050919050565b6120ec6127e7565b6000861161212f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212690613d9f565b60405180910390fd5b60008511612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990613e0b565b60405180910390fd5b60001515600a6000600454815260200190815260200160002060070160009054906101000a900460ff161515146121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d590613e77565b60405180910390fd5b600460008154809291906121f190613e97565b91905055506040518061010001604052808481526020018381526020018781526020016000815260200186815260200185815260200160008152602001821515815250600a60006004548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff0219169083151502179055509050506004547f6a00651728a92841411081673eaa4eddbed06d102a590e050c22def40d4dd0b8866000806040516122e993929190613f1a565b60405180910390a2505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8060008111801561235857506004548111155b612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e90612f4f565b60405180910390fd5b61239f6127e7565b6009600083815260200190815260200160002060009054906101000a900460ff166123ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f690613f9d565b60405180910390fd5b60006009600084815260200190815260200160002060006101000a81548160ff021916908315150217905550817ff608654a6d8e1785594639dd55babb61d7ae157382015f904a24224e50333b1d4260405161245b9190612bf8565b60405180910390a25050565b8560008111801561247a57506004548111155b6124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b090612f4f565b60405180910390fd5b6124c16127e7565b60008411612504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fb90613d9f565b60405180910390fd5b60008311612547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253e90613e0b565b60405180910390fd5b85600a60008981526020019081526020016000206000018190555083600a60008981526020019081526020016000206002018190555084600a60008981526020019081526020016000206001018190555082600a60008981526020019081526020016000206004018190555081600a60008981526020019081526020016000206005018190555050505050505050565b60045481565b600a6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900460ff16905088565b61263a6127e7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a09061402f565b60405180910390fd5b6126b2816129ba565b50565b6000600554600a600085815260200190815260200160002060020154836126dc91906130aa565b6126e6919061311b565b905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a79190613323565b600a6127b39190613483565b600a600085815260200190815260200160002060020154836127d591906130aa565b6127df919061311b565b905092915050565b6127ef6128b4565b73ffffffffffffffffffffffffffffffffffffffff1661280d611798565b73ffffffffffffffffffffffffffffffffffffffff1614612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a9061409b565b60405180910390fd5b565b6002600054036128aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a190614107565b60405180910390fd5b6002600081905550565b600033905090565b804710156128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f690614173565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612925906141b9565b60006040518083038185875af1925050503d8060008114612962576040519150601f19603f3d011682016040523d82523d6000602084013e612967565b606091505b50509050806129ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a29061421a565b60405180910390fd5b505050565b6001600081905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b6000819050919050565b612a9881612a85565b8114612aa357600080fd5b50565b600081359050612ab581612a8f565b92915050565b600060208284031215612ad157612ad0612a80565b5b6000612adf84828501612aa6565b91505092915050565b60008115159050919050565b612afd81612ae8565b82525050565b6000602082019050612b186000830184612af4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b4982612b1e565b9050919050565b612b5981612b3e565b8114612b6457600080fd5b50565b600081359050612b7681612b50565b92915050565b600060208284031215612b9257612b91612a80565b5b6000612ba084828501612b67565b91505092915050565b60008060408385031215612bc057612bbf612a80565b5b6000612bce85828601612aa6565b9250506020612bdf85828601612aa6565b9150509250929050565b612bf281612a85565b82525050565b6000602082019050612c0d6000830184612be9565b92915050565b60008060408385031215612c2a57612c29612a80565b5b6000612c3885828601612b67565b9250506020612c4985828601612aa6565b9150509250929050565b6000606082019050612c686000830186612be9565b612c756020830185612be9565b612c826040830184612be9565b949350505050565b612c9381612b3e565b82525050565b6000602082019050612cae6000830184612c8a565b92915050565b612cbd81612ae8565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b60008060008060008060c08789031215612cfd57612cfc612a80565b5b6000612d0b89828a01612aa6565b9650506020612d1c89828a01612aa6565b9550506040612d2d89828a01612aa6565b9450506060612d3e89828a01612aa6565b9350506080612d4f89828a01612aa6565b92505060a0612d6089828a01612ccb565b9150509295509295509295565b6000819050919050565b6000612d92612d8d612d8884612b1e565b612d6d565b612b1e565b9050919050565b6000612da482612d77565b9050919050565b6000612db682612d99565b9050919050565b612dc681612dab565b82525050565b6000602082019050612de16000830184612dbd565b92915050565b60008060008060008060c08789031215612e0457612e03612a80565b5b6000612e1289828a01612aa6565b9650506020612e2389828a01612aa6565b9550506040612e3489828a01612aa6565b9450506060612e4589828a01612aa6565b9350506080612e5689828a01612aa6565b92505060a0612e6789828a01612aa6565b9150509295509295509295565b600061010082019050612e8a600083018b612be9565b612e97602083018a612be9565b612ea46040830189612be9565b612eb16060830188612be9565b612ebe6080830187612be9565b612ecb60a0830186612be9565b612ed860c0830185612be9565b612ee560e0830184612af4565b9998505050505050505050565b600082825260208201905092915050565b7f496e76616c69642070726573616c652069640000000000000000000000000000600082015250565b6000612f39601283612ef2565b9150612f4482612f03565b602082019050919050565b60006020820190508181036000830152612f6881612f2c565b9050919050565b7f496e76616c69642074696d6520666f7220627579696e67000000000000000000600082015250565b6000612fa5601783612ef2565b9150612fb082612f6f565b602082019050919050565b60006020820190508181036000830152612fd481612f98565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061301582612a85565b915061302083612a85565b925082820390508181111561303857613037612fdb565b5b92915050565b7f496e76616c69642073616c6520616d6f756e7400000000000000000000000000600082015250565b6000613074601383612ef2565b915061307f8261303e565b602082019050919050565b600060208201905081810360008301526130a381613067565b9050919050565b60006130b582612a85565b91506130c083612a85565b92508282026130ce81612a85565b915082820484148315176130e5576130e4612fdb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312682612a85565b915061313183612a85565b925082613141576131406130ec565b5b828204905092915050565b600061315782612a85565b915061316283612a85565b925082820190508082111561317a57613179612fdb565b5b92915050565b7f416d6f756e742073686f756c64206265206c657373207468616e206c6566744860008201527f6172646361700000000000000000000000000000000000000000000000000000602082015250565b60006131dc602683612ef2565b91506131e782613180565b604082019050919050565b6000602082019050818103600083015261320b816131cf565b9050919050565b7f70726573616c652054696d65206973206f766572000000000000000000000000600082015250565b6000613248601483612ef2565b915061325382613212565b602082019050919050565b600060208201905081810360008301526132778161323b565b9050919050565b7f50726573616c6520706175736564000000000000000000000000000000000000600082015250565b60006132b4600e83612ef2565b91506132bf8261327e565b602082019050919050565b600060208201905081810360008301526132e3816132a7565b9050919050565b600060ff82169050919050565b613300816132ea565b811461330b57600080fd5b50565b60008151905061331d816132f7565b92915050565b60006020828403121561333957613338612a80565b5b60006133478482850161330e565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156133a75780860481111561338357613382612fdb565b5b60018516156133925780820291505b80810290506133a085613350565b9450613367565b94509492505050565b6000826133c0576001905061347c565b816133ce576000905061347c565b81600181146133e457600281146133ee5761341d565b600191505061347c565b60ff841115613400576133ff612fdb565b5b8360020a91508482111561341757613416612fdb565b5b5061347c565b5060208310610133831016604e8410600b84101617156134525782820a90508381111561344d5761344c612fdb565b5b61347c565b61345f848484600161335d565b9250905081840481111561347657613475612fdb565b5b81810290505b9392505050565b600061348e82612a85565b9150613499836132ea565b92506134c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133b0565b905092915050565b7f416c726561647920706175736564000000000000000000000000000000000000600082015250565b6000613504600e83612ef2565b915061350f826134ce565b602082019050919050565b60006020820190508181036000830152613533816134f7565b9050919050565b600060408201905061354f6000830185612c8a565b61355c6020830184612be9565b9392505050565b60008151905061357281612cb4565b92915050565b60006020828403121561358e5761358d612a80565b5b600061359c84828501613563565b91505092915050565b7f496e76616c696420706172616d65746572730000000000000000000000000000600082015250565b60006135db601283612ef2565b91506135e6826135a5565b602082019050919050565b6000602082019050818103600083015261360a816135ce565b9050919050565b7f5a65726f20636c61696d20616d6f756e74000000000000000000000000000000600082015250565b6000613647601183612ef2565b915061365282613611565b602082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f50726573616c6520746f6b656e2061646472657373206e6f7420736574000000600082015250565b60006136b3601d83612ef2565b91506136be8261367d565b602082019050919050565b600060208201905081810360008301526136e2816136a6565b9050919050565b6000815190506136f881612a8f565b92915050565b60006020828403121561371457613713612a80565b5b6000613722848285016136e9565b91505092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e7472616360008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613787602183612ef2565b91506137928261372b565b604082019050919050565b600060208201905081810360008301526137b68161377a565b9050919050565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b60006137f3601583612ef2565b91506137fe826137bd565b602082019050919050565b60006020820190508181036000830152613822816137e6565b9050919050565b600060408201905061383e6000830185612be9565b61384b6020830184612be9565b9392505050565b7f5a65726f20746f6b656e20616464726573730000000000000000000000000000600082015250565b6000613888601283612ef2565b915061389382613852565b602082019050919050565b600060208201905081810360008301526138b78161387b565b9050919050565b7f4e6f7468696e6720746f20636c61696d00000000000000000000000000000000600082015250565b60006138f4601083612ef2565b91506138ff826138be565b602082019050919050565b60006020820190508181036000830152613923816138e7565b9050919050565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b6000613960600f83612ef2565b915061396b8261392a565b602082019050919050565b6000602082019050818103600083015261398f81613953565b9050919050565b600069ffffffffffffffffffff82169050919050565b6139b581613996565b81146139c057600080fd5b50565b6000815190506139d2816139ac565b92915050565b6000819050919050565b6139eb816139d8565b81146139f657600080fd5b50565b600081519050613a08816139e2565b92915050565b600080600080600060a08688031215613a2a57613a29612a80565b5b6000613a38888289016139c3565b9550506020613a49888289016139f9565b9450506040613a5a888289016136e9565b9350506060613a6b888289016136e9565b9250506080613a7c888289016139c3565b9150509295509295909350565b6000613a94826139d8565b9150613a9f836139d8565b9250828202613aad816139d8565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615613ae557613ae4612fdb565b5b8282058414831517613afa57613af9612fdb565b5b5092915050565b7f546869732070726573616c6520697320616c726561647920496e616374697665600082015250565b6000613b37602083612ef2565b9150613b4282613b01565b602082019050919050565b60006020820190508181036000830152613b6681613b2a565b9050919050565b6000604082019050613b826000830185612c8a565b613b8f6020830184612c8a565b9392505050565b7f4d616b65207375726520746f2061646420656e6f75676820616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf2602183612ef2565b9150613bfd82613b96565b604082019050919050565b60006020820190508181036000830152613c2181613be5565b9050919050565b6000606082019050613c3d6000830186612c8a565b613c4a6020830185612c8a565b613c576040830184612be9565b949350505050565b600081519050919050565b600081905092915050565b60005b83811015613c93578082015181840152602081019050613c78565b60008484015250505050565b6000613caa82613c5f565b613cb48185613c6a565b9350613cc4818560208601613c75565b80840191505092915050565b6000613cdc8284613c9f565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000613d1d601483612ef2565b9150613d2882613ce7565b602082019050919050565b60006020820190508181036000830152613d4c81613d10565b9050919050565b7f5a65726f20707269636500000000000000000000000000000000000000000000600082015250565b6000613d89600a83612ef2565b9150613d9482613d53565b602082019050919050565b60006020820190508181036000830152613db881613d7c565b9050919050565b7f5a65726f20746f6b656e7320746f2073656c6c00000000000000000000000000600082015250565b6000613df5601383612ef2565b9150613e0082613dbf565b602082019050919050565b60006020820190508181036000830152613e2481613de8565b9050919050565b7f496e616374697665207468652070726576696f75732070726573616c65000000600082015250565b6000613e61601d83612ef2565b9150613e6c82613e2b565b602082019050919050565b60006020820190508181036000830152613e9081613e54565b9050919050565b6000613ea282612a85565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ed457613ed3612fdb565b5b600182019050919050565b6000819050919050565b6000613f04613eff613efa84613edf565b612d6d565b612a85565b9050919050565b613f1481613ee9565b82525050565b6000606082019050613f2f6000830186612be9565b613f3c6020830185613f0b565b613f496040830184613f0b565b949350505050565b7f4e6f742070617573656400000000000000000000000000000000000000000000600082015250565b6000613f87600a83612ef2565b9150613f9282613f51565b602082019050919050565b60006020820190508181036000830152613fb681613f7a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614019602683612ef2565b915061402482613fbd565b604082019050919050565b600060208201905081810360008301526140488161400c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614085602083612ef2565b91506140908261404f565b602082019050919050565b600060208201905081810360008301526140b481614078565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006140f1601f83612ef2565b91506140fc826140bb565b602082019050919050565b60006020820190508181036000830152614120816140e4565b9050919050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b600061415d600b83612ef2565b915061416882614127565b602082019050919050565b6000602082019050818103600083015261418c81614150565b9050919050565b50565b60006141a3600083613c6a565b91506141ae82614193565b600082019050919050565b60006141c482614196565b9150819050919050565b7f455448205061796d656e74206661696c65640000000000000000000000000000600082015250565b6000614204601283612ef2565b915061420f826141ce565b602082019050919050565b60006020820190508181036000830152614233816141f7565b905091905056fea2646970667358221220efc3cc7fe2b48d06320f76ab149f55a02effdb7d2435b96846b37a6b637956da64736f6c63430008120033

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

0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000584a4dd38d28fd1ea0e147ba7b70aed29a37e335

-----Decoded View---------------
Arg [0] : _oracle (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [1] : _usdt (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [2] : _btcInu (address): 0x584a4Dd38d28fD1EA0E147bA7B70AEd29A37e335

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [1] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [2] : 000000000000000000000000584a4dd38d28fd1ea0e147ba7b70aed29a37e335


Deployed Bytecode Sourcemap

8202:11626:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8877:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19731:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15322:1661;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16991:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8404:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8367:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12128:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19598:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19451:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11761:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1579:103;;;;;;;;;;;;;:::i;:::-;;17596:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8971:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;18722:721;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11935:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18362:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1344:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12584:208;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11007:172;;;;;;;;;;;;;:::i;:::-;;13360:1954;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10262:737;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8257:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8474:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12348:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11187:566;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8336:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8922:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;1690:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17899:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8440:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17343:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8877:38;;;;;;;;;;;;;;;;;;;;;;:::o;19731:94::-;1303:13;:11;:13::i;:::-;19811:6:::1;19802;;:15;;;;;;;;;;;;;;;;;;19731:94:::0;:::o;15322:1661::-;15524:4;15403:9;;12862:1;12856:3;:7;:27;;;;;12874:9;;12867:3;:16;;12856:27;12848:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15438:9:::1;;15449:33;15461:9;;15472;15449:11;:33::i;:::-;13039:7;:12;13047:3;13039:12;;;;;;;;;;;:22;;;13020:15;:41;;:89;;;;;13105:4;13082:27;;:7;:12;13090:3;13082:12;;;;;;;;;;;:19;;;;;;;;;;;;:27;;;13020:89;12998:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;13202:1;13193:6;:10;:92;;;;;13262:7;:12;13270:3;13262:12;;;;;;;;;;;:23;;;13234:7;:12;13242:3;13234:12;;;;;;;;;;;:25;;;:51;;;;:::i;:::-;13224:6;:61;;13193:92;13171:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;433:21:::2;:19;:21::i;:::-;15546:17:::3;15648:14;;15631;;:31;;;;:::i;:::-;15598:15;;15579:16;:14;:16::i;:::-;15567:9;:28;;;;:::i;:::-;:46;;;;:::i;:::-;15566:97;;;;:::i;:::-;15546:117;;15760:7;:18;15768:9;;15760:18;;;;;;;;;;;:30;;;15730:9;15696:7;:18;15704:9;;15696:18;;;;;;;;;;;:31;;;:43;;;;:::i;:::-;:94;;15674:182;;;;;;;;;;;;:::i;:::-;;;;;;;;;15894:7;:18;15902:9;;15894:18;;;;;;;;;;;:26;;;15875:15;:45;;15867:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15964:6;:17;15971:9;;15964:17;;;;;;;;;;;;;;;;;;;;;15963:18;15955:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;16013:22;16038:34;16051:9;;16062;16038:12;:34::i;:::-;16013:59;;16173:7;:18;16181:9;;16173:18;;;;;;;;;;;:31;;;16138:14;16106:7;:18;16114:9;;16106:18;;;;;;;;;;;:29;;;:46;;;;:::i;:::-;:98;;16084:131;;;::::0;::::3;;16259:14;16226:7;:18;16234:9;;16226:18;;;;;;;;;;;:29;;;:47;;;;;;;:::i;:::-;;;;;;;;16319:9;16284:7;:18;16292:9;;16284:18;;;;;;;;;;;:31;;;:44;;;;;;;:::i;:::-;;;;;;;;16387:1;16345:13;:27;16359:12;:10;:12::i;:::-;16345:27;;;;;;;;;;;;;;;:39;;;:43;16341:359;;;16448:14;16405:13;:27;16419:12;:10;:12::i;:::-;16405:27;;;;;;;;;;;;;;;:39;;;:57;;;;;;;:::i;:::-;;;;;;;;16341:359;;;16524:164;;;;;;;;16552:1;16524:164;;;;16591:14;16524:164;;;;16654:1;16524:164;;::::0;16495:13:::3;:27;16509:12;:10;:12::i;:::-;16495:27;;;;;;;;;;;;;;;:193;;;;;;;;;;;;;;;;;;;;;;;;;;;16341:359;16712:43;16730:12;;;;;;;;;;;16745:9;16712;:43::i;:::-;16857:1;16771:182;;16825:9;;16798:12;:10;:12::i;:::-;16771:182;;;16874:14;16903:9;16927:15;16771:182;;;;;;;;:::i;:::-;;;;;;;;16971:4;16964:11;;;;477:20:::2;:18;:20::i;:::-;12917:1:::1;;15322:1661:::0;;:::o;16991:344::-;17110:17;17096:3;12862:1;12856:3;:7;:27;;;;;12874:9;;12867:3;:16;;12856:27;12848:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17140:16:::1;17169:7;:12;17177:3;17169:12;;;;;;;;;;;:18;;;17160:6;:27;;;;:::i;:::-;17140:48;;17308:6;;;;;;;;;;;17293:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17287:2;:39;;;;:::i;:::-;17268:16;:14;:16::i;:::-;:58;;;;:::i;:::-;17236:14;;17225:8;:25;;;;:::i;:::-;17224:103;;;;:::i;:::-;17199:128;;17129:206;16991:344:::0;;;;;:::o;8404:29::-;;;;:::o;8367:30::-;;;;:::o;12128:212::-;12187:3;12862:1;12856:3;:7;:27;;;;;12874:9;;12867:3;:16;;12856:27;12848:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;1303:13:::1;:11;:13::i;:::-;12222:6:::2;:11;12229:3;12222:11;;;;;;;;;;;;;;;;;;;;;12221:12;12213:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;12277:4;12263:6;:11;12270:3;12263:11;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;12311:3;12297:35;12316:15;12297:35;;;;;;:::i;:::-;;;;;;;;12128:212:::0;;:::o;19598:125::-;1303:13;:11;:13::i;:::-;19675:40:::1;19693:12;;;;;;;;;;;19708:6;19675:9;:40::i;:::-;19598:125:::0;:::o;19451:139::-;1303:13;:11;:13::i;:::-;19544:6:::1;19537:23;;;19561:12;;;;;;;;;;;19575:6;19537:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19451:139:::0;;:::o;11761:166::-;1303:13;:11;:13::i;:::-;11861:1:::1;11842:21;;:7;:21;;::::0;11834:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11912:7;11897:12;;:22;;;;;;;;;;;;;;;;;;11761:166:::0;:::o;1579:103::-;1303:13;:11;:13::i;:::-;1644:30:::1;1671:1;1644:18;:30::i;:::-;1579:103::o:0;17596:295::-;17692:15;17720:17;17819:14;;17802;;:31;;;;:::i;:::-;17769:15;;17750:16;:14;:16::i;:::-;17741:6;:25;;;;:::i;:::-;:43;;;;:::i;:::-;17740:94;;;;:::i;:::-;17720:114;;17855:28;17868:3;17873:9;17855:12;:28::i;:::-;17845:38;;17709:182;17596:295;;;;:::o;8971:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18722:721::-;18768:4;18785:14;18802:27;18818:10;18802:15;:27::i;:::-;18785:44;;18859:1;18850:6;:10;18842:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;18919:1;18901:20;;:6;;;;;;;;;;;:20;;;18893:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19005:6;;;;;;;;;;;18998:24;;;19031:4;18998:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18988:6;:49;;18966:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;19147:15;19111:13;:25;19125:10;19111:25;;;;;;;;;;;;;;;:33;;:51;;;;19218:6;19175:13;:25;19189:10;19175:25;;;;;;;;;;;;;;;:39;;;:49;;;;;;;:::i;:::-;;;;;;;;19237:11;19258:6;;;;;;;;;;;19251:23;;;19275:10;19287:6;19251:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19237:57;;19313:6;19305:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;19375:10;19361:50;;;19387:6;19395:15;19361:50;;;;;;;:::i;:::-;;;;;;;;19431:4;19424:11;;;;18722:721;:::o;11935:185::-;1303:13;:11;:13::i;:::-;12042:1:::1;12019:25;;:11;:25;;::::0;12011:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12100:11;12078:4;;:34;;;;;;;;;;;;;;;;;;11935:185:::0;:::o;18362:352::-;18439:7;18459:22;18484:13;:19;18498:4;18484:19;;;;;;;;;;;;;;;18459:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18544:1;18524:5;:17;;;:21;18516:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;18577:14;18614:5;:19;;;18594:5;:17;;;:39;;;;:::i;:::-;18577:56;;18661:1;18652:6;:10;18644:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18700:6;18693:13;;;;18362:352;;;:::o;1344:87::-;1390:7;1417:6;;;;;;;;;;;1410:13;;1344:87;:::o;12584:208::-;12631:7;12654:12;12676:19;;;;;;;;;;;:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12651:62;;;;;;12742:8;12733:5;:18;;;;:::i;:::-;12724:28;;12778:5;12763:21;;;12584:208;:::o;11007:172::-;1303:13;:11;:13::i;:::-;11065:7:::1;:18;11073:9;;11065:18;;;;;;;;;;;:25;;;;;;;;;;;;11057:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11166:5;11138:7;:18;11146:9;;11138:18;;;;;;;;;;;:25;;;:33;;;;;;;;;;;;;;;;;;11007:172::o:0;13360:1954::-;13580:4;13458:9;;12862:1;12856:3;:7;:27;;;;;12874:9;;12867:3;:16;;12856:27;12848:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13493:9:::1;;13504:34;13517:9;;13528;13504:12;:34::i;:::-;13039:7;:12;13047:3;13039:12;;;;;;;;;;;:22;;;13020:15;:41;;:89;;;;;13105:4;13082:27;;:7;:12;13090:3;13082:12;;;;;;;;;;;:19;;;;;;;;;;;;:27;;;13020:89;12998:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;13202:1;13193:6;:10;:92;;;;;13262:7;:12;13270:3;13262:12;;;;;;;;;;;:23;;;13234:7;:12;13242:3;13234:12;;;;;;;;;;;:25;;;:51;;;;:::i;:::-;13224:6;:61;;13193:92;13171:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;433:21:::2;:19;:21::i;:::-;13629:7:::3;:18;13637:9;;13629:18;;;;;;;;;;;:26;;;13610:15;:45;;13602:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;13699:6;:17;13706:9;;13699:17;;;;;;;;;;;;;;;;;;;;;13698:18;13690:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;13832:7;:18;13840:9;;13832:18;;;;;;;;;;;:30;;;13802:9;13768:7;:18;13776:9;;13768:18;;;;;;;;;;;:31;;;:43;;;;:::i;:::-;:94;;13746:182;;;;;;;;;;;;:::i;:::-;;;;;;;;;13939:22;13964:34;13977:9;;13988;13964:12;:34::i;:::-;13939:59;;14098:7;:18;14106:9;;14098:18;;;;;;;;;;;:31;;;14063:14;14031:7;:18;14039:9;;14031:18;;;;;;;;;;;:29;;;:46;;;;:::i;:::-;:98;;14009:131;;;::::0;::::3;;14184:14;14151:7;:18;14159:9;;14151:18;;;;;;;;;;;:29;;;:47;;;;;;;:::i;:::-;;;;;;;;14244:9;14209:7;:18;14217:9;;14209:18;;;;;;;;;;;:31;;;:44;;;;;;;:::i;:::-;;;;;;;;14310:1;14268:13;:27;14282:12;:10;:12::i;:::-;14268:27;;;;;;;;;;;;;;;:39;;;:43;14264:311;;;14389:14;14328:13;:27;14342:12;:10;:12::i;:::-;14328:27;;;;;;;;;;;;;;;:57;;;:75;;;;;;;:::i;:::-;;;;;;;;14264:311;;;14466:97;;;;;;;;14494:1;14466:97;;;;14514:14;14466:97;;;;14547:1;14466:97;;::::0;14436:13:::3;:27;14450:12;:10;:12::i;:::-;14436:27;;;;;;;;;;;;;;;:127;;;;;;;;;;;;;;;;;;;;;;;;;;;14264:311;14587:20;14610:4;;;;;;;;;;;:14;;;14639:12;:10;:12::i;:::-;14674:4;14610:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14587:103;;14722:12;14709:9;:25;;14701:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14784:12;14810:4;;;;;;;;;;;14802:18;;14935:12;:10;:12::i;:::-;14966;;;;;;;;;;;14997:9;14835:186;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14802:230;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14783:249;;;15051:7;15043:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;15185:4;;;;;;;;;;;15099:185;;15153:9;;15126:12;:10;:12::i;:::-;15099:185;;;15205:14;15234:9;15258:15;15099:185;;;;;;;;:::i;:::-;;;;;;;;15302:4;15295:11;;;;;477:20:::2;:18;:20::i;:::-;12917:1:::1;;13360:1954:::0;;;;:::o;10262:737::-;1303:13;:11;:13::i;:::-;10508:1:::1;10499:6;:10;10491:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;10559:1;10543:13;:17;10535:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10632:5;10603:34;;:7;:18;10611:9;;10603:18;;;;;;;;;;;:25;;;;;;;;;;;;:34;;;10595:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10684:9;;:11;;;;;;;;;:::i;:::-;;;;;;10729:198;;;;;;;;10751:10;10729:198;;;;10776:8;10729:198;;;;10799:6;10729:198;;;;10820:1;10729:198;;;;10836:13;10729:198;;;;10864:12;10729:198;;;;10891:1;10729:198;;;;10907:9;10729:198;;;;::::0;10708:7:::1;:18;10716:9;;10708:18;;;;;;;;;;;:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10960:9;;10945:46;10971:13;10986:1;10989::::0;10945:46:::1;;;;;;;;:::i;:::-;;;;;;;;10262:737:::0;;;;;;:::o;8257:26::-;;;;;;;;;;;;;:::o;8474:21::-;;;;;;;;;;;;;:::o;12348:228::-;12425:3;12862:1;12856:3;:7;:27;;;;;12874:9;;12867:3;:16;;12856:27;12848:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;1303:13:::1;:11;:13::i;:::-;12459:6:::2;:11;12466:3;12459:11;;;;;;;;;;;;;;;;;;;;;12451:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;12510:5;12496:6;:11;12503:3;12496:11;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;12547:3;12531:37;12552:15;12531:37;;;;;;:::i;:::-;;;;;;;;12348:228:::0;;:::o;11187:566::-;11403:3;12862:1;12856:3;:7;:27;;;;;12874:9;;12867:3;:16;;12856:27;12848:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;1303:13:::1;:11;:13::i;:::-;11446:1:::2;11437:6;:10;11429:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;11497:1;11481:13;:17;11473:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;11557:10;11533:7;:12;11541:3;11533:12;;;;;;;;;;;:22;;:34;;;;11599:6;11578:7;:12;11586:3;11578:12;;;;;;;;;;;:18;;:27;;;;11639:8;11616:7;:12;11624:3;11616:12;;;;;;;;;;;:20;;:31;;;;11686:13;11658:7;:12;11666:3;11658:12;;;;;;;;;;;:25;;:41;;;;11737:8;11710:7;:12;11718:3;11710:12;;;;;;;;;;;:24;;:35;;;;11187:566:::0;;;;;;;:::o;8336:24::-;;;;:::o;8922:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1690:238::-;1303:13;:11;:13::i;:::-;1813:1:::1;1793:22;;:8;:22;;::::0;1771:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1892:28;1911:8;1892:18;:28::i;:::-;1690:238:::0;:::o;17899:190::-;17996:15;18066;;18044:7;:12;18052:3;18044:12;;;;;;;;;;;:18;;;18035:6;:27;;;;:::i;:::-;18034:47;;;;:::i;:::-;18024:57;;17899:190;;;;:::o;8440:27::-;;;;;;;;;;;;;:::o;17343:245::-;17443:16;17562:6;;;;;;;;;;;17547:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17541:2;:39;;;;:::i;:::-;17506:7;:12;17514:3;17506:12;;;;;;;;;;;:18;;;17497:6;:27;;;;:::i;:::-;17496:84;;;;:::i;:::-;17472:108;;17343:245;;;;:::o;1439:132::-;1514:12;:10;:12::i;:::-;1503:23;;:7;:5;:7::i;:::-;:23;;;1495:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1439:132::o;513:152::-;293:1;571:7;;:19;563:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;293:1;639:7;:18;;;;513:152::o;792:98::-;845:7;872:10;865:17;;792:98;:::o;18097:257::-;18212:6;18187:21;:31;;18179:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18246:12;18264:9;:14;;18286:6;18264:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18245:52;;;18316:7;18308:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18168:186;18097:257;;:::o;673:79::-;249:1;722:7;:22;;;;673:79::o;1936:191::-;2010:16;2029:6;;;;;;;;;;;2010:25;;2055:8;2046:6;;:17;;;;;;;;;;;;;;;;;;2110:8;2079:40;;2100:8;2079:40;;;;;;;;;;;;1999:128;1936:191;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:90::-;1059:7;1102:5;1095:13;1088:21;1077:32;;1025:90;;;:::o;1121:109::-;1202:21;1217:5;1202:21;:::i;:::-;1197:3;1190:34;1121:109;;:::o;1236:210::-;1323:4;1361:2;1350:9;1346:18;1338:26;;1374:65;1436:1;1425:9;1421:17;1412:6;1374:65;:::i;:::-;1236:210;;;;:::o;1452:126::-;1489:7;1529:42;1522:5;1518:54;1507:65;;1452:126;;;:::o;1584:96::-;1621:7;1650:24;1668:5;1650:24;:::i;:::-;1639:35;;1584:96;;;:::o;1686:122::-;1759:24;1777:5;1759:24;:::i;:::-;1752:5;1749:35;1739:63;;1798:1;1795;1788:12;1739:63;1686:122;:::o;1814:139::-;1860:5;1898:6;1885:20;1876:29;;1914:33;1941:5;1914:33;:::i;:::-;1814:139;;;;:::o;1959:329::-;2018:6;2067:2;2055:9;2046:7;2042:23;2038:32;2035:119;;;2073:79;;:::i;:::-;2035:119;2193:1;2218:53;2263:7;2254:6;2243:9;2239:22;2218:53;:::i;:::-;2208:63;;2164:117;1959:329;;;;:::o;2294:474::-;2362:6;2370;2419:2;2407:9;2398:7;2394:23;2390:32;2387:119;;;2425:79;;:::i;:::-;2387:119;2545:1;2570:53;2615:7;2606:6;2595:9;2591:22;2570:53;:::i;:::-;2560:63;;2516:117;2672:2;2698:53;2743:7;2734:6;2723:9;2719:22;2698:53;:::i;:::-;2688:63;;2643:118;2294:474;;;;;:::o;2774:118::-;2861:24;2879:5;2861:24;:::i;:::-;2856:3;2849:37;2774:118;;:::o;2898:222::-;2991:4;3029:2;3018:9;3014:18;3006:26;;3042:71;3110:1;3099:9;3095:17;3086:6;3042:71;:::i;:::-;2898:222;;;;:::o;3126:474::-;3194:6;3202;3251:2;3239:9;3230:7;3226:23;3222:32;3219:119;;;3257:79;;:::i;:::-;3219:119;3377:1;3402:53;3447:7;3438:6;3427:9;3423:22;3402:53;:::i;:::-;3392:63;;3348:117;3504:2;3530:53;3575:7;3566:6;3555:9;3551:22;3530:53;:::i;:::-;3520:63;;3475:118;3126:474;;;;;:::o;3606:442::-;3755:4;3793:2;3782:9;3778:18;3770:26;;3806:71;3874:1;3863:9;3859:17;3850:6;3806:71;:::i;:::-;3887:72;3955:2;3944:9;3940:18;3931:6;3887:72;:::i;:::-;3969;4037:2;4026:9;4022:18;4013:6;3969:72;:::i;:::-;3606:442;;;;;;:::o;4054:118::-;4141:24;4159:5;4141:24;:::i;:::-;4136:3;4129:37;4054:118;;:::o;4178:222::-;4271:4;4309:2;4298:9;4294:18;4286:26;;4322:71;4390:1;4379:9;4375:17;4366:6;4322:71;:::i;:::-;4178:222;;;;:::o;4406:116::-;4476:21;4491:5;4476:21;:::i;:::-;4469:5;4466:32;4456:60;;4512:1;4509;4502:12;4456:60;4406:116;:::o;4528:133::-;4571:5;4609:6;4596:20;4587:29;;4625:30;4649:5;4625:30;:::i;:::-;4528:133;;;;:::o;4667:1051::-;4768:6;4776;4784;4792;4800;4808;4857:3;4845:9;4836:7;4832:23;4828:33;4825:120;;;4864:79;;:::i;:::-;4825:120;4984:1;5009:53;5054:7;5045:6;5034:9;5030:22;5009:53;:::i;:::-;4999:63;;4955:117;5111:2;5137:53;5182:7;5173:6;5162:9;5158:22;5137:53;:::i;:::-;5127:63;;5082:118;5239:2;5265:53;5310:7;5301:6;5290:9;5286:22;5265:53;:::i;:::-;5255:63;;5210:118;5367:2;5393:53;5438:7;5429:6;5418:9;5414:22;5393:53;:::i;:::-;5383:63;;5338:118;5495:3;5522:53;5567:7;5558:6;5547:9;5543:22;5522:53;:::i;:::-;5512:63;;5466:119;5624:3;5651:50;5693:7;5684:6;5673:9;5669:22;5651:50;:::i;:::-;5641:60;;5595:116;4667:1051;;;;;;;;:::o;5724:60::-;5752:3;5773:5;5766:12;;5724:60;;;:::o;5790:142::-;5840:9;5873:53;5891:34;5900:24;5918:5;5900:24;:::i;:::-;5891:34;:::i;:::-;5873:53;:::i;:::-;5860:66;;5790:142;;;:::o;5938:126::-;5988:9;6021:37;6052:5;6021:37;:::i;:::-;6008:50;;5938:126;;;:::o;6070:148::-;6142:9;6175:37;6206:5;6175:37;:::i;:::-;6162:50;;6070:148;;;:::o;6224:175::-;6333:59;6386:5;6333:59;:::i;:::-;6328:3;6321:72;6224:175;;:::o;6405:266::-;6520:4;6558:2;6547:9;6543:18;6535:26;;6571:93;6661:1;6650:9;6646:17;6637:6;6571:93;:::i;:::-;6405:266;;;;:::o;6677:1057::-;6781:6;6789;6797;6805;6813;6821;6870:3;6858:9;6849:7;6845:23;6841:33;6838:120;;;6877:79;;:::i;:::-;6838:120;6997:1;7022:53;7067:7;7058:6;7047:9;7043:22;7022:53;:::i;:::-;7012:63;;6968:117;7124:2;7150:53;7195:7;7186:6;7175:9;7171:22;7150:53;:::i;:::-;7140:63;;7095:118;7252:2;7278:53;7323:7;7314:6;7303:9;7299:22;7278:53;:::i;:::-;7268:63;;7223:118;7380:2;7406:53;7451:7;7442:6;7431:9;7427:22;7406:53;:::i;:::-;7396:63;;7351:118;7508:3;7535:53;7580:7;7571:6;7560:9;7556:22;7535:53;:::i;:::-;7525:63;;7479:119;7637:3;7664:53;7709:7;7700:6;7689:9;7685:22;7664:53;:::i;:::-;7654:63;;7608:119;6677:1057;;;;;;;;:::o;7740:985::-;8023:4;8061:3;8050:9;8046:19;8038:27;;8075:71;8143:1;8132:9;8128:17;8119:6;8075:71;:::i;:::-;8156:72;8224:2;8213:9;8209:18;8200:6;8156:72;:::i;:::-;8238;8306:2;8295:9;8291:18;8282:6;8238:72;:::i;:::-;8320;8388:2;8377:9;8373:18;8364:6;8320:72;:::i;:::-;8402:73;8470:3;8459:9;8455:19;8446:6;8402:73;:::i;:::-;8485;8553:3;8542:9;8538:19;8529:6;8485:73;:::i;:::-;8568;8636:3;8625:9;8621:19;8612:6;8568:73;:::i;:::-;8651:67;8713:3;8702:9;8698:19;8689:6;8651:67;:::i;:::-;7740:985;;;;;;;;;;;:::o;8731:169::-;8815:11;8849:6;8844:3;8837:19;8889:4;8884:3;8880:14;8865:29;;8731:169;;;;:::o;8906:168::-;9046:20;9042:1;9034:6;9030:14;9023:44;8906:168;:::o;9080:366::-;9222:3;9243:67;9307:2;9302:3;9243:67;:::i;:::-;9236:74;;9319:93;9408:3;9319:93;:::i;:::-;9437:2;9432:3;9428:12;9421:19;;9080:366;;;:::o;9452:419::-;9618:4;9656:2;9645:9;9641:18;9633:26;;9705:9;9699:4;9695:20;9691:1;9680:9;9676:17;9669:47;9733:131;9859:4;9733:131;:::i;:::-;9725:139;;9452:419;;;:::o;9877:173::-;10017:25;10013:1;10005:6;10001:14;9994:49;9877:173;:::o;10056:366::-;10198:3;10219:67;10283:2;10278:3;10219:67;:::i;:::-;10212:74;;10295:93;10384:3;10295:93;:::i;:::-;10413:2;10408:3;10404:12;10397:19;;10056:366;;;:::o;10428:419::-;10594:4;10632:2;10621:9;10617:18;10609:26;;10681:9;10675:4;10671:20;10667:1;10656:9;10652:17;10645:47;10709:131;10835:4;10709:131;:::i;:::-;10701:139;;10428:419;;;:::o;10853:180::-;10901:77;10898:1;10891:88;10998:4;10995:1;10988:15;11022:4;11019:1;11012:15;11039:194;11079:4;11099:20;11117:1;11099:20;:::i;:::-;11094:25;;11133:20;11151:1;11133:20;:::i;:::-;11128:25;;11177:1;11174;11170:9;11162:17;;11201:1;11195:4;11192:11;11189:37;;;11206:18;;:::i;:::-;11189:37;11039:194;;;;:::o;11239:169::-;11379:21;11375:1;11367:6;11363:14;11356:45;11239:169;:::o;11414:366::-;11556:3;11577:67;11641:2;11636:3;11577:67;:::i;:::-;11570:74;;11653:93;11742:3;11653:93;:::i;:::-;11771:2;11766:3;11762:12;11755:19;;11414:366;;;:::o;11786:419::-;11952:4;11990:2;11979:9;11975:18;11967:26;;12039:9;12033:4;12029:20;12025:1;12014:9;12010:17;12003:47;12067:131;12193:4;12067:131;:::i;:::-;12059:139;;11786:419;;;:::o;12211:410::-;12251:7;12274:20;12292:1;12274:20;:::i;:::-;12269:25;;12308:20;12326:1;12308:20;:::i;:::-;12303:25;;12363:1;12360;12356:9;12385:30;12403:11;12385:30;:::i;:::-;12374:41;;12564:1;12555:7;12551:15;12548:1;12545:22;12525:1;12518:9;12498:83;12475:139;;12594:18;;:::i;:::-;12475:139;12259:362;12211:410;;;;:::o;12627:180::-;12675:77;12672:1;12665:88;12772:4;12769:1;12762:15;12796:4;12793:1;12786:15;12813:185;12853:1;12870:20;12888:1;12870:20;:::i;:::-;12865:25;;12904:20;12922:1;12904:20;:::i;:::-;12899:25;;12943:1;12933:35;;12948:18;;:::i;:::-;12933:35;12990:1;12987;12983:9;12978:14;;12813:185;;;;:::o;13004:191::-;13044:3;13063:20;13081:1;13063:20;:::i;:::-;13058:25;;13097:20;13115:1;13097:20;:::i;:::-;13092:25;;13140:1;13137;13133:9;13126:16;;13161:3;13158:1;13155:10;13152:36;;;13168:18;;:::i;:::-;13152:36;13004:191;;;;:::o;13201:225::-;13341:34;13337:1;13329:6;13325:14;13318:58;13410:8;13405:2;13397:6;13393:15;13386:33;13201:225;:::o;13432:366::-;13574:3;13595:67;13659:2;13654:3;13595:67;:::i;:::-;13588:74;;13671:93;13760:3;13671:93;:::i;:::-;13789:2;13784:3;13780:12;13773:19;;13432:366;;;:::o;13804:419::-;13970:4;14008:2;13997:9;13993:18;13985:26;;14057:9;14051:4;14047:20;14043:1;14032:9;14028:17;14021:47;14085:131;14211:4;14085:131;:::i;:::-;14077:139;;13804:419;;;:::o;14229:170::-;14369:22;14365:1;14357:6;14353:14;14346:46;14229:170;:::o;14405:366::-;14547:3;14568:67;14632:2;14627:3;14568:67;:::i;:::-;14561:74;;14644:93;14733:3;14644:93;:::i;:::-;14762:2;14757:3;14753:12;14746:19;;14405:366;;;:::o;14777:419::-;14943:4;14981:2;14970:9;14966:18;14958:26;;15030:9;15024:4;15020:20;15016:1;15005:9;15001:17;14994:47;15058:131;15184:4;15058:131;:::i;:::-;15050:139;;14777:419;;;:::o;15202:164::-;15342:16;15338:1;15330:6;15326:14;15319:40;15202:164;:::o;15372:366::-;15514:3;15535:67;15599:2;15594:3;15535:67;:::i;:::-;15528:74;;15611:93;15700:3;15611:93;:::i;:::-;15729:2;15724:3;15720:12;15713:19;;15372:366;;;:::o;15744:419::-;15910:4;15948:2;15937:9;15933:18;15925:26;;15997:9;15991:4;15987:20;15983:1;15972:9;15968:17;15961:47;16025:131;16151:4;16025:131;:::i;:::-;16017:139;;15744:419;;;:::o;16169:86::-;16204:7;16244:4;16237:5;16233:16;16222:27;;16169:86;;;:::o;16261:118::-;16332:22;16348:5;16332:22;:::i;:::-;16325:5;16322:33;16312:61;;16369:1;16366;16359:12;16312:61;16261:118;:::o;16385:139::-;16440:5;16471:6;16465:13;16456:22;;16487:31;16512:5;16487:31;:::i;:::-;16385:139;;;;:::o;16530:347::-;16598:6;16647:2;16635:9;16626:7;16622:23;16618:32;16615:119;;;16653:79;;:::i;:::-;16615:119;16773:1;16798:62;16852:7;16843:6;16832:9;16828:22;16798:62;:::i;:::-;16788:72;;16744:126;16530:347;;;;:::o;16883:102::-;16925:8;16972:5;16969:1;16965:13;16944:34;;16883:102;;;:::o;16991:848::-;17052:5;17059:4;17083:6;17074:15;;17107:5;17098:14;;17121:712;17142:1;17132:8;17129:15;17121:712;;;17237:4;17232:3;17228:14;17222:4;17219:24;17216:50;;;17246:18;;:::i;:::-;17216:50;17296:1;17286:8;17282:16;17279:451;;;17711:4;17704:5;17700:16;17691:25;;17279:451;17761:4;17755;17751:15;17743:23;;17791:32;17814:8;17791:32;:::i;:::-;17779:44;;17121:712;;;16991:848;;;;;;;:::o;17845:1073::-;17899:5;18090:8;18080:40;;18111:1;18102:10;;18113:5;;18080:40;18139:4;18129:36;;18156:1;18147:10;;18158:5;;18129:36;18225:4;18273:1;18268:27;;;;18309:1;18304:191;;;;18218:277;;18268:27;18286:1;18277:10;;18288:5;;;18304:191;18349:3;18339:8;18336:17;18333:43;;;18356:18;;:::i;:::-;18333:43;18405:8;18402:1;18398:16;18389:25;;18440:3;18433:5;18430:14;18427:40;;;18447:18;;:::i;:::-;18427:40;18480:5;;;18218:277;;18604:2;18594:8;18591:16;18585:3;18579:4;18576:13;18572:36;18554:2;18544:8;18541:16;18536:2;18530:4;18527:12;18523:35;18507:111;18504:246;;;18660:8;18654:4;18650:19;18641:28;;18695:3;18688:5;18685:14;18682:40;;;18702:18;;:::i;:::-;18682:40;18735:5;;18504:246;18775:42;18813:3;18803:8;18797:4;18794:1;18775:42;:::i;:::-;18760:57;;;;18849:4;18844:3;18840:14;18833:5;18830:25;18827:51;;;18858:18;;:::i;:::-;18827:51;18907:4;18900:5;18896:16;18887:25;;17845:1073;;;;;;:::o;18924:281::-;18982:5;19006:23;19024:4;19006:23;:::i;:::-;18998:31;;19050:25;19066:8;19050:25;:::i;:::-;19038:37;;19094:104;19131:66;19121:8;19115:4;19094:104;:::i;:::-;19085:113;;18924:281;;;;:::o;19211:164::-;19351:16;19347:1;19339:6;19335:14;19328:40;19211:164;:::o;19381:366::-;19523:3;19544:67;19608:2;19603:3;19544:67;:::i;:::-;19537:74;;19620:93;19709:3;19620:93;:::i;:::-;19738:2;19733:3;19729:12;19722:19;;19381:366;;;:::o;19753:419::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:332::-;20299:4;20337:2;20326:9;20322:18;20314:26;;20350:71;20418:1;20407:9;20403:17;20394:6;20350:71;:::i;:::-;20431:72;20499:2;20488:9;20484:18;20475:6;20431:72;:::i;:::-;20178:332;;;;;:::o;20516:137::-;20570:5;20601:6;20595:13;20586:22;;20617:30;20641:5;20617:30;:::i;:::-;20516:137;;;;:::o;20659:345::-;20726:6;20775:2;20763:9;20754:7;20750:23;20746:32;20743:119;;;20781:79;;:::i;:::-;20743:119;20901:1;20926:61;20979:7;20970:6;20959:9;20955:22;20926:61;:::i;:::-;20916:71;;20872:125;20659:345;;;;:::o;21010:168::-;21150:20;21146:1;21138:6;21134:14;21127:44;21010:168;:::o;21184:366::-;21326:3;21347:67;21411:2;21406:3;21347:67;:::i;:::-;21340:74;;21423:93;21512:3;21423:93;:::i;:::-;21541:2;21536:3;21532:12;21525:19;;21184:366;;;:::o;21556:419::-;21722:4;21760:2;21749:9;21745:18;21737:26;;21809:9;21803:4;21799:20;21795:1;21784:9;21780:17;21773:47;21837:131;21963:4;21837:131;:::i;:::-;21829:139;;21556:419;;;:::o;21981:167::-;22121:19;22117:1;22109:6;22105:14;22098:43;21981:167;:::o;22154:366::-;22296:3;22317:67;22381:2;22376:3;22317:67;:::i;:::-;22310:74;;22393:93;22482:3;22393:93;:::i;:::-;22511:2;22506:3;22502:12;22495:19;;22154:366;;;:::o;22526:419::-;22692:4;22730:2;22719:9;22715:18;22707:26;;22779:9;22773:4;22769:20;22765:1;22754:9;22750:17;22743:47;22807:131;22933:4;22807:131;:::i;:::-;22799:139;;22526:419;;;:::o;22951:179::-;23091:31;23087:1;23079:6;23075:14;23068:55;22951:179;:::o;23136:366::-;23278:3;23299:67;23363:2;23358:3;23299:67;:::i;:::-;23292:74;;23375:93;23464:3;23375:93;:::i;:::-;23493:2;23488:3;23484:12;23477:19;;23136:366;;;:::o;23508:419::-;23674:4;23712:2;23701:9;23697:18;23689:26;;23761:9;23755:4;23751:20;23747:1;23736:9;23732:17;23725:47;23789:131;23915:4;23789:131;:::i;:::-;23781:139;;23508:419;;;:::o;23933:143::-;23990:5;24021:6;24015:13;24006:22;;24037:33;24064:5;24037:33;:::i;:::-;23933:143;;;;:::o;24082:351::-;24152:6;24201:2;24189:9;24180:7;24176:23;24172:32;24169:119;;;24207:79;;:::i;:::-;24169:119;24327:1;24352:64;24408:7;24399:6;24388:9;24384:22;24352:64;:::i;:::-;24342:74;;24298:128;24082:351;;;;:::o;24439:220::-;24579:34;24575:1;24567:6;24563:14;24556:58;24648:3;24643:2;24635:6;24631:15;24624:28;24439:220;:::o;24665:366::-;24807:3;24828:67;24892:2;24887:3;24828:67;:::i;:::-;24821:74;;24904:93;24993:3;24904:93;:::i;:::-;25022:2;25017:3;25013:12;25006:19;;24665:366;;;:::o;25037:419::-;25203:4;25241:2;25230:9;25226:18;25218:26;;25290:9;25284:4;25280:20;25276:1;25265:9;25261:17;25254:47;25318:131;25444:4;25318:131;:::i;:::-;25310:139;;25037:419;;;:::o;25462:171::-;25602:23;25598:1;25590:6;25586:14;25579:47;25462:171;:::o;25639:366::-;25781:3;25802:67;25866:2;25861:3;25802:67;:::i;:::-;25795:74;;25878:93;25967:3;25878:93;:::i;:::-;25996:2;25991:3;25987:12;25980:19;;25639:366;;;:::o;26011:419::-;26177:4;26215:2;26204:9;26200:18;26192:26;;26264:9;26258:4;26254:20;26250:1;26239:9;26235:17;26228:47;26292:131;26418:4;26292:131;:::i;:::-;26284:139;;26011:419;;;:::o;26436:332::-;26557:4;26595:2;26584:9;26580:18;26572:26;;26608:71;26676:1;26665:9;26661:17;26652:6;26608:71;:::i;:::-;26689:72;26757:2;26746:9;26742:18;26733:6;26689:72;:::i;:::-;26436:332;;;;;:::o;26774:168::-;26914:20;26910:1;26902:6;26898:14;26891:44;26774:168;:::o;26948:366::-;27090:3;27111:67;27175:2;27170:3;27111:67;:::i;:::-;27104:74;;27187:93;27276:3;27187:93;:::i;:::-;27305:2;27300:3;27296:12;27289:19;;26948:366;;;:::o;27320:419::-;27486:4;27524:2;27513:9;27509:18;27501:26;;27573:9;27567:4;27563:20;27559:1;27548:9;27544:17;27537:47;27601:131;27727:4;27601:131;:::i;:::-;27593:139;;27320:419;;;:::o;27745:166::-;27885:18;27881:1;27873:6;27869:14;27862:42;27745:166;:::o;27917:366::-;28059:3;28080:67;28144:2;28139:3;28080:67;:::i;:::-;28073:74;;28156:93;28245:3;28156:93;:::i;:::-;28274:2;28269:3;28265:12;28258:19;;27917:366;;;:::o;28289:419::-;28455:4;28493:2;28482:9;28478:18;28470:26;;28542:9;28536:4;28532:20;28528:1;28517:9;28513:17;28506:47;28570:131;28696:4;28570:131;:::i;:::-;28562:139;;28289:419;;;:::o;28714:165::-;28854:17;28850:1;28842:6;28838:14;28831:41;28714:165;:::o;28885:366::-;29027:3;29048:67;29112:2;29107:3;29048:67;:::i;:::-;29041:74;;29124:93;29213:3;29124:93;:::i;:::-;29242:2;29237:3;29233:12;29226:19;;28885:366;;;:::o;29257:419::-;29423:4;29461:2;29450:9;29446:18;29438:26;;29510:9;29504:4;29500:20;29496:1;29485:9;29481:17;29474:47;29538:131;29664:4;29538:131;:::i;:::-;29530:139;;29257:419;;;:::o;29682:105::-;29718:7;29758:22;29751:5;29747:34;29736:45;;29682:105;;;:::o;29793:120::-;29865:23;29882:5;29865:23;:::i;:::-;29858:5;29855:34;29845:62;;29903:1;29900;29893:12;29845:62;29793:120;:::o;29919:141::-;29975:5;30006:6;30000:13;29991:22;;30022:32;30048:5;30022:32;:::i;:::-;29919:141;;;;:::o;30066:76::-;30102:7;30131:5;30120:16;;30066:76;;;:::o;30148:120::-;30220:23;30237:5;30220:23;:::i;:::-;30213:5;30210:34;30200:62;;30258:1;30255;30248:12;30200:62;30148:120;:::o;30274:141::-;30330:5;30361:6;30355:13;30346:22;;30377:32;30403:5;30377:32;:::i;:::-;30274:141;;;;:::o;30421:971::-;30524:6;30532;30540;30548;30556;30605:3;30593:9;30584:7;30580:23;30576:33;30573:120;;;30612:79;;:::i;:::-;30573:120;30732:1;30757:63;30812:7;30803:6;30792:9;30788:22;30757:63;:::i;:::-;30747:73;;30703:127;30869:2;30895:63;30950:7;30941:6;30930:9;30926:22;30895:63;:::i;:::-;30885:73;;30840:128;31007:2;31033:64;31089:7;31080:6;31069:9;31065:22;31033:64;:::i;:::-;31023:74;;30978:129;31146:2;31172:64;31228:7;31219:6;31208:9;31204:22;31172:64;:::i;:::-;31162:74;;31117:129;31285:3;31312:63;31367:7;31358:6;31347:9;31343:22;31312:63;:::i;:::-;31302:73;;31256:129;30421:971;;;;;;;;:::o;31398:556::-;31437:7;31460:19;31477:1;31460:19;:::i;:::-;31455:24;;31493:19;31510:1;31493:19;:::i;:::-;31488:24;;31547:1;31544;31540:9;31569:29;31586:11;31569:29;:::i;:::-;31558:40;;31656:66;31653:1;31650:73;31646:1;31643;31639:9;31635:89;31632:115;;;31727:18;;:::i;:::-;31632:115;31897:1;31888:7;31883:16;31880:1;31877:23;31857:1;31850:9;31830:84;31807:140;;31927:18;;:::i;:::-;31807:140;31445:509;31398:556;;;;:::o;31960:182::-;32100:34;32096:1;32088:6;32084:14;32077:58;31960:182;:::o;32148:366::-;32290:3;32311:67;32375:2;32370:3;32311:67;:::i;:::-;32304:74;;32387:93;32476:3;32387:93;:::i;:::-;32505:2;32500:3;32496:12;32489:19;;32148:366;;;:::o;32520:419::-;32686:4;32724:2;32713:9;32709:18;32701:26;;32773:9;32767:4;32763:20;32759:1;32748:9;32744:17;32737:47;32801:131;32927:4;32801:131;:::i;:::-;32793:139;;32520:419;;;:::o;32945:332::-;33066:4;33104:2;33093:9;33089:18;33081:26;;33117:71;33185:1;33174:9;33170:17;33161:6;33117:71;:::i;:::-;33198:72;33266:2;33255:9;33251:18;33242:6;33198:72;:::i;:::-;32945:332;;;;;:::o;33283:220::-;33423:34;33419:1;33411:6;33407:14;33400:58;33492:3;33487:2;33479:6;33475:15;33468:28;33283:220;:::o;33509:366::-;33651:3;33672:67;33736:2;33731:3;33672:67;:::i;:::-;33665:74;;33748:93;33837:3;33748:93;:::i;:::-;33866:2;33861:3;33857:12;33850:19;;33509:366;;;:::o;33881:419::-;34047:4;34085:2;34074:9;34070:18;34062:26;;34134:9;34128:4;34124:20;34120:1;34109:9;34105:17;34098:47;34162:131;34288:4;34162:131;:::i;:::-;34154:139;;33881:419;;;:::o;34306:442::-;34455:4;34493:2;34482:9;34478:18;34470:26;;34506:71;34574:1;34563:9;34559:17;34550:6;34506:71;:::i;:::-;34587:72;34655:2;34644:9;34640:18;34631:6;34587:72;:::i;:::-;34669;34737:2;34726:9;34722:18;34713:6;34669:72;:::i;:::-;34306:442;;;;;;:::o;34754:98::-;34805:6;34839:5;34833:12;34823:22;;34754:98;;;:::o;34858:147::-;34959:11;34996:3;34981:18;;34858:147;;;;:::o;35011:246::-;35092:1;35102:113;35116:6;35113:1;35110:13;35102:113;;;35201:1;35196:3;35192:11;35186:18;35182:1;35177:3;35173:11;35166:39;35138:2;35135:1;35131:10;35126:15;;35102:113;;;35249:1;35240:6;35235:3;35231:16;35224:27;35073:184;35011:246;;;:::o;35263:386::-;35367:3;35395:38;35427:5;35395:38;:::i;:::-;35449:88;35530:6;35525:3;35449:88;:::i;:::-;35442:95;;35546:65;35604:6;35599:3;35592:4;35585:5;35581:16;35546:65;:::i;:::-;35636:6;35631:3;35627:16;35620:23;;35371:278;35263:386;;;;:::o;35655:271::-;35785:3;35807:93;35896:3;35887:6;35807:93;:::i;:::-;35800:100;;35917:3;35910:10;;35655:271;;;;:::o;35932:170::-;36072:22;36068:1;36060:6;36056:14;36049:46;35932:170;:::o;36108:366::-;36250:3;36271:67;36335:2;36330:3;36271:67;:::i;:::-;36264:74;;36347:93;36436:3;36347:93;:::i;:::-;36465:2;36460:3;36456:12;36449:19;;36108:366;;;:::o;36480:419::-;36646:4;36684:2;36673:9;36669:18;36661:26;;36733:9;36727:4;36723:20;36719:1;36708:9;36704:17;36697:47;36761:131;36887:4;36761:131;:::i;:::-;36753:139;;36480:419;;;:::o;36905:160::-;37045:12;37041:1;37033:6;37029:14;37022:36;36905:160;:::o;37071:366::-;37213:3;37234:67;37298:2;37293:3;37234:67;:::i;:::-;37227:74;;37310:93;37399:3;37310:93;:::i;:::-;37428:2;37423:3;37419:12;37412:19;;37071:366;;;:::o;37443:419::-;37609:4;37647:2;37636:9;37632:18;37624:26;;37696:9;37690:4;37686:20;37682:1;37671:9;37667:17;37660:47;37724:131;37850:4;37724:131;:::i;:::-;37716:139;;37443:419;;;:::o;37868:169::-;38008:21;38004:1;37996:6;37992:14;37985:45;37868:169;:::o;38043:366::-;38185:3;38206:67;38270:2;38265:3;38206:67;:::i;:::-;38199:74;;38282:93;38371:3;38282:93;:::i;:::-;38400:2;38395:3;38391:12;38384:19;;38043:366;;;:::o;38415:419::-;38581:4;38619:2;38608:9;38604:18;38596:26;;38668:9;38662:4;38658:20;38654:1;38643:9;38639:17;38632:47;38696:131;38822:4;38696:131;:::i;:::-;38688:139;;38415:419;;;:::o;38840:179::-;38980:31;38976:1;38968:6;38964:14;38957:55;38840:179;:::o;39025:366::-;39167:3;39188:67;39252:2;39247:3;39188:67;:::i;:::-;39181:74;;39264:93;39353:3;39264:93;:::i;:::-;39382:2;39377:3;39373:12;39366:19;;39025:366;;;:::o;39397:419::-;39563:4;39601:2;39590:9;39586:18;39578:26;;39650:9;39644:4;39640:20;39636:1;39625:9;39621:17;39614:47;39678:131;39804:4;39678:131;:::i;:::-;39670:139;;39397:419;;;:::o;39822:233::-;39861:3;39884:24;39902:5;39884:24;:::i;:::-;39875:33;;39930:66;39923:5;39920:77;39917:103;;40000:18;;:::i;:::-;39917:103;40047:1;40040:5;40036:13;40029:20;;39822:233;;;:::o;40061:85::-;40106:7;40135:5;40124:16;;40061:85;;;:::o;40152:158::-;40210:9;40243:61;40261:42;40270:32;40296:5;40270:32;:::i;:::-;40261:42;:::i;:::-;40243:61;:::i;:::-;40230:74;;40152:158;;;:::o;40316:147::-;40411:45;40450:5;40411:45;:::i;:::-;40406:3;40399:58;40316:147;;:::o;40469:474::-;40634:4;40672:2;40661:9;40657:18;40649:26;;40685:71;40753:1;40742:9;40738:17;40729:6;40685:71;:::i;:::-;40766:80;40842:2;40831:9;40827:18;40818:6;40766:80;:::i;:::-;40856;40932:2;40921:9;40917:18;40908:6;40856:80;:::i;:::-;40469:474;;;;;;:::o;40949:160::-;41089:12;41085:1;41077:6;41073:14;41066:36;40949:160;:::o;41115:366::-;41257:3;41278:67;41342:2;41337:3;41278:67;:::i;:::-;41271:74;;41354:93;41443:3;41354:93;:::i;:::-;41472:2;41467:3;41463:12;41456:19;;41115:366;;;:::o;41487:419::-;41653:4;41691:2;41680:9;41676:18;41668:26;;41740:9;41734:4;41730:20;41726:1;41715:9;41711:17;41704:47;41768:131;41894:4;41768:131;:::i;:::-;41760:139;;41487:419;;;:::o;41912:225::-;42052:34;42048:1;42040:6;42036:14;42029:58;42121:8;42116:2;42108:6;42104:15;42097:33;41912:225;:::o;42143:366::-;42285:3;42306:67;42370:2;42365:3;42306:67;:::i;:::-;42299:74;;42382:93;42471:3;42382:93;:::i;:::-;42500:2;42495:3;42491:12;42484:19;;42143:366;;;:::o;42515:419::-;42681:4;42719:2;42708:9;42704:18;42696:26;;42768:9;42762:4;42758:20;42754:1;42743:9;42739:17;42732:47;42796:131;42922:4;42796:131;:::i;:::-;42788:139;;42515:419;;;:::o;42940:182::-;43080:34;43076:1;43068:6;43064:14;43057:58;42940:182;:::o;43128:366::-;43270:3;43291:67;43355:2;43350:3;43291:67;:::i;:::-;43284:74;;43367:93;43456:3;43367:93;:::i;:::-;43485:2;43480:3;43476:12;43469:19;;43128:366;;;:::o;43500:419::-;43666:4;43704:2;43693:9;43689:18;43681:26;;43753:9;43747:4;43743:20;43739:1;43728:9;43724:17;43717:47;43781:131;43907:4;43781:131;:::i;:::-;43773:139;;43500:419;;;:::o;43925:181::-;44065:33;44061:1;44053:6;44049:14;44042:57;43925:181;:::o;44112:366::-;44254:3;44275:67;44339:2;44334:3;44275:67;:::i;:::-;44268:74;;44351:93;44440:3;44351:93;:::i;:::-;44469:2;44464:3;44460:12;44453:19;;44112:366;;;:::o;44484:419::-;44650:4;44688:2;44677:9;44673:18;44665:26;;44737:9;44731:4;44727:20;44723:1;44712:9;44708:17;44701:47;44765:131;44891:4;44765:131;:::i;:::-;44757:139;;44484:419;;;:::o;44909:161::-;45049:13;45045:1;45037:6;45033:14;45026:37;44909:161;:::o;45076:366::-;45218:3;45239:67;45303:2;45298:3;45239:67;:::i;:::-;45232:74;;45315:93;45404:3;45315:93;:::i;:::-;45433:2;45428:3;45424:12;45417:19;;45076:366;;;:::o;45448:419::-;45614:4;45652:2;45641:9;45637:18;45629:26;;45701:9;45695:4;45691:20;45687:1;45676:9;45672:17;45665:47;45729:131;45855:4;45729:131;:::i;:::-;45721:139;;45448:419;;;:::o;45873:114::-;;:::o;45993:398::-;46152:3;46173:83;46254:1;46249:3;46173:83;:::i;:::-;46166:90;;46265:93;46354:3;46265:93;:::i;:::-;46383:1;46378:3;46374:11;46367:18;;45993:398;;;:::o;46397:379::-;46581:3;46603:147;46746:3;46603:147;:::i;:::-;46596:154;;46767:3;46760:10;;46397:379;;;:::o;46782:168::-;46922:20;46918:1;46910:6;46906:14;46899:44;46782:168;:::o;46956:366::-;47098:3;47119:67;47183:2;47178:3;47119:67;:::i;:::-;47112:74;;47195:93;47284:3;47195:93;:::i;:::-;47313:2;47308:3;47304:12;47297:19;;46956:366;;;:::o;47328:419::-;47494:4;47532:2;47521:9;47517:18;47509:26;;47581:9;47575:4;47571:20;47567:1;47556:9;47552:17;47545:47;47609:131;47735:4;47609:131;:::i;:::-;47601:139;;47328:419;;;:::o

Swarm Source

ipfs://efc3cc7fe2b48d06320f76ab149f55a02effdb7d2435b96846b37a6b637956da

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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