ETH Price: $2,609.78 (-0.44%)

Contract

0xcfaa82c9046c65667583f89b286e7236Bd9dcC4d
 

Overview

ETH Balance

0.8 ETH

Eth Value

$2,087.82 (@ $2,609.78/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim162465062022-12-23 9:24:47664 days ago1671787487IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0020776614.37311331
Claim162157752022-12-19 2:32:47668 days ago1671417167IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0016676711.53685992
Claim161048892022-12-03 14:29:11684 days ago1670077751IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0018530812.81948613
Claim161045012022-12-03 13:11:35684 days ago1670073095IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0020987914.9325514
Claim161044912022-12-03 13:09:11684 days ago1670072951IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0019434413.444617
Claim161044742022-12-03 13:05:47684 days ago1670072747IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0018165512.7430854
Claim161043882022-12-03 12:48:35684 days ago1670071715IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.001986113.73974908
Claim161042792022-12-03 12:26:47684 days ago1670070407IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0020693814.51671876
Deposit Wci161041952022-12-03 12:09:47684 days ago1670069387IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.00134812.89140692
Claim161023272022-12-03 5:53:47684 days ago1670046827IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0019675413.61134199
Claim161014742022-12-03 3:02:59684 days ago1670036579IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0020823614.40564743
Claim161014662022-12-03 3:01:23684 days ago1670036483IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0027718319.17538082
Claim161014652022-12-03 3:01:11684 days ago1670036471IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0026844118.57058201
Claim161012052022-12-03 2:08:47684 days ago1670033327IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0024382117.10405316
Deposit Wci161003862022-12-02 23:24:23684 days ago1670023463IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0014003212.80401627
Claim161001392022-12-02 22:34:59685 days ago1670020499IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0017392812.03224169
Claim161000582022-12-02 22:18:47685 days ago1670019527IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0018117212.70921431
Claim160999822022-12-02 22:03:23685 days ago1670018603IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0019048813.17781965
Claim160999802022-12-02 22:02:59685 days ago1670018579IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0018718913.13130398
Claim160999562022-12-02 21:58:11685 days ago1670018291IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0018178312.75208828
Claim160999522022-12-02 21:57:23685 days ago1670018243IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.001856912.84593218
Claim160999352022-12-02 21:53:59685 days ago1670018039IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0017287712.29986216
Claim160999142022-12-02 21:49:47685 days ago1670017787IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0019070413.19279797
Claim160999072022-12-02 21:48:23685 days ago1670017703IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0018632213.07046404
Claim160999042022-12-02 21:47:47685 days ago1670017667IN
0xcfaa82c9...6Bd9dcC4d
0 ETH0.0014650110.42326258
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
160990602022-12-02 18:57:35685 days ago1670007455
0xcfaa82c9...6Bd9dcC4d
0.01 ETH
160990582022-12-02 18:57:11685 days ago1670007431
0xcfaa82c9...6Bd9dcC4d
0.01 ETH
160985372022-12-02 17:12:35685 days ago1670001155
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160985252022-12-02 17:10:11685 days ago1670001011
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160965082022-12-02 10:24:35685 days ago1669976675
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160964972022-12-02 10:22:23685 days ago1669976543
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160900582022-12-01 12:48:47686 days ago1669898927
0xcfaa82c9...6Bd9dcC4d
0.2 ETH
160883472022-12-01 7:04:47686 days ago1669878287
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160883292022-12-01 7:01:11686 days ago1669878071
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160882992022-12-01 6:54:59686 days ago1669877699
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160874512022-12-01 4:04:47686 days ago1669867487
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160874142022-12-01 3:57:23686 days ago1669867043
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160874002022-12-01 3:54:35686 days ago1669866875
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160873722022-12-01 3:48:59686 days ago1669866539
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160873372022-12-01 3:41:59686 days ago1669866119
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160873002022-12-01 3:34:35686 days ago1669865675
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160872572022-12-01 3:25:59686 days ago1669865159
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160872182022-12-01 3:18:11686 days ago1669864691
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160871742022-12-01 3:09:11686 days ago1669864151
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160871512022-12-01 3:04:35686 days ago1669863875
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160871402022-12-01 3:02:23686 days ago1669863743
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160871262022-12-01 2:59:35686 days ago1669863575
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160871022022-12-01 2:54:47686 days ago1669863287
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160870572022-12-01 2:45:47686 days ago1669862747
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
160870192022-12-01 2:38:11686 days ago1669862291
0xcfaa82c9...6Bd9dcC4d
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BettingRouter

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion, MIT license
File 1 of 1 : main.sol
// SPDX-License-Identifier: MIT

// File: contracts\Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.13;

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

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

// File: contracts\Ownable.sol

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

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

// File: contracts\IBettingPair.sol


pragma solidity ^0.8.13;

interface IBettingPair {
    enum CHOICE { WIN, DRAW, LOSE }
    enum BETSTATUS { BETTING, REVIEWING, CLAIMING }
    enum TOKENTYPE { ETH, WCI }

    function setBetData(
        address[] memory _account,
        uint256[] memory _playerWin, uint256[] memory _playerDraw, uint256[] memory _playerLose,
        uint256[] memory _playerWinWci, uint256[] memory _playerDrawWci, uint256[] memory _playerLoseWci,
        uint256[] memory _betHistoryWin, uint256[] memory _betHistoryDraw, uint256[] memory _betHistoryLose,
        uint256[] memory _betHistoryWinWci, uint256[] memory _betHistoryDrawWci, uint256[] memory _betHistoryLoseWci,
        uint256[] memory _claimHistory, uint256[] memory _claimHistoryWci,
        uint256 _totalBet, uint256 _totalBetWci,
        uint256 _totalBetWin, uint256 _totalBetDraw, uint256 _totalBetLose,
        uint256 _totalBetWinWci, uint256 _totalBetDrawWci, uint256 _totalBetLoseWci,
        BETSTATUS _status,
        CHOICE _result
    ) external;

    function bet(address, uint256, CHOICE, TOKENTYPE) external;
    function claim(address, TOKENTYPE) external returns (uint256[] memory);

    function calcEarning(address, TOKENTYPE) external view returns (uint256[] memory);
    function calcMultiplier(TOKENTYPE) external view returns (uint256[] memory);

    function getPlayerBetAmount(address, TOKENTYPE) external view returns (uint256[] memory);
    function getPlayerClaimHistory(address, TOKENTYPE) external view returns (uint256);

    function getBetResult() external view returns (CHOICE);
    function setBetResult(CHOICE _result) external;

    function getBetStatus() external view returns (BETSTATUS);
    function setBetStatus(BETSTATUS _status) external;

    function getTotalBet(TOKENTYPE) external view returns (uint256);
    function getTotalBetPerChoice(TOKENTYPE) external view returns (uint256[] memory);

    function getWciTokenThreshold() external view returns (uint256);
    function setWciTokenThreshold(uint256) external;
}

// File: contracts\SafeMath.sol

// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.13;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

// File: contracts\IERC20.sol


pragma solidity ^0.8.13;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, 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 sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts\BettingPair.sol


pragma solidity ^0.8.13;
/*
* @This contract actually doesn't manage token and coin transfer.
* @It is responsible for only amount management.
*/

contract BettingPair is Ownable, IBettingPair {
    using SafeMath for uint256;

    mapping(address => mapping(TOKENTYPE => mapping(CHOICE => uint256))) players;
    mapping(address => mapping(TOKENTYPE => mapping(CHOICE => uint256))) betHistory;
    mapping(address => mapping(TOKENTYPE => uint256)) claimHistory;
    CHOICE betResult;
    BETSTATUS betStatus = BETSTATUS.BETTING;

    mapping(TOKENTYPE => uint256) totalBet;
    mapping(TOKENTYPE => mapping(CHOICE => uint256)) totalBetPerChoice;

    IERC20 public wciToken = IERC20(0xC5a9BC46A7dbe1c6dE493E84A18f02E70E2c5A32);
    uint256 wciTokenThreshold = 50000 * 10**9; // 50,000 WCI as a threshold.

    constructor() {}

    /*
    * @Functions to recover the past bets
    */
    function setBetData(
        address[] calldata _account,
        uint256[] calldata _playerWin, uint256[] calldata _playerDraw, uint256[] calldata _playerLose,
        uint256[] calldata _playerWinWci, uint256[] calldata _playerDrawWci, uint256[] calldata _playerLoseWci,
        uint256[] calldata _betHistoryWin, uint256[] calldata _betHistoryDraw, uint256[] calldata _betHistoryLose,
        uint256[] calldata _betHistoryWinWci, uint256[] calldata _betHistoryDrawWci, uint256[] calldata _betHistoryLoseWci,
        uint256[] calldata _claimHistory, uint256[] calldata _claimHistoryWci,
        uint256 _totalBet, uint256 _totalBetWci,
        uint256 _totalBetWin, uint256 _totalBetDraw, uint256 _totalBetLose,
        uint256 _totalBetWinWci, uint256 _totalBetDrawWci, uint256 _totalBetLoseWci,
        BETSTATUS _status,
        CHOICE _result
    ) external override onlyOwner {
        for (uint256 i=0; i<_account.length; i++) {
            players[_account[i]][TOKENTYPE.ETH][CHOICE.WIN] = _playerWin[i];
            players[_account[i]][TOKENTYPE.ETH][CHOICE.DRAW] = _playerDraw[i];
            players[_account[i]][TOKENTYPE.ETH][CHOICE.LOSE] = _playerLose[i];
            players[_account[i]][TOKENTYPE.WCI][CHOICE.WIN] = _playerWinWci[i];
            players[_account[i]][TOKENTYPE.WCI][CHOICE.DRAW] = _playerDrawWci[i];
            players[_account[i]][TOKENTYPE.WCI][CHOICE.LOSE] = _playerLoseWci[i];

            betHistory[_account[i]][TOKENTYPE.ETH][CHOICE.WIN] = _betHistoryWin[i];
            betHistory[_account[i]][TOKENTYPE.ETH][CHOICE.DRAW] = _betHistoryDraw[i];
            betHistory[_account[i]][TOKENTYPE.ETH][CHOICE.LOSE] = _betHistoryLose[i];
            betHistory[_account[i]][TOKENTYPE.WCI][CHOICE.WIN] = _betHistoryWinWci[i];
            betHistory[_account[i]][TOKENTYPE.WCI][CHOICE.DRAW] = _betHistoryDrawWci[i];
            betHistory[_account[i]][TOKENTYPE.WCI][CHOICE.LOSE] = _betHistoryLoseWci[i];

            claimHistory[_account[i]][TOKENTYPE.ETH] = _claimHistory[i];
            claimHistory[_account[i]][TOKENTYPE.WCI] = _claimHistoryWci[i];

            totalBet[TOKENTYPE.ETH] = _totalBet;
            totalBet[TOKENTYPE.WCI] = _totalBetWci;

            totalBetPerChoice[TOKENTYPE.ETH][CHOICE.WIN] = _totalBetWin;
            totalBetPerChoice[TOKENTYPE.ETH][CHOICE.DRAW] = _totalBetDraw;
            totalBetPerChoice[TOKENTYPE.ETH][CHOICE.LOSE] = _totalBetLose;
            totalBetPerChoice[TOKENTYPE.WCI][CHOICE.WIN] = _totalBetWinWci;
            totalBetPerChoice[TOKENTYPE.WCI][CHOICE.DRAW] = _totalBetDrawWci;
            totalBetPerChoice[TOKENTYPE.WCI][CHOICE.LOSE] = _totalBetLoseWci;

            betStatus = _status;
            betResult = _result;
        }
    }

    /*
    * @Function to bet (Main function).
    * @params:
    *   _player: user wallet address
    *   _amount: bet amount
    *   _choice: bet choice (3 choices - First team wins, draws and loses)
    *   _token: Users can bet using ETH or WCI
    */
    function bet(address _player, uint256 _amount, CHOICE _choice, TOKENTYPE _token)
        external
        override
        onlyOwner 
    {
        require(betStatus == BETSTATUS.BETTING, "You can not bet at this time.");
        totalBet[_token] += _amount;
        totalBetPerChoice[_token][_choice] += _amount;
        players[_player][_token][_choice] += _amount;
        betHistory[_player][_token][_choice] += _amount;
    }

    /*
    * @Function to claim earnings from bet.
    * @It returns how many ether or WCI user will earn from bet.
    */
    function claim(address _player, TOKENTYPE _token) external override onlyOwner returns (uint256[] memory) {
        require(betStatus == BETSTATUS.CLAIMING, "You can not claim at this time.");

        uint256[] memory res = calculateEarning(_player, betResult, _token);
        claimHistory[_player][_token] = res[0];
        players[_player][_token][CHOICE.WIN] = 0;
        players[_player][_token][CHOICE.DRAW] = 0;
        players[_player][_token][CHOICE.LOSE] = 0;

        return res;
    }

    /*
    * @returns an array of 7 elements. The first element is user's winning amount and the second element is
    *   site owner's profit which will be transferred to tax collector wallet. The remaining amounts are collateral
    *   token amounts.
    */
    function calculateEarning(address _player, CHOICE _choice, TOKENTYPE _token) internal view returns (uint256[] memory) {
        uint256[] memory res = new uint256[](2);

        uint256 userBal = players[_player][_token][_choice];

        // If there are no opponent bets, the player will claim his original bet amount.
        if (totalBetPerChoice[_token][CHOICE.WIN] == totalBet[_token] && players[_player][_token][CHOICE.WIN] > 0) {
            res[0] = betHistory[_player][_token][CHOICE.WIN];
            return res;
        } else if (totalBetPerChoice[_token][CHOICE.DRAW] == totalBet[_token] && players[_player][_token][CHOICE.DRAW] > 0) {
            res[0] = betHistory[_player][_token][CHOICE.DRAW];
            return res;
        } else if (totalBetPerChoice[_token][CHOICE.LOSE] == totalBet[_token] && players[_player][_token][CHOICE.LOSE] > 0) {
            res[0] = betHistory[_player][_token][CHOICE.LOSE];
            return res;
        } else if (totalBetPerChoice[_token][_choice] == 0) {
            return res;
        }

        uint256 _wciTokenBal = wciToken.balanceOf(_player);

        // If the token is ETH, the player will take 5% tax if he holds enough WCI token. Otherwise he will take 10% tax.
        if (_token == TOKENTYPE.ETH) {
            if (_wciTokenBal >= wciTokenThreshold) {
                res[0] = userBal + userBal.mul(totalBet[_token]-totalBetPerChoice[_token][_choice]).mul(19).div(20).div(totalBetPerChoice[_token][_choice]);
                res[1] = userBal.mul(totalBet[_token]-totalBetPerChoice[_token][_choice]).div(20).div(totalBetPerChoice[_token][_choice]);
            } else {
                res[0] = userBal + userBal.mul(totalBet[_token]-totalBetPerChoice[_token][_choice]).mul(9).div(10).div(totalBetPerChoice[_token][_choice]);
                res[1] = userBal.mul(totalBet[_token]-totalBetPerChoice[_token][_choice]).div(10).div(totalBetPerChoice[_token][_choice]);
            }
        }
        // If the token is WCI, there is no tax.
        else if (_token == TOKENTYPE.WCI) {
            res[0] = totalBet[_token].mul(userBal).div(totalBetPerChoice[_token][_choice]);
        }

        return res;
    }

    /*
    * @Function to calculate earning for given player and token.
    */
    function calcEarning(address _player, TOKENTYPE _token) external override view onlyOwner returns (uint256[] memory) {
        uint256[] memory res = new uint256[](3);
        res[0] = calculateEarning(_player, CHOICE.WIN, _token)[0];
        res[1] = calculateEarning(_player, CHOICE.DRAW, _token)[0];
        res[2] = calculateEarning(_player, CHOICE.LOSE, _token)[0];
        return res;
    }

    // Calculate how many times reward will player take. It uses 10% tax formula to give users the approximate multiplier before bet.
    function calculateMultiplier(CHOICE _choice, IBettingPair.TOKENTYPE _token) internal view returns (uint256) {
        if (_token == IBettingPair.TOKENTYPE.ETH) {
            if (totalBetPerChoice[_token][_choice] == 0) {
                return 1000;
            } else {
                return totalBet[_token].mul(900).div(totalBetPerChoice[_token][_choice]) + 100;       
            }
        } else {
            if (totalBetPerChoice[_token][_choice] == 0) {
                return 980;
            } else {
                return totalBet[_token].mul(1000).div(totalBetPerChoice[_token][_choice]);
            }
        }
    }

    /*
    * @Function to calculate multiplier.
    */
    function calcMultiplier(IBettingPair.TOKENTYPE _token) external override view onlyOwner returns (uint256[] memory) {
        uint256[] memory res = new uint256[](3);
        res[0] = calculateMultiplier(CHOICE.WIN, _token);
        res[1] = calculateMultiplier(CHOICE.DRAW, _token);
        res[2] = calculateMultiplier(CHOICE.LOSE, _token);
        return res;
    }

    /*
    * @Function to get player bet amount.
    * @It uses betHistory variable because players variable is initialized to zero if user claims.
    */
    function getPlayerBetAmount(address _player, TOKENTYPE _token) external override view onlyOwner returns (uint256[] memory) {
        uint256[] memory arr = new uint256[](3);
        arr[0] = betHistory[_player][_token][CHOICE.WIN];
        arr[1] = betHistory[_player][_token][CHOICE.DRAW];
        arr[2] = betHistory[_player][_token][CHOICE.LOSE];

        return arr;
    }

    /*
    * @Function to get player claim history.
    */
    function getPlayerClaimHistory(address _player, TOKENTYPE _token) external override view onlyOwner returns (uint256) {
        return claimHistory[_player][_token];
    }

    /*
    * @Function to get bet result.
    */
    function getBetResult() external view override onlyOwner returns (CHOICE) {
        return betResult;
    }

    /*
    * @Function to set the bet result.
    */
    function setBetResult(CHOICE _result) external override onlyOwner {
        betResult = _result;
        betStatus = BETSTATUS.CLAIMING;
    }

    /*
    * @Function to get bet status.
    */
    function getBetStatus() external view override onlyOwner returns (BETSTATUS) {
        return betStatus;
    }

    /*
    * @Function to set bet status.
    */
    function setBetStatus(BETSTATUS _status) external override onlyOwner {
        betStatus = _status;
    }

    /*
    * @Function to get total bet amount.
    */
    function getTotalBet(TOKENTYPE _token) external view override onlyOwner returns (uint256) {
        return totalBet[_token];
    }

    /*
    * @Function to get total bet amounts per choice.
    * @There are 3 choices(WIN, DRAW, LOSE) so it returns an array of 3 elements.
    */
    function getTotalBetPerChoice(TOKENTYPE _token) external view override onlyOwner returns (uint256[] memory) {
        uint256[] memory arr = new uint256[](3);
        arr[0] = totalBetPerChoice[_token][CHOICE.WIN];
        arr[1] = totalBetPerChoice[_token][CHOICE.DRAW];
        arr[2] = totalBetPerChoice[_token][CHOICE.LOSE];

        return arr;
    }

    /*
    * @Function to get WCI token threshold.
    */
    function getWciTokenThreshold() external view override onlyOwner returns (uint256) {
        return wciTokenThreshold;
    }

    /*
    * @Function to set WCI token threshold.
    */
    function setWciTokenThreshold(uint256 _threshold) external override onlyOwner {
        wciTokenThreshold = _threshold;
    }
}

// File: contracts\BettingRouter.sol


pragma solidity ^0.8.13;
contract BettingRouter is Ownable {
    using SafeMath for uint256;

    mapping (uint256 => address) pairs; // All pair contract addresses
    uint256 matchId;
    address taxCollectorAddress = 0xC9dc42525637a96Ac978C81e35f059201c5039c8;        // Tax collector address
    uint256 totalClaimEth;
    uint256 totalClaimWci;
    uint256 totalWinnerCountEth;
    uint256 totalWinnerCountWci;
    uint256 wciTax = 2;

    IERC20 wciToken = IERC20(0xC5a9BC46A7dbe1c6dE493E84A18f02E70E2c5A32);

    constructor() {}

    /*
    * @Check if the input pair id is valid
    */
    modifier onlyValidPair(uint256 _id) {
        require(_id >= 0 && _id < matchId, "Invalid pair id.");
        _;
    }

    /*
    * @Check if the amount condition meets per token
    */
    modifier betConditions(uint _amount, IBettingPair.TOKENTYPE _token) {
        if (_token == IBettingPair.TOKENTYPE.ETH) {
            require(_amount >= 0.01 ether, "Insuffisant amount, please increase your bet!");
        } else if (_token == IBettingPair.TOKENTYPE.WCI) {
            require(_amount >= 1000 gwei, "Insuffisant amount, please increase your bet!");
        }
        _;
    }

    /*
    * @Function to create one pair for a match
    */
    function createOne() public onlyOwner {
        BettingPair _pair = new BettingPair();
        pairs[matchId] = address(_pair);
        matchId ++;
    }

    /*
    * Function for betting with ethers.
    * This function should be separated from other betting function because this is payable function.
    */
    function betEther(uint256 _pairId, IBettingPair.CHOICE _choice) external payable
        onlyValidPair(_pairId)
        betConditions(msg.value, IBettingPair.TOKENTYPE.ETH)
    {
        IBettingPair(pairs[_pairId]).bet(msg.sender, msg.value, _choice, IBettingPair.TOKENTYPE.ETH);
    }

    /*
    * Function for betting with WCI.
    * This function should be separated from ETH and other tokens because this token's transferFrom function has default tax rate.
    */
    function betWCI(uint256 _pairId, uint256 _betAmount, IBettingPair.CHOICE _choice) external
        onlyValidPair(_pairId)
        betConditions(_betAmount, IBettingPair.TOKENTYPE.WCI)
    {
        wciToken.transferFrom(msg.sender, address(this), _betAmount);

        // Apply 5% tax to all bet amounts.
        IBettingPair(pairs[_pairId]).bet(msg.sender, _betAmount.mul(100-wciTax).div(100), _choice, IBettingPair.TOKENTYPE.WCI);
    }

    /*
    * @Function to claim earnings.
    */
    function claim(uint256 _pairId, IBettingPair.TOKENTYPE _token) external onlyValidPair(_pairId) {
        uint256[] memory claimInfo = IBettingPair(pairs[_pairId]).claim(msg.sender, _token);
        uint256 _amountClaim = claimInfo[0];
        uint256 _amountTax = claimInfo[1];
        require(_amountClaim > 0, "You do not have any profit in this bet");

        if (_token == IBettingPair.TOKENTYPE.ETH) {
            payable(msg.sender).transfer(_amountClaim);
            payable(taxCollectorAddress).transfer(_amountTax);
        } else if (_token == IBettingPair.TOKENTYPE.WCI) {
            wciToken.transfer(msg.sender, _amountClaim);
        }
        
        if (_token == IBettingPair.TOKENTYPE.ETH) {
            totalClaimEth += _amountClaim;
            totalWinnerCountEth ++;
        } else {
            totalClaimWci += _amountClaim;
            totalWinnerCountWci ++;
        }
    }

    /*
    * @Function to withdraw tokens from router contract.
    */
    function withdrawPFromRouter(uint256 _amount, IBettingPair.TOKENTYPE _token) external onlyOwner {
        if (_token == IBettingPair.TOKENTYPE.ETH) {
            payable(owner()).transfer(_amount);
        } else if (_token == IBettingPair.TOKENTYPE.WCI) {
            wciToken.transfer(owner(), _amount);
        }
    }

    /*
    * @Function to get player bet information with triple data per match(per player choice).
    * @There are 3 types of information - first part(1/3 of total) is player bet amount information.
        Second part(1/3 of total) is multiplier information. Third part(1/3 of total) is player earning information.
    * @These information were separated before but merged to one function because of capacity of contract.
    */
    function getBetTripleInformation(address _player, IBettingPair.TOKENTYPE _token) external view returns (uint256[] memory) {
        uint256[] memory res = new uint256[](matchId * 9);

        for (uint256 i=0; i<matchId; i++) {
            uint256[] memory oneAmount = IBettingPair(pairs[i]).getPlayerBetAmount(_player, _token);
            res[i*3] = oneAmount[0];
            res[i*3 + 1] = oneAmount[1];
            res[i*3 + 2] = oneAmount[2];

            uint256[] memory oneMultiplier = IBettingPair(pairs[i]).calcMultiplier(_token);
            res[matchId*3 + i*3] = oneMultiplier[0];
            res[matchId*3 + i*3 + 1] = oneMultiplier[1];
            res[matchId*3 + i*3 + 2] = oneMultiplier[2];

            uint256[] memory oneClaim = IBettingPair(pairs[i]).calcEarning(_player, _token);
            res[matchId*6 + i*3] = oneClaim[0];
            res[matchId*6 + i*3 + 1] = oneClaim[1];
            res[matchId*6 + i*3 + 2] = oneClaim[2];
        }
        
        return res;
    }

    /*
    * @Function to get player bet information with single data per match.
    */
    function getBetSingleInformation(address _player, IBettingPair.TOKENTYPE _token) external view returns (uint256[] memory) {
        uint256[] memory res = new uint256[](matchId * 4);

        for (uint256 i=0; i<matchId; i++) {
            res[i] = uint256(IBettingPair(pairs[i]).getBetStatus());
            res[matchId + i] = uint256(IBettingPair(pairs[i]).getBetResult());
            res[matchId*2 + i] = IBettingPair(pairs[i]).getPlayerClaimHistory(_player, _token);
            res[matchId*3 + i] = IBettingPair(pairs[i]).getTotalBet(_token);
        }

        return res;
    }

    /*
    * @Function to get the newly creating match id.
    */
    function getMatchId() external view returns (uint256) {
        return matchId;
    }

    /*
    * @Function to get tax collector address
    */
    function getTaxCollectorAddress() external view returns (address) {
        return taxCollectorAddress;
    }

    /*
    * @Function to get match status per token.
    * @This includes total claim amount and total winner count.
    */
    function getBetStatsData() external view returns (uint256, uint256, uint256, uint256) {
        return (totalClaimEth, totalWinnerCountEth, totalClaimWci, totalWinnerCountWci);
    }

    /*
    * @Function to set bet status data.
    * @This function is needed because we upgraded the smart contract for several times and each time we upgrade
    *   the smart contract, we need to set these values so that they can continue to count.
    */
    function setBetStatsData(uint256 _totalClaim, uint256 _totalWinnerCount, IBettingPair.TOKENTYPE _token) external onlyOwner {
        if (_token == IBettingPair.TOKENTYPE.ETH) {
            totalClaimEth = _totalClaim;
            totalWinnerCountEth = _totalWinnerCount;
        } else {
            totalClaimWci = _totalClaim;
            totalWinnerCountWci = _totalWinnerCount;
        }
    }

    /*
    * @Function to get WCI token threshold.
    * @Users tax rate(5% or 10%) will be controlled by this value.
    */
    function getWciTokenThreshold() external view returns (uint256) {
        if (matchId == 0) return 50000 * 10**9;
        else return IBettingPair(pairs[0]).getWciTokenThreshold();
    }

    /*
    * @Function to get WCI token tax amount.
    */
    function getWciTax() external view returns (uint256) {
        return wciTax;
    }

    /*
    * @Function to set WCI token tax amount.
    */
    function setWciTax(uint256 tax) external onlyOwner {
        require(tax >= 0 && tax < 100, "Tax should be between 0 and 100");
        wciTax = tax;
    }

    /*
    * @Function to set bet result.
    */
    function setBetResult(uint256 _pairId, IBettingPair.CHOICE _result) external onlyOwner onlyValidPair(_pairId) {
        IBettingPair(pairs[_pairId]).setBetResult(_result);
    }

    /*
    * @Function to set bet status.
    */
    function setBetStatus(uint256 _pairId, IBettingPair.BETSTATUS _status) external onlyValidPair(_pairId) {
        IBettingPair(pairs[_pairId]).setBetStatus(_status);
    }

    /*
    * @Function to set tax collector address.
    */
    function setTaxCollectorAddress(address _address) external onlyOwner {
        taxCollectorAddress = _address;
    }

    /*
    * @Function to set WCI token threshold.
    */
    function setWciTokenThreshold(uint256 _threshold) external onlyOwner {
        for (uint256 i=0; i<matchId; i++) {
            IBettingPair(pairs[i]).setWciTokenThreshold(_threshold);
        }
    }

    /*
    * @Function to deposit ETH.
    */
    function depositEth() external payable {
        require(msg.value >= 0.01 ether, "Minimum deposit amount is 0.01");
    }

    /*
    * @Function to deposit WCI
    */
    function depositWci(uint256 amount) external onlyOwner {
        require(amount >= 1000 * 10 ** 9, "Minimum deposit WCI amount is 1000");
        wciToken.transferFrom(msg.sender, address(this), amount);
    }

    /*
    * @Function to initiate the bets
    */
    function initiateBets(
        uint256 _pairId,
        address[] calldata _account,
        uint256[] calldata _playerWin, uint256[] calldata _playerDraw, uint256[] calldata _playerLose,
        uint256[] calldata _playerWinWci, uint256[] calldata _playerDrawWci, uint256[] calldata _playerLoseWci,
        uint256[] calldata _betHistoryWin, uint256[] calldata _betHistoryDraw, uint256[] calldata _betHistoryLose,
        uint256[] calldata _betHistoryWinWci, uint256[] calldata _betHistoryDrawWci, uint256[] calldata _betHistoryLoseWci,
        uint256[] calldata _claimHistory, uint256[] calldata _claimHistoryWci,
        uint256 _totalBet, uint256 _totalBetWci,
        uint256 _totalBetWin, uint256 _totalBetDraw, uint256 _totalBetLose,
        uint256 _totalBetWinWci, uint256 _totalBetDrawWci, uint256 _totalBetLoseWci,
        IBettingPair.BETSTATUS _status,
        IBettingPair.CHOICE _result
    ) external onlyValidPair(_pairId) onlyOwner {
        IBettingPair(pairs[_pairId]).setBetData(
            _account,
            _playerWin, _playerDraw, _playerLose,
            _playerWinWci, _playerDrawWci, _playerLoseWci,
            _betHistoryWin, _betHistoryDraw, _betHistoryLose,
            _betHistoryWinWci, _betHistoryDrawWci, _betHistoryLoseWci,
            _claimHistory, _claimHistoryWci,
            _totalBet, _totalBetWci,
            _totalBetWin, _totalBetDraw, _totalBetLose,
            _totalBetWinWci, _totalBetDrawWci, _totalBetLoseWci,
            _status,
            _result
        );
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "viaIR": true,
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "evmVersion": "byzantium"
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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"},{"inputs":[{"internalType":"uint256","name":"_pairId","type":"uint256"},{"internalType":"enum IBettingPair.CHOICE","name":"_choice","type":"uint8"}],"name":"betEther","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pairId","type":"uint256"},{"internalType":"uint256","name":"_betAmount","type":"uint256"},{"internalType":"enum IBettingPair.CHOICE","name":"_choice","type":"uint8"}],"name":"betWCI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pairId","type":"uint256"},{"internalType":"enum IBettingPair.TOKENTYPE","name":"_token","type":"uint8"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositWci","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_player","type":"address"},{"internalType":"enum IBettingPair.TOKENTYPE","name":"_token","type":"uint8"}],"name":"getBetSingleInformation","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetStatsData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_player","type":"address"},{"internalType":"enum IBettingPair.TOKENTYPE","name":"_token","type":"uint8"}],"name":"getBetTripleInformation","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMatchId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxCollectorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWciTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWciTokenThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pairId","type":"uint256"},{"internalType":"address[]","name":"_account","type":"address[]"},{"internalType":"uint256[]","name":"_playerWin","type":"uint256[]"},{"internalType":"uint256[]","name":"_playerDraw","type":"uint256[]"},{"internalType":"uint256[]","name":"_playerLose","type":"uint256[]"},{"internalType":"uint256[]","name":"_playerWinWci","type":"uint256[]"},{"internalType":"uint256[]","name":"_playerDrawWci","type":"uint256[]"},{"internalType":"uint256[]","name":"_playerLoseWci","type":"uint256[]"},{"internalType":"uint256[]","name":"_betHistoryWin","type":"uint256[]"},{"internalType":"uint256[]","name":"_betHistoryDraw","type":"uint256[]"},{"internalType":"uint256[]","name":"_betHistoryLose","type":"uint256[]"},{"internalType":"uint256[]","name":"_betHistoryWinWci","type":"uint256[]"},{"internalType":"uint256[]","name":"_betHistoryDrawWci","type":"uint256[]"},{"internalType":"uint256[]","name":"_betHistoryLoseWci","type":"uint256[]"},{"internalType":"uint256[]","name":"_claimHistory","type":"uint256[]"},{"internalType":"uint256[]","name":"_claimHistoryWci","type":"uint256[]"},{"internalType":"uint256","name":"_totalBet","type":"uint256"},{"internalType":"uint256","name":"_totalBetWci","type":"uint256"},{"internalType":"uint256","name":"_totalBetWin","type":"uint256"},{"internalType":"uint256","name":"_totalBetDraw","type":"uint256"},{"internalType":"uint256","name":"_totalBetLose","type":"uint256"},{"internalType":"uint256","name":"_totalBetWinWci","type":"uint256"},{"internalType":"uint256","name":"_totalBetDrawWci","type":"uint256"},{"internalType":"uint256","name":"_totalBetLoseWci","type":"uint256"},{"internalType":"enum IBettingPair.BETSTATUS","name":"_status","type":"uint8"},{"internalType":"enum IBettingPair.CHOICE","name":"_result","type":"uint8"}],"name":"initiateBets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pairId","type":"uint256"},{"internalType":"enum IBettingPair.CHOICE","name":"_result","type":"uint8"}],"name":"setBetResult","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalClaim","type":"uint256"},{"internalType":"uint256","name":"_totalWinnerCount","type":"uint256"},{"internalType":"enum IBettingPair.TOKENTYPE","name":"_token","type":"uint8"}],"name":"setBetStatsData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pairId","type":"uint256"},{"internalType":"enum IBettingPair.BETSTATUS","name":"_status","type":"uint8"}],"name":"setBetStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setTaxCollectorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setWciTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setWciTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"enum IBettingPair.TOKENTYPE","name":"_token","type":"uint8"}],"name":"withdrawPFromRouter","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080806040523461009c576000805433600160a060020a03198083168217845573c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a32939092600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a373c9dc42525637a96ac978c81e35f059201c5039c8816003541617600355600260085560095416176009556147eb90816100a28239f35b600080fdfe61042060405260043610156200001457600080fd5b60006102e0527c0100000000000000000000000000000000000000000000000000000000600035048062c8f4e314620016855780630c75bb3614620016495780630f8ea5e61462001581578063153dc182146200155e5780632d6f41fa14620014db5780632faf3ea61462001259578063382429c514620010c75780633c0fdb961462001008578063439370b11462000f9b5780634abecc461462000f2057806369356d471462000ed85780637f1bee231462000eac5780638da5cb5b1462000e81578063a6b2c2b21462000d5a578063c6d755d81462000c95578063d3610b6814620008f8578063d57bd3ba14620008d5578063dcf48b6c1462000887578063ead0ffd5146200085d578063ebae940b1462000736578063f109c099146200066d578063f2fde38b14620005895763f34b6634146200015357600080fd5b346200058257620001643662001d4e565b906002546009810292811593828104600914851715620004f3576200018c9094939462002161565b936102e05190836003810204600314851715948460068102046006141715945b848310620001c85760405180620001c4898262001d80565b0390f35b826102e051526001602052600160a060020a0360406102e051205416604051907f17a45cd7000000000000000000000000000000000000000000000000000000008252816102e051918180620002238a8960048401620020d2565b03915afa90811562000538576102e0519162000565575b506200024681620020f6565b5184600381020460031485151715620004f35762000268600386028a6200213f565b5262000274816200211d565b5190600385026001810110620004f357620002a2916200029b600160038802018b6200213f565b526200212e565b51600384026002810110620004f357620002c360026003860201896200213f565b52826102e051526001602052600160a060020a0360406102e05120541690604051917f170b381100000000000000000000000000000000000000000000000000000000835262000317600484018762001f7b565b826024816102e051935afa91821562000538576102e0519262000546575b506200034182620020f6565b5190620004f357620003656200035e600386026003890262002153565b896200213f565b5262000371816200211d565b519062000385600385026003880262002153565b91600183018311620004f3576200029b6001620003a494018a6200213f565b5194600095620003bb600385026003880262002153565b600281018111620004f3576002620003d59101896200213f565b52826102e051526001602052600160a060020a0360406102e05120541690604051917f888f8080000000000000000000000000000000000000000000000000000000008352826102e051918180620004328a8960048401620020d2565b03915afa91821562000538576102e0519262000510575b506200045582620020f6565b5190620004f357620004726200035e600386026006890262002153565b526200047e816200211d565b519062000492600385026006880262002153565b91600183018311620004f3576200029b6001620004b194018a6200213f565b51600092620004c7600382026006880262002153565b9160028301809311620004f357620004e4620004eb938a6200213f565b5262001e19565b9194620001ac565b60e060020a634e487b71026102e05152601160045260246102e051fd5b6200053091923d8091833e62000527818362001f34565b8101906200204f565b903862000449565b6040513d6102e051823e3d90fd5b6200055d91923d8091833e62000527818362001f34565b903862000335565b6200057b913d8091833e62000527818362001f34565b386200023a565b6102e05180fd5b34620005825760203660031901126200058257620005a662001d37565b620005b062001dbd565b600160a060020a03809116801562000600576102e05191825482600160a060020a03198216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b608460405160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b34620005825760403660031901126200058257602435600435600382101562000582576200069f600254821062001e42565b6102e0515260016020526102e051600160a060020a0360408220541690813b15620007335750604051917f6c5f66cf000000000000000000000000000000000000000000000000000000008352620006f78162001f57565b6004830152816024816102e05180945af1801562000538576200071c575b6102e05180f35b620007279062001f06565b6102e051801562000715575b80fd5b346200058257620007473662001d16565b6200075162001dbd565b60028110156200084057806200079657506102e05180808093600160a060020a038254168282156200078c575bf11562000538576102e05180f35b506108fc6200077e565b600114620007a6575b5062000715565b6009546102e08051546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101949094529051602092849260449284929091165af180156200053857156200079f57620008309060203d811162000838575b62000827818362001f34565b81019062001f89565b50806200079f565b503d6200081b565b60e060020a634e487b71026102e05152602160045260246102e051fd5b3462000582576102e05180600319360112620007335760206200087f62002199565b604051908152f35b3462000582576060366003190112620005825760243560043560443560028110156200058257620008b762001dbd565b620008c9576004556006556102e05180f35b60055560075562000715565b3462000582576102e0518060031936011262000733576020600854604051908152f35b346200058257620009093662001d4e565b600254906004820291801592818104600414841715620004f3576200092e9062002161565b936102e0515b8281106200094c5760405180620001c4888262001d80565b806102e05152600160205260046020600160a060020a0360406102e051205416604051928380927f1fa859e80000000000000000000000000000000000000000000000000000000082525afa90811562000538576102e0519162000c53575b50620009b78162001f57565b620009c382886200213f565b52806102e05152600160205260046020600160a060020a0360406102e051205416604051928380927f3f3a279d0000000000000000000000000000000000000000000000000000000082525afa90811562000538576102e0519162000c11575b5062000a2f8162001f57565b62000a4662000a3f838662002153565b886200213f565b52806102e051526001602052600160a060020a0360406102e051205416602060405180927f7901f7f5000000000000000000000000000000000000000000000000000000008252818062000a9f8a8960048401620020d2565b03915afa90811562000538576102e0519162000bd9575b50836002810204600214861715620004f35762000adb62000a3f836002870262002153565b52806102e0515260016020526020600160a060020a0360406102e051205416604051918280927f8c4d25e700000000000000000000000000000000000000000000000000000000825262000b33600483018a62001f7b565b60249384915afa91821562000538576102e0519262000b9a575b5084600381020460031487171562000b7f57509062000b7991620004e46200035e836003880262002153565b62000934565b60e060020a634e487b71026102e0515260116004526102e051fd5b9091506020813d60201162000bd0575b8162000bb96020938362001f34565b8101031262000bcb5751908862000b4d565b600080fd5b3d915062000baa565b90506020813d60201162000c08575b8162000bf76020938362001f34565b8101031262000bcb57518762000ab6565b3d915062000be8565b90506020813d60201162000c4a575b8162000c2f6020938362001f34565b81010312620005825751600381101562000582578762000a23565b3d915062000c20565b90506020813d60201162000c8c575b8162000c716020938362001f34565b810103126200058257516003811015620005825787620009ab565b3d915062000c62565b3462000582576102e05180600319360112620007335762000cb562001dbd565b60405161253c908181019181831067ffffffffffffffff84111762000d3d576200227a8239806102e05192039082f090811562000d3157506002546102e051526001602052600160a060020a0360406102e051209116600160a060020a031982541617905562000d2760025462001e19565b6002556102e05180f35b604051903d90823e3d90fd5b60e060020a634e487b71026102e05152604160045260246102e051fd5b3462000582576020366003190112620005825760043562000d7a62001dbd565b64e8d4a51000811062000e14576009546040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101929092526102e0516020918391606491839190600160a060020a03165af18015620005385762000df1576102e05180f35b62000e0c9060203d8111620008385762000827818362001f34565b508062000715565b608460405160e560020a62461bcd02815260206004820152602260248201527f4d696e696d756d206465706f7369742057434920616d6f756e7420697320313060448201527f30300000000000000000000000000000000000000000000000000000000000006064820152fd5b3462000582576102e051806003193601126200073357600160a060020a036020915416604051908152f35b3462000582576102e0518060031936011262000733576020600160a060020a0360035416604051908152f35b34620005825760203660031901126200058257600160a060020a0362000efd62001d37565b62000f0762001dbd565b16600160a060020a031960035416176003556102e05180f35b3462000582576020366003190112620005825760043562000f4062001dbd565b606481101562000f54576008556102e05180f35b606460405160e560020a62461bcd02815260206004820152601f60248201527f5461782073686f756c64206265206265747765656e203020616e6420313030006044820152fd5b6102e051806003193601126200073357662386f26fc10000341062000fc1576102e05180f35b606460405160e560020a62461bcd02815260206004820152601e60248201527f4d696e696d756d206465706f73697420616d6f756e7420697320302e303100006044820152fd5b620010133662001cf5565b9062001023600254821062001e42565b62001038662386f26fc1000034101562001e91565b6102e0515260016020526102e051600160a060020a0360408220541690813b15620007335750604051917f51afb3dd0000000000000000000000000000000000000000000000000000000083523360048401523460248401526200109c8162001f57565b604483015260006064830152816084816102e05180945af1801562000538576200071c576102e05180f35b3462000582576060366003190112620005825760443560243560043560038310156200058257620010fc600254821062001e42565b6200110f64e8d4a5100083101562001e91565b6009546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526102e051600160a060020a0393926020918391606491839188165af18015620005385762001236575b506102e0515260016020526102e051906040822054169160085460640391606483116200121c5750606491620011aa9162001fa3565b0491813b156200058257604051927f51afb3dd0000000000000000000000000000000000000000000000000000000084523360048501526024840152620011f18162001f57565b604483015260016064830152816084816102e05180945af1801562000538576200071c576102e05180f35b60e060020a634e487b71029052601160045260246102e051fd5b620012519060203d8111620008385762000827818362001f34565b508462001174565b3462000582576200126a3662001d16565b906200127a600254821062001e42565b6102e051526001602052600160a060020a03908160406102e05120541691604051927ee93d31000000000000000000000000000000000000000000000000000000008452836102e051918180620012d6873360048401620020d2565b03916102e051905af192831562000538576102e05193620014bc575b506200130a6200130284620020f6565b51936200211d565b5183156200144f576002831015918262000840578315938415620013bf57506102e051808080883382f1156200053857600354166102e0518083819493829493839415620013b5575bf11562000538575b6200084057156200138e57620013749060045462002153565b6004556200138460065462001e19565b6006556102e05180f35b6200139c9060055462002153565b600555620013ac60075462001e19565b60075562000715565b506108fc62001353565b92509050600160009214620013d6575b506200135b565b6009546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690526102e051909260209284926044928492165af18015620005385715620013cf57620014479060203d8111620008385762000827818362001f34565b5083620013cf565b608460405160e560020a62461bcd02815260206004820152602660248201527f596f7520646f206e6f74206861766520616e792070726f66697420696e20746860448201527f69732062657400000000000000000000000000000000000000000000000000006064820152fd5b620014d391933d8091833e62000527818362001f34565b9183620012f2565b346200058257620014ec3662001cf5565b90620014f762001dbd565b62001506600254821062001e42565b6102e0515260016020526102e051600160a060020a0360408220541690813b15620007335750604051917ff43c0eca000000000000000000000000000000000000000000000000000000008352620006f78162001f57565b3462000582576102e0518060031936011262000733576020600254604051908152f35b3462000582576020806003193601126200058257600435620015a262001dbd565b6102e0515b6002548110156200071557806102e05152600183526102e051600160a060020a0360408220541690813b15620007335750604051907f0f8ea5e6000000000000000000000000000000000000000000000000000000008252836004830152816024816102e05180945af18015620005385762001630575b506200162a9062001e19565b620015a7565b6200163b9062001f06565b6102e05180156200161e5780fd5b3462000582576102e051806003193601126200073357608060045460065460055460075491604051938452602084015260408301526060820152f35b3462000bcb5761034036600319011262000bcb5760243567ffffffffffffffff811162000bcb57620016bc90369060040162001cc2565b610300526102605260443567ffffffffffffffff811162000bcb57620016e790369060040162001cc2565b6101c05260c05260643567ffffffffffffffff811162000bcb576200171190369060040162001cc2565b610220526102405260843567ffffffffffffffff811162000bcb576200173c90369060040162001cc2565b6102a05260805260a43567ffffffffffffffff811162000bcb576200176690369060040162001cc2565b60c43567ffffffffffffffff811162000bcb576200178990369060040162001cc2565b9060e43567ffffffffffffffff811162000bcb57620017ad90369060040162001cc2565b6102c0529167ffffffffffffffff610104351162000bcb57620017d7366101043560040162001cc2565b6103c05260a05267ffffffffffffffff610124351162000bcb5762001803366101243560040162001cc2565b610340526101e05267ffffffffffffffff610144351162000bcb5762001830366101443560040162001cc2565b6101a0526101605267ffffffffffffffff610164351162000bcb576200185d366101643560040162001cc2565b610360526104005267ffffffffffffffff610184351162000bcb576200188a366101843560040162001cc2565b610380526101805267ffffffffffffffff6101a4351162000bcb57620018b7366101a43560040162001cc2565b610320526101405267ffffffffffffffff6101c4351162000bcb57620018e4366101c43560040162001cc2565b610120526103a05267ffffffffffffffff6101e4351162000bcb5762001911366101e43560040162001cc2565b60e05261020052600361030435101562000bcb57600361032435101562000bcb576002546200194560043591821062001e42565b6200194f62001dbd565b6102e0515260016020526102e051600160a060020a0360408220541680610100523b156200073357507fd89613ac00000000000000000000000000000000000000000000000000000000604051806103e052526103e0516103206004820152610324610300519101526103446103e051016102805261026051946102e051955b6103005187101562001a0e578035600160a060020a038116809103620005825760019160209161028051528161028051016102805201960195620019cf565b5062001b5062001b3162001b1262001af562001bcc9762001ad962001bad9862001b8e9862001ac262001b6f9962001bea9e6103e05160246003198261028051030191015262001aab62001a8e62001a70610280516101c05160c0516200223c565b6103e05160446003198284030191015261022051610240516200223c565b6103e0516064600319828403019101526102a0516080516200223c565b916103e0516084600319828603019101526200223c565b916103e05160a4600319828603019101526200223c565b906103e05160c4600319828503019101526102c051906200223c565b6103e05160e4600319828403019101526103c05160a0516200223c565b6103e05161010460031982840301910152610340516101e0516200223c565b6103e051610124600319828403019101526101a051610160516200223c565b6103e0516101446003198284030191015261036051610400516200223c565b6103e0516101646003198284030191015261038051610180516200223c565b6103e0516101846003198284030191015261032051610140516200223c565b6103e0516101a460031982840301910152610120516103a0516200223c565b6103e0516101c46003198284030191015260e051610200516200223c565b61020480356101e46103e0510152610224908135906103e0510152610244908135906103e0510152610264908135906103e0510152610284908135906103e05101526102a4908135906103e05101526102c4908135906103e05101526102e4908135906103e051015262001c616103043562001f57565b61030435906103e051015262001c7a6103243562001f57565b610324356103046103e05101526102e051906103e0518091038183610100515af18015620005385762001cae576102e05180f35b62001cbc6103e05162001f06565b62000715565b9181601f8401121562000bcb5782359167ffffffffffffffff831162000bcb5760208085019481850201011162000bcb57565b604090600319011262000bcb5760043590602435600381101562000bcb5790565b604090600319011262000bcb5760043590602435600281101562000bcb5790565b60043590600160a060020a038216820362000bcb57565b604090600319011262000bcb57600435600160a060020a038116810362000bcb5790602435600281101562000bcb5790565b6020908160408183019282815285518094520193019160005b82811062001da8575050505090565b83518552938101939281019260010162001d99565b600160a060020a0360005416330362001dd257565b606460405160e560020a62461bcd02815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600019811462001e295760010190565b60e060020a634e487b7102600052601160045260246000fd5b1562001e4a57565b606460405160e560020a62461bcd02815260206004820152601060248201527f496e76616c696420706169722069642e000000000000000000000000000000006044820152fd5b1562001e9957565b608460405160e560020a62461bcd02815260206004820152602d60248201527f496e737566666973616e7420616d6f756e742c20706c6561736520696e63726560448201527f61736520796f75722062657421000000000000000000000000000000000000006064820152fd5b67ffffffffffffffff811162001f1b57604052565b60e060020a634e487b7102600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111762001f1b57604052565b6003111562001f6257565b60e060020a634e487b7102600052602160045260246000fd5b90600282101562001f625752565b9081602091031262000bcb5751801515810362000bcb5790565b9081156200202f5780820291820480820362001e29570362001fc25790565b608460405160e560020a62461bcd02815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152fd5b5050600090565b67ffffffffffffffff811162001f1b5760208091020190565b602090818184031262000bcb5780519067ffffffffffffffff821162000bcb57019180601f8401121562000bcb5782516200208a8162002036565b936200209a604051958662001f34565b8185528380808701930282010192831162000bcb578301905b828210620020c2575050505090565b81518152908301908301620020b3565b916020620020f4929493600160a060020a036040820196168152019062001f7b565b565b805115620021045760200190565b60e060020a634e487b7102600052603260045260246000fd5b805160011015620021045760400190565b805160021015620021045760600190565b805182101562002104576020809202010190565b9190820180921162001e2957565b906200216d8262002036565b6200217c604051918262001f34565b82815280926200218f601f199162002036565b0190602036910137565b600254620021ab57652d79883d200090565b6000808052600160205260046020600160a060020a03604084205416604051928380927fead0ffd50000000000000000000000000000000000000000000000000000000082525afa91821562000d315780926200220757505090565b9091506020823d821162002233575b81620022256020938362001f34565b810103126200073357505190565b3d915062002216565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831162000bcb57602080930280928483013701019056fe6080806040523461008e576000805433600160a060020a03198083168217845573c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a32939092600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361ff0019600454166004556007541617600755652d79883d20006008556124a890816100948239f35b600080fdfe610460604052600436101561001357600080fd5b7c0100000000000000000000000000000000000000000000000000000000600035048062e93d31146111185780630f8ea5e6146110f7578063170b38111461107e57806317a45cd714610f905780631fa859e814610f5e5780633f3a279d14610f2c57806351afb3dd14610dd35780636c5f66cf14610d8a5780637901f7f514610d53578063888f808014610cd45780638c4d25e714610c9b5780638da5cb5b14610c74578063be6573bb14610c4d578063d89613ac14610300578063ead0ffd5146102da578063f2fde38b146101ff578063f43c0eca146101b65763f4b4b304146100fe57600080fd5b346101b15760203660031901126101b15760043560028110156101b1576101ad90610127611319565b610189604051916101378361141c565b60038352606036602085013761014c816113b1565b60008052602052604060002054610162846113ef565b5261016c816113b1565b6001600052602052604060002054610183846113fc565b526113b1565b60026000526020526040600020546101a08261140c565b526040519182918261128b565b0390f35b600080fd5b346101b15760203660031901126101b15760043560038110156101b157610200906101df611319565b6101e8816112c6565b60ff60045491169061ffff19161717600455600080f35b346101b15760203660031901126101b157610218611246565b610220611319565b600160a060020a0380911690811561026d5760005482600160a060020a0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b608460405160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b346101b15760003660031901126101b1576102f3611319565b6020600854604051908152f35b346101b1576103203660031901126101b15760043567ffffffffffffffff81116101b1576103329036906004016112e9565b6103a0526104205260243567ffffffffffffffff81116101b15761035a9036906004016112e9565b60a0526101005260443567ffffffffffffffff81116101b1576103819036906004016112e9565b610280526101e05260643567ffffffffffffffff81116101b1576103a99036906004016112e9565b6103c0526101a05260843567ffffffffffffffff81116101b1576103d19036906004016112e9565b6104005260e05267ffffffffffffffff60a435116101b1576103f83660a4356004016112e9565b610160526103205267ffffffffffffffff60c435116101b1576104203660c4356004016112e9565b6102c0526101205267ffffffffffffffff60e435116101b1576104483660e4356004016112e9565b610440526103e05267ffffffffffffffff61010435116101b15761047236610104356004016112e9565b610180526103005267ffffffffffffffff61012435116101b15761049c36610124356004016112e9565b610240526101405267ffffffffffffffff61014435116101b1576104c636610144356004016112e9565b60c0526101c05267ffffffffffffffff61016435116101b1576104ef36610164356004016112e9565b6102e0526102205267ffffffffffffffff61018435116101b15761051936610184356004016112e9565b610260526103605267ffffffffffffffff6101a435116101b157610543366101a4356004016112e9565b6102a05260805267ffffffffffffffff6101c435116101b15761056c366101c4356004016112e9565b610200526103405260036102e43510156101b15760036103043510156101b157610594611319565b6000610380525b6103a0516103805190811015610c4b576105bb9060a05161010051611374565b35600160a060020a036105e06105db610380516103a05161042051611374565b611384565b166000526001602052604060002060008052602052604060002060205260406000205561061761038051610280516101e051611374565b35600160a060020a036106376105db610380516103a05161042051611374565b16600052600160205260406000206000805260205260406000206001600052602052604060002055610673610380516103c0516101a051611374565b35600160a060020a036106936105db610380516103a05161042051611374565b166000526001602052604060002060008052602052604060002060026000526020526040600020556106ce610380516104005160e051611374565b35600160a060020a036106ee6105db610380516103a05161042051611374565b1660005260016020526040600020600160005260205260406000206000805260205260406000205561072a610380516101605161032051611374565b35600160a060020a0361074a6105db610380516103a05161042051611374565b166000526001602052604060002060016000526020526040600020602052604060002055610782610380516102c05161012051611374565b35600160a060020a036107a26105db610380516103a05161042051611374565b16600052600160205260406000206001600052602052604060002060026000526020526040600020556107df61038051610440516103e051611374565b35600160a060020a036107ff6105db610380516103a05161042051611374565b1660005260026020526040600020600080526020526040600020602052604060002055610836610380516101805161030051611374565b35600160a060020a036108566105db610380516103a05161042051611374565b16600052600260205260406000206000805260205260406000206001600052602052604060002055610892610380516102405161014051611374565b35600160a060020a036108b26105db610380516103a05161042051611374565b166000526002602052604060002060008052602052604060002060026000526020526040600020556108ed6103805160c0516101c051611374565b35600160a060020a0361090d6105db610380516103a05161042051611374565b16600052600260205260406000206001600052602052604060002060008052602052604060002055610949610380516102e05161022051611374565b35600160a060020a036109696105db610380516103a05161042051611374565b1660005260026020526040600020600160005260205260406000206020526040600020556109a1610380516102605161036051611374565b35600160a060020a036109c16105db610380516103a05161042051611374565b16600052600260205260406000206001600052602052604060002060026000526020526040600020556109fd610380516102a051608051611374565b35600160a060020a03610a1d6105db610380516103a05161042051611374565b166000526003602052604060002060008052602052604060002055610a4c610380516102005161034051611374565b35600160a060020a03610a6c6105db610380516103a05161042051611374565b1660009081526003602090815260408083206001845282528220929092556101e4357f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc55610204357f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b55610224357f25de49357469a04e2e0a55d7b7cd85100a918cf55d734f01066d3fdc0f7b9d3255610244357f7c836334d5ab49f854acdcda28542386b2e447238f01a7b550cf4b73e9b03dc555610264357f3c482f52128b8e7c79a8c64b5cb21db10ef8ac55884ff031453ef660972fabef55610284357f558e8cd53b467e9e56a1fc646b287819bef55e9e9b1cef531285b78fb892c6f5556102a4357f0f44af8394d12f4d2493817decf7ae460f4010dc707becaefcc522b156cf891455600290527f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3190526102c4357fc5ab4a74920faf8555678fb3de0a5cca786df401ae6d7a3376075739d60be5a455610bed6102e4356112c6565b600454610bfc610304356112c6565b61ffff19166102e4356101000261ff0016176103043560ff1617600455610380516000198114610c32576001016103805261059b565b60e060020a634e487b7102600052601160045260246000fd5b005b346101b15760003660031901126101b1576020600160a060020a0360075416604051908152f35b346101b15760003660031901126101b1576020600160a060020a0360005416604051908152f35b346101b15760203660031901126101b15760043560028110156101b157610ccb602091610cc6611319565b611398565b54604051908152f35b346101b1576101ad610d1c610d49610ceb3661125c565b610cf6939193611319565b60405193610d038561141c565b600385526060366020870137610d21610d1c838361149c565b6113ef565b51610d2b866113ef565b52610d39610d1c8383611824565b51610d43866113fc565b52611b2f565b516101a08261140c565b346101b1576020610ccb600160a060020a03610d6e3661125c565b9190610d78611319565b166000526003835260406000206113ca565b346101b15760203660031901126101b15760043560038110156101b157610daf611319565b610db8816112c6565b61ff006101006004549202169061ff00191617600455600080f35b346101b15760803660031901126101b157610dec611246565b602435906044359060038210156101b15760643560028110156101b157610e11611319565b60ff6101006004540416610e24816112c6565b610ee557600160a060020a03610ec192610e3d83611398565b610e488782546113e2565b9055610e53836113b1565b610e5c866112c6565b856000526020526040600020610e738782546113e2565b905516806000526001602052610e8d8260406000206113ca565b610e96856112c6565b846000526020526040600020610ead8682546113e2565b9055600052600260205260406000206113ca565b90610ecb816112c6565b600052602052610ee160406000209182546113e2565b9055005b606460405160e560020a62461bcd02815260206004820152601d60248201527f596f752063616e206e6f742062657420617420746869732074696d652e0000006044820152fd5b346101b15760003660031901126101b157610f45611319565b602060ff6004541660405190610f5a816112c6565b8152f35b346101b15760003660031901126101b157610f77611319565b602060ff610100600454041660405190610f5a816112c6565b346101b157610f9e3661125c565b90610fa7611319565b61103860405192610fb78461141c565b60038452600160a060020a0360209360603686880137168060005260028452610fe48260406000206113ca565b600080528452604060002054610ff9866113ef565b5280600052600284526110108260406000206113ca565b60016000528452604060002054611026866113fc565b526000526002835260406000206113ca565b9060026000525260406000205490805160021015611065576101ad9160608201526040519182918261128b565b60e060020a634e487b7102600052603260045260246000fd5b346101b15760203660031901126101b15760043560028110156101b1576101ad906110a7611319565b6110ee604051916110b78361141c565b6003835260603660208501376110cc8161223c565b6110d5846113ef565b526110df81612320565b6110e8846113fc565b526123c9565b6101a08261140c565b346101b15760203660031901126101b157611110611319565b600435600855005b346101b1576111263661125c565b61112e611319565b60045491600260ff610100850416611145816112c6565b036111ff576111e561115e8360ff6101ad961684611d88565b92600160a060020a03611170856113ef565b519316806000526020936003855261118c8360406000206113ca565b5580600052600184526111a38260406000206113ca565b6000805284526000604081205580600052600184526111c68260406000206113ca565b60016000528452600060408120556000526001835260406000206113ca565b90600260005252600060408120556040519182918261128b565b606460405160e560020a62461bcd02815260206004820152601f60248201527f596f752063616e206e6f7420636c61696d20617420746869732074696d652e006044820152fd5b60043590600160a060020a03821682036101b157565b60409060031901126101b157600435600160a060020a03811681036101b1579060243560028110156101b15790565b6020908160408183019282815285518094520193019160005b8281106112b2575050505090565b8351855293810193928101926001016112a4565b600311156112d057565b60e060020a634e487b7102600052602160045260246000fd5b9181601f840112156101b15782359167ffffffffffffffff83116101b1576020808501948185020101116101b157565b600160a060020a0360005416330361132d57565b606460405160e560020a62461bcd02815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b9190811015611065576020020190565b35600160a060020a03811681036101b15790565b60028110156112d0576000526005602052604060002090565b60028110156112d0576000526006602052604060002090565b9060028110156112d057600052602052604060002090565b91908201809211610c3257565b8051156110655760200190565b8051600110156110655760400190565b8051600210156110655760600190565b6080810190811067ffffffffffffffff82111761143857604052565b60e060020a634e487b7102600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761143857604052565b90601f8019910116810190811067ffffffffffffffff82111761143857604052565b91908203918211610c3257565b906040908151926114ac84611451565b600291828552602090843683880137600160a060020a03809316936000948086526001948585526114df848989206113ca565b878052855287872054906114f2856113b1565b88805286528888205461150486611398565b541480611801575b15611539575050611525939450855283528484206113ca565b90828052522054611535826113ef565b5290565b611542856113b1565b87895286528888205461155486611398565b5414806117de575b156115835750508552825284842061157491906113ca565b918352522054611535826113ef565b6115918597929394976113b1565b8789528652888820546115a386611398565b5414806117bb575b156115c557505050906115749185528383528585206113ca565b6115d68598969599979293996113b1565b868052855286862054156117af5784906007541693602488518096819360e060020a6370a0823102835260048301525afa9283156117a5578593611772575b5086101561175b57856117175750600854116116e9576116d060146116c96116dd9761169461168e8461167561167061166a8d61165b61165482611398565b54916113b1565b8d80528c528d8d20549061148f565b866121c0565b61215f565b0461167f8b6113b1565b898052885289892054906121e5565b826113e2565b61169d8b6113ef565b526116c36116aa89611398565b546116b48a6113b1565b8880528752888820549061148f565b906121c0565b04946113b1565b90828052522054906121e5565b611535826113fc565b90565b6116d0600a6116c96116dd9761169461168e8461167561171261166a8d61165b61165482611398565b6120c3565b90508414611728575b505050505090565b6116d06117416117479661173b87611398565b546121c0565b946113b1565b611750826113ef565b523880808080611720565b60248460e060020a634e487b710281526021600452fd5b9092508381813d831161179e575b61178a818361146d565b8101031261179a57519138611615565b8480fd5b503d611780565b86513d87823e3d90fd5b50505050505050505090565b508388528186526117ce858a8a206113ca565b87895286528888205415156115ab565b508288528686526117f1858a8a206113ca565b878952865288882054151561155c565b50828852868652611814858a8a206113ca565b888052865288882054151561150c565b9060409081519261183484611451565b600291828552602090843683880137600160a060020a0380931693600094808652600194858552611867848989206113ca565b8688528552878720549061187a856113b1565b88805286528888205461188c86611398565b541480611b0c575b156118ad575050611525939450855283528484206113ca565b6118b6856113b1565b8789528652888820546118c886611398565b541480611ae9575b156118e85750508552825284842061157491906113ca565b6118f68597929394976113b1565b87895286528888205461190886611398565b541480611ac6575b1561192a57505050906115749185528383528585206113ca565b61193b8598969493999792956113b1565b858752845286862054156117af5783906007541692602488518095819360e060020a6370a0823102835260048301525afa9182156117a5578592611a97575b5086101561175b5785611a575760085411611a2a57611a1e6014611a176116dd986119e861168e846119cf61167061166a8e8e8e8e8e6119c36119bc86611398565b54956113b1565b9183525220549061148f565b046119d98c6113b1565b898b5288528a8a2054906121e5565b6119f18c6113ef565b526116c36119fe8a611398565b54611a088b6113b1565b888a528752898920549061148f565b04956113b1565b918352522054906121e5565b611a1e600a611a176116dd986119e861168e846119cf61171261166a8e8e8e8e8e6119c36119bc86611398565b50818514611a69575b50505050505090565b611a1e611a7c611a829761173b88611398565b956113b1565b611a8b826113ef565b52388080808080611a60565b9091508281813d8311611abf575b611aaf818361146d565b8101031261179a5751903861197a565b503d611aa5565b50838852818652611ad9858a8a206113ca565b8789528652888820541515611910565b50828852868652611afc858a8a206113ca565b87895286528888205415156118d0565b50828852868652611b1f858a8a206113ca565b8880528652888820541515611894565b90604090815192611b3f84611451565b600291828552602090843683880137600160a060020a0380931693600094808652600194858552611b72848989206113ca565b83885285528787205490611b85856113b1565b888052865288882054611b9786611398565b541480611d65575b15611bb8575050611525939450855283528484206113ca565b611bc1856113b1565b878952865288882054611bd386611398565b541480611d42575b15611bf35750508552825284842061157491906113ca565b611c018597929394976113b1565b878952865288882054611c1386611398565b541480611d1f575b15611c3557505050906115749185528383528585206113ca565b611c4585989694939997956113b1565b858752845286862054156117af5783906007541692602488518095819360e060020a6370a0823102835260048301525afa9182156117a5578592611cf0575b5083871015611cd95786611cc8575060085411611a2a57611a1e6014611a176116dd986119e861168e846119cf61167061166a8e8e8e8e8e6119c36119bc86611398565b90508514611a695750505050505090565b60248560e060020a634e487b710281526021600452fd5b9091508281813d8311611d18575b611d08818361146d565b8101031261179a57519038611c84565b503d611cfe565b50838852818652611d32858a8a206113ca565b8789528652888820541515611c1b565b50828852868652611d55858a8a206113ca565b8789528652888820541515611bdb565b50828852868652611d78858a8a206113ca565b8880528652888820541515611b9f565b604091825193611d9785611451565b600290818652602091853684890137600160a060020a03809516600095818752600195868652611dc9858a8a206113ca565b611dd2826112c6565b81895286528888205491611de5866113b1565b898052875289892054611df787611398565b54148061207d575b15611e1957505050611525939450855283528484206113ca565b611e22866113b1565b888a52875289892054611e3487611398565b54148061205a575b15611e55575050508552825284842061157491906113ca565b611e64869892939495986113b1565b888a52875289892054611e7687611398565b541480612037575b15611e995750505050906115749185528383528585206113ca565b611eab86999795949a989293966113b1565b611eb4876112c6565b8688528552878720541561202a5784906007541693602489518096819360e060020a6370a0823102835260048301525afa928315612020578693611fed575b50871015611cd95786611fc9575060085411611f9c57611f876014611a176116dd98611f5e61168e84611f4b61167061166a8e8e8e8e8e611f366119bc86611398565b91611f40816112c6565b83525220549061148f565b04611f558c6113b1565b6119d98a6112c6565b611f678c6113ef565b526116c3611f748a611398565b54611f7e8b6113b1565b611a08896112c6565b91611f91816112c6565b8352522054906121e5565b611f87600a611a176116dd98611f5e61168e84611f4b61171261166a8e8e8e8e8e611f366119bc86611398565b90508514611fda5750505050505090565b611f87611a7c611a829761173b88611398565b9092508381813d8311612019575b612005818361146d565b8101031261201557519138611ef3565b8580fd5b503d611ffb565b87513d88823e3d90fd5b5050505050505050505090565b5084895281875261204a868b8b206113ca565b888a528752898920541515611e7e565b5083895287875261206d868b8b206113ca565b888a528752898920541515611e3c565b50838952878752612090868b8b206113ca565b8980528752898920541515611dff565b81156120aa570490565b60e060020a634e487b7102600052601260045260246000fd5b8015612159576009810290808204600903610c32576120e4600991836120a0565b036120ec5790565b608460405160e560020a62461bcd02815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152fd5b50600090565b8015612159576013810290808204601303610c32576120e4601391836120a0565b8015612159576103e8808202918083048203610c32576120e490836120a0565b801561215957610384808202918083048203610c32576120e490836120a0565b9081156121de57808202918083048203610c32576120e490836120a0565b5050600090565b9080156121f5576116e6916120a0565b606460405160e560020a62461bcd02815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152fd5b60028110156112d057806122c957612253816113b1565b906000918280526020526040822054156000146122725750506103e890565b8061229161228b6122856122a294611398565b546121a0565b916113b1565b8380526020526040832054906121e5565b90606482018092116122b2575090565b8060e060020a634e487b7102602492526011600452fd5b6122d2816113b1565b906000918280526020526040822054156000146122f15750506103d490565b60406116e69261231261230c61230685611398565b54612180565b936113b1565b8180526020522054906121e5565b60028110156112d0578061237c57612337816113b1565b90600091600183526020526040822054156000146123575750506103e890565b8061236a61228b6122856122a294611398565b600184526020526040832054906121e5565b612385816113b1565b6001600052602052604060002054156000146123a257506103d490565b806123b561228b6123066116e694611398565b6001600052602052604060002054906121e5565b60028110156112d05780612425576123e0816113b1565b90600091600283526020526040822054156000146124005750506103e890565b8061241361228b6122856122a294611398565b600284526020526040832054906121e5565b61242e816113b1565b60026000526020526040600020541560001461244b57506103d490565b8061245e61228b6123066116e694611398565b6002600052602052604060002054906121e556fea264697066735822122007193feb09e3e2ce9e5704b8a20d6c4ccc2f5ec3d458e49fd26acbfa054ea9e364736f6c63430008110033a2646970667358221220a357496d3e5ca4ce6c78d67df89113909dc4a34d23ecbfe3b51915605331fe3d64736f6c63430008110033

Deployed Bytecode

0x61042060405260043610156200001457600080fd5b60006102e0527c0100000000000000000000000000000000000000000000000000000000600035048062c8f4e314620016855780630c75bb3614620016495780630f8ea5e61462001581578063153dc182146200155e5780632d6f41fa14620014db5780632faf3ea61462001259578063382429c514620010c75780633c0fdb961462001008578063439370b11462000f9b5780634abecc461462000f2057806369356d471462000ed85780637f1bee231462000eac5780638da5cb5b1462000e81578063a6b2c2b21462000d5a578063c6d755d81462000c95578063d3610b6814620008f8578063d57bd3ba14620008d5578063dcf48b6c1462000887578063ead0ffd5146200085d578063ebae940b1462000736578063f109c099146200066d578063f2fde38b14620005895763f34b6634146200015357600080fd5b346200058257620001643662001d4e565b906002546009810292811593828104600914851715620004f3576200018c9094939462002161565b936102e05190836003810204600314851715948460068102046006141715945b848310620001c85760405180620001c4898262001d80565b0390f35b826102e051526001602052600160a060020a0360406102e051205416604051907f17a45cd7000000000000000000000000000000000000000000000000000000008252816102e051918180620002238a8960048401620020d2565b03915afa90811562000538576102e0519162000565575b506200024681620020f6565b5184600381020460031485151715620004f35762000268600386028a6200213f565b5262000274816200211d565b5190600385026001810110620004f357620002a2916200029b600160038802018b6200213f565b526200212e565b51600384026002810110620004f357620002c360026003860201896200213f565b52826102e051526001602052600160a060020a0360406102e05120541690604051917f170b381100000000000000000000000000000000000000000000000000000000835262000317600484018762001f7b565b826024816102e051935afa91821562000538576102e0519262000546575b506200034182620020f6565b5190620004f357620003656200035e600386026003890262002153565b896200213f565b5262000371816200211d565b519062000385600385026003880262002153565b91600183018311620004f3576200029b6001620003a494018a6200213f565b5194600095620003bb600385026003880262002153565b600281018111620004f3576002620003d59101896200213f565b52826102e051526001602052600160a060020a0360406102e05120541690604051917f888f8080000000000000000000000000000000000000000000000000000000008352826102e051918180620004328a8960048401620020d2565b03915afa91821562000538576102e0519262000510575b506200045582620020f6565b5190620004f357620004726200035e600386026006890262002153565b526200047e816200211d565b519062000492600385026006880262002153565b91600183018311620004f3576200029b6001620004b194018a6200213f565b51600092620004c7600382026006880262002153565b9160028301809311620004f357620004e4620004eb938a6200213f565b5262001e19565b9194620001ac565b60e060020a634e487b71026102e05152601160045260246102e051fd5b6200053091923d8091833e62000527818362001f34565b8101906200204f565b903862000449565b6040513d6102e051823e3d90fd5b6200055d91923d8091833e62000527818362001f34565b903862000335565b6200057b913d8091833e62000527818362001f34565b386200023a565b6102e05180fd5b34620005825760203660031901126200058257620005a662001d37565b620005b062001dbd565b600160a060020a03809116801562000600576102e05191825482600160a060020a03198216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b608460405160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b34620005825760403660031901126200058257602435600435600382101562000582576200069f600254821062001e42565b6102e0515260016020526102e051600160a060020a0360408220541690813b15620007335750604051917f6c5f66cf000000000000000000000000000000000000000000000000000000008352620006f78162001f57565b6004830152816024816102e05180945af1801562000538576200071c575b6102e05180f35b620007279062001f06565b6102e051801562000715575b80fd5b346200058257620007473662001d16565b6200075162001dbd565b60028110156200084057806200079657506102e05180808093600160a060020a038254168282156200078c575bf11562000538576102e05180f35b506108fc6200077e565b600114620007a6575b5062000715565b6009546102e08051546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101949094529051602092849260449284929091165af180156200053857156200079f57620008309060203d811162000838575b62000827818362001f34565b81019062001f89565b50806200079f565b503d6200081b565b60e060020a634e487b71026102e05152602160045260246102e051fd5b3462000582576102e05180600319360112620007335760206200087f62002199565b604051908152f35b3462000582576060366003190112620005825760243560043560443560028110156200058257620008b762001dbd565b620008c9576004556006556102e05180f35b60055560075562000715565b3462000582576102e0518060031936011262000733576020600854604051908152f35b346200058257620009093662001d4e565b600254906004820291801592818104600414841715620004f3576200092e9062002161565b936102e0515b8281106200094c5760405180620001c4888262001d80565b806102e05152600160205260046020600160a060020a0360406102e051205416604051928380927f1fa859e80000000000000000000000000000000000000000000000000000000082525afa90811562000538576102e0519162000c53575b50620009b78162001f57565b620009c382886200213f565b52806102e05152600160205260046020600160a060020a0360406102e051205416604051928380927f3f3a279d0000000000000000000000000000000000000000000000000000000082525afa90811562000538576102e0519162000c11575b5062000a2f8162001f57565b62000a4662000a3f838662002153565b886200213f565b52806102e051526001602052600160a060020a0360406102e051205416602060405180927f7901f7f5000000000000000000000000000000000000000000000000000000008252818062000a9f8a8960048401620020d2565b03915afa90811562000538576102e0519162000bd9575b50836002810204600214861715620004f35762000adb62000a3f836002870262002153565b52806102e0515260016020526020600160a060020a0360406102e051205416604051918280927f8c4d25e700000000000000000000000000000000000000000000000000000000825262000b33600483018a62001f7b565b60249384915afa91821562000538576102e0519262000b9a575b5084600381020460031487171562000b7f57509062000b7991620004e46200035e836003880262002153565b62000934565b60e060020a634e487b71026102e0515260116004526102e051fd5b9091506020813d60201162000bd0575b8162000bb96020938362001f34565b8101031262000bcb5751908862000b4d565b600080fd5b3d915062000baa565b90506020813d60201162000c08575b8162000bf76020938362001f34565b8101031262000bcb57518762000ab6565b3d915062000be8565b90506020813d60201162000c4a575b8162000c2f6020938362001f34565b81010312620005825751600381101562000582578762000a23565b3d915062000c20565b90506020813d60201162000c8c575b8162000c716020938362001f34565b810103126200058257516003811015620005825787620009ab565b3d915062000c62565b3462000582576102e05180600319360112620007335762000cb562001dbd565b60405161253c908181019181831067ffffffffffffffff84111762000d3d576200227a8239806102e05192039082f090811562000d3157506002546102e051526001602052600160a060020a0360406102e051209116600160a060020a031982541617905562000d2760025462001e19565b6002556102e05180f35b604051903d90823e3d90fd5b60e060020a634e487b71026102e05152604160045260246102e051fd5b3462000582576020366003190112620005825760043562000d7a62001dbd565b64e8d4a51000811062000e14576009546040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101929092526102e0516020918391606491839190600160a060020a03165af18015620005385762000df1576102e05180f35b62000e0c9060203d8111620008385762000827818362001f34565b508062000715565b608460405160e560020a62461bcd02815260206004820152602260248201527f4d696e696d756d206465706f7369742057434920616d6f756e7420697320313060448201527f30300000000000000000000000000000000000000000000000000000000000006064820152fd5b3462000582576102e051806003193601126200073357600160a060020a036020915416604051908152f35b3462000582576102e0518060031936011262000733576020600160a060020a0360035416604051908152f35b34620005825760203660031901126200058257600160a060020a0362000efd62001d37565b62000f0762001dbd565b16600160a060020a031960035416176003556102e05180f35b3462000582576020366003190112620005825760043562000f4062001dbd565b606481101562000f54576008556102e05180f35b606460405160e560020a62461bcd02815260206004820152601f60248201527f5461782073686f756c64206265206265747765656e203020616e6420313030006044820152fd5b6102e051806003193601126200073357662386f26fc10000341062000fc1576102e05180f35b606460405160e560020a62461bcd02815260206004820152601e60248201527f4d696e696d756d206465706f73697420616d6f756e7420697320302e303100006044820152fd5b620010133662001cf5565b9062001023600254821062001e42565b62001038662386f26fc1000034101562001e91565b6102e0515260016020526102e051600160a060020a0360408220541690813b15620007335750604051917f51afb3dd0000000000000000000000000000000000000000000000000000000083523360048401523460248401526200109c8162001f57565b604483015260006064830152816084816102e05180945af1801562000538576200071c576102e05180f35b3462000582576060366003190112620005825760443560243560043560038310156200058257620010fc600254821062001e42565b6200110f64e8d4a5100083101562001e91565b6009546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526102e051600160a060020a0393926020918391606491839188165af18015620005385762001236575b506102e0515260016020526102e051906040822054169160085460640391606483116200121c5750606491620011aa9162001fa3565b0491813b156200058257604051927f51afb3dd0000000000000000000000000000000000000000000000000000000084523360048501526024840152620011f18162001f57565b604483015260016064830152816084816102e05180945af1801562000538576200071c576102e05180f35b60e060020a634e487b71029052601160045260246102e051fd5b620012519060203d8111620008385762000827818362001f34565b508462001174565b3462000582576200126a3662001d16565b906200127a600254821062001e42565b6102e051526001602052600160a060020a03908160406102e05120541691604051927ee93d31000000000000000000000000000000000000000000000000000000008452836102e051918180620012d6873360048401620020d2565b03916102e051905af192831562000538576102e05193620014bc575b506200130a6200130284620020f6565b51936200211d565b5183156200144f576002831015918262000840578315938415620013bf57506102e051808080883382f1156200053857600354166102e0518083819493829493839415620013b5575bf11562000538575b6200084057156200138e57620013749060045462002153565b6004556200138460065462001e19565b6006556102e05180f35b6200139c9060055462002153565b600555620013ac60075462001e19565b60075562000715565b506108fc62001353565b92509050600160009214620013d6575b506200135b565b6009546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690526102e051909260209284926044928492165af18015620005385715620013cf57620014479060203d8111620008385762000827818362001f34565b5083620013cf565b608460405160e560020a62461bcd02815260206004820152602660248201527f596f7520646f206e6f74206861766520616e792070726f66697420696e20746860448201527f69732062657400000000000000000000000000000000000000000000000000006064820152fd5b620014d391933d8091833e62000527818362001f34565b9183620012f2565b346200058257620014ec3662001cf5565b90620014f762001dbd565b62001506600254821062001e42565b6102e0515260016020526102e051600160a060020a0360408220541690813b15620007335750604051917ff43c0eca000000000000000000000000000000000000000000000000000000008352620006f78162001f57565b3462000582576102e0518060031936011262000733576020600254604051908152f35b3462000582576020806003193601126200058257600435620015a262001dbd565b6102e0515b6002548110156200071557806102e05152600183526102e051600160a060020a0360408220541690813b15620007335750604051907f0f8ea5e6000000000000000000000000000000000000000000000000000000008252836004830152816024816102e05180945af18015620005385762001630575b506200162a9062001e19565b620015a7565b6200163b9062001f06565b6102e05180156200161e5780fd5b3462000582576102e051806003193601126200073357608060045460065460055460075491604051938452602084015260408301526060820152f35b3462000bcb5761034036600319011262000bcb5760243567ffffffffffffffff811162000bcb57620016bc90369060040162001cc2565b610300526102605260443567ffffffffffffffff811162000bcb57620016e790369060040162001cc2565b6101c05260c05260643567ffffffffffffffff811162000bcb576200171190369060040162001cc2565b610220526102405260843567ffffffffffffffff811162000bcb576200173c90369060040162001cc2565b6102a05260805260a43567ffffffffffffffff811162000bcb576200176690369060040162001cc2565b60c43567ffffffffffffffff811162000bcb576200178990369060040162001cc2565b9060e43567ffffffffffffffff811162000bcb57620017ad90369060040162001cc2565b6102c0529167ffffffffffffffff610104351162000bcb57620017d7366101043560040162001cc2565b6103c05260a05267ffffffffffffffff610124351162000bcb5762001803366101243560040162001cc2565b610340526101e05267ffffffffffffffff610144351162000bcb5762001830366101443560040162001cc2565b6101a0526101605267ffffffffffffffff610164351162000bcb576200185d366101643560040162001cc2565b610360526104005267ffffffffffffffff610184351162000bcb576200188a366101843560040162001cc2565b610380526101805267ffffffffffffffff6101a4351162000bcb57620018b7366101a43560040162001cc2565b610320526101405267ffffffffffffffff6101c4351162000bcb57620018e4366101c43560040162001cc2565b610120526103a05267ffffffffffffffff6101e4351162000bcb5762001911366101e43560040162001cc2565b60e05261020052600361030435101562000bcb57600361032435101562000bcb576002546200194560043591821062001e42565b6200194f62001dbd565b6102e0515260016020526102e051600160a060020a0360408220541680610100523b156200073357507fd89613ac00000000000000000000000000000000000000000000000000000000604051806103e052526103e0516103206004820152610324610300519101526103446103e051016102805261026051946102e051955b6103005187101562001a0e578035600160a060020a038116809103620005825760019160209161028051528161028051016102805201960195620019cf565b5062001b5062001b3162001b1262001af562001bcc9762001ad962001bad9862001b8e9862001ac262001b6f9962001bea9e6103e05160246003198261028051030191015262001aab62001a8e62001a70610280516101c05160c0516200223c565b6103e05160446003198284030191015261022051610240516200223c565b6103e0516064600319828403019101526102a0516080516200223c565b916103e0516084600319828603019101526200223c565b916103e05160a4600319828603019101526200223c565b906103e05160c4600319828503019101526102c051906200223c565b6103e05160e4600319828403019101526103c05160a0516200223c565b6103e05161010460031982840301910152610340516101e0516200223c565b6103e051610124600319828403019101526101a051610160516200223c565b6103e0516101446003198284030191015261036051610400516200223c565b6103e0516101646003198284030191015261038051610180516200223c565b6103e0516101846003198284030191015261032051610140516200223c565b6103e0516101a460031982840301910152610120516103a0516200223c565b6103e0516101c46003198284030191015260e051610200516200223c565b61020480356101e46103e0510152610224908135906103e0510152610244908135906103e0510152610264908135906103e0510152610284908135906103e05101526102a4908135906103e05101526102c4908135906103e05101526102e4908135906103e051015262001c616103043562001f57565b61030435906103e051015262001c7a6103243562001f57565b610324356103046103e05101526102e051906103e0518091038183610100515af18015620005385762001cae576102e05180f35b62001cbc6103e05162001f06565b62000715565b9181601f8401121562000bcb5782359167ffffffffffffffff831162000bcb5760208085019481850201011162000bcb57565b604090600319011262000bcb5760043590602435600381101562000bcb5790565b604090600319011262000bcb5760043590602435600281101562000bcb5790565b60043590600160a060020a038216820362000bcb57565b604090600319011262000bcb57600435600160a060020a038116810362000bcb5790602435600281101562000bcb5790565b6020908160408183019282815285518094520193019160005b82811062001da8575050505090565b83518552938101939281019260010162001d99565b600160a060020a0360005416330362001dd257565b606460405160e560020a62461bcd02815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600019811462001e295760010190565b60e060020a634e487b7102600052601160045260246000fd5b1562001e4a57565b606460405160e560020a62461bcd02815260206004820152601060248201527f496e76616c696420706169722069642e000000000000000000000000000000006044820152fd5b1562001e9957565b608460405160e560020a62461bcd02815260206004820152602d60248201527f496e737566666973616e7420616d6f756e742c20706c6561736520696e63726560448201527f61736520796f75722062657421000000000000000000000000000000000000006064820152fd5b67ffffffffffffffff811162001f1b57604052565b60e060020a634e487b7102600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111762001f1b57604052565b6003111562001f6257565b60e060020a634e487b7102600052602160045260246000fd5b90600282101562001f625752565b9081602091031262000bcb5751801515810362000bcb5790565b9081156200202f5780820291820480820362001e29570362001fc25790565b608460405160e560020a62461bcd02815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152fd5b5050600090565b67ffffffffffffffff811162001f1b5760208091020190565b602090818184031262000bcb5780519067ffffffffffffffff821162000bcb57019180601f8401121562000bcb5782516200208a8162002036565b936200209a604051958662001f34565b8185528380808701930282010192831162000bcb578301905b828210620020c2575050505090565b81518152908301908301620020b3565b916020620020f4929493600160a060020a036040820196168152019062001f7b565b565b805115620021045760200190565b60e060020a634e487b7102600052603260045260246000fd5b805160011015620021045760400190565b805160021015620021045760600190565b805182101562002104576020809202010190565b9190820180921162001e2957565b906200216d8262002036565b6200217c604051918262001f34565b82815280926200218f601f199162002036565b0190602036910137565b600254620021ab57652d79883d200090565b6000808052600160205260046020600160a060020a03604084205416604051928380927fead0ffd50000000000000000000000000000000000000000000000000000000082525afa91821562000d315780926200220757505090565b9091506020823d821162002233575b81620022256020938362001f34565b810103126200073357505190565b3d915062002216565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831162000bcb57602080930280928483013701019056fe6080806040523461008e576000805433600160a060020a03198083168217845573c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a32939092600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361ff0019600454166004556007541617600755652d79883d20006008556124a890816100948239f35b600080fdfe610460604052600436101561001357600080fd5b7c0100000000000000000000000000000000000000000000000000000000600035048062e93d31146111185780630f8ea5e6146110f7578063170b38111461107e57806317a45cd714610f905780631fa859e814610f5e5780633f3a279d14610f2c57806351afb3dd14610dd35780636c5f66cf14610d8a5780637901f7f514610d53578063888f808014610cd45780638c4d25e714610c9b5780638da5cb5b14610c74578063be6573bb14610c4d578063d89613ac14610300578063ead0ffd5146102da578063f2fde38b146101ff578063f43c0eca146101b65763f4b4b304146100fe57600080fd5b346101b15760203660031901126101b15760043560028110156101b1576101ad90610127611319565b610189604051916101378361141c565b60038352606036602085013761014c816113b1565b60008052602052604060002054610162846113ef565b5261016c816113b1565b6001600052602052604060002054610183846113fc565b526113b1565b60026000526020526040600020546101a08261140c565b526040519182918261128b565b0390f35b600080fd5b346101b15760203660031901126101b15760043560038110156101b157610200906101df611319565b6101e8816112c6565b60ff60045491169061ffff19161717600455600080f35b346101b15760203660031901126101b157610218611246565b610220611319565b600160a060020a0380911690811561026d5760005482600160a060020a0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b608460405160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b346101b15760003660031901126101b1576102f3611319565b6020600854604051908152f35b346101b1576103203660031901126101b15760043567ffffffffffffffff81116101b1576103329036906004016112e9565b6103a0526104205260243567ffffffffffffffff81116101b15761035a9036906004016112e9565b60a0526101005260443567ffffffffffffffff81116101b1576103819036906004016112e9565b610280526101e05260643567ffffffffffffffff81116101b1576103a99036906004016112e9565b6103c0526101a05260843567ffffffffffffffff81116101b1576103d19036906004016112e9565b6104005260e05267ffffffffffffffff60a435116101b1576103f83660a4356004016112e9565b610160526103205267ffffffffffffffff60c435116101b1576104203660c4356004016112e9565b6102c0526101205267ffffffffffffffff60e435116101b1576104483660e4356004016112e9565b610440526103e05267ffffffffffffffff61010435116101b15761047236610104356004016112e9565b610180526103005267ffffffffffffffff61012435116101b15761049c36610124356004016112e9565b610240526101405267ffffffffffffffff61014435116101b1576104c636610144356004016112e9565b60c0526101c05267ffffffffffffffff61016435116101b1576104ef36610164356004016112e9565b6102e0526102205267ffffffffffffffff61018435116101b15761051936610184356004016112e9565b610260526103605267ffffffffffffffff6101a435116101b157610543366101a4356004016112e9565b6102a05260805267ffffffffffffffff6101c435116101b15761056c366101c4356004016112e9565b610200526103405260036102e43510156101b15760036103043510156101b157610594611319565b6000610380525b6103a0516103805190811015610c4b576105bb9060a05161010051611374565b35600160a060020a036105e06105db610380516103a05161042051611374565b611384565b166000526001602052604060002060008052602052604060002060205260406000205561061761038051610280516101e051611374565b35600160a060020a036106376105db610380516103a05161042051611374565b16600052600160205260406000206000805260205260406000206001600052602052604060002055610673610380516103c0516101a051611374565b35600160a060020a036106936105db610380516103a05161042051611374565b166000526001602052604060002060008052602052604060002060026000526020526040600020556106ce610380516104005160e051611374565b35600160a060020a036106ee6105db610380516103a05161042051611374565b1660005260016020526040600020600160005260205260406000206000805260205260406000205561072a610380516101605161032051611374565b35600160a060020a0361074a6105db610380516103a05161042051611374565b166000526001602052604060002060016000526020526040600020602052604060002055610782610380516102c05161012051611374565b35600160a060020a036107a26105db610380516103a05161042051611374565b16600052600160205260406000206001600052602052604060002060026000526020526040600020556107df61038051610440516103e051611374565b35600160a060020a036107ff6105db610380516103a05161042051611374565b1660005260026020526040600020600080526020526040600020602052604060002055610836610380516101805161030051611374565b35600160a060020a036108566105db610380516103a05161042051611374565b16600052600260205260406000206000805260205260406000206001600052602052604060002055610892610380516102405161014051611374565b35600160a060020a036108b26105db610380516103a05161042051611374565b166000526002602052604060002060008052602052604060002060026000526020526040600020556108ed6103805160c0516101c051611374565b35600160a060020a0361090d6105db610380516103a05161042051611374565b16600052600260205260406000206001600052602052604060002060008052602052604060002055610949610380516102e05161022051611374565b35600160a060020a036109696105db610380516103a05161042051611374565b1660005260026020526040600020600160005260205260406000206020526040600020556109a1610380516102605161036051611374565b35600160a060020a036109c16105db610380516103a05161042051611374565b16600052600260205260406000206001600052602052604060002060026000526020526040600020556109fd610380516102a051608051611374565b35600160a060020a03610a1d6105db610380516103a05161042051611374565b166000526003602052604060002060008052602052604060002055610a4c610380516102005161034051611374565b35600160a060020a03610a6c6105db610380516103a05161042051611374565b1660009081526003602090815260408083206001845282528220929092556101e4357f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc55610204357f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b55610224357f25de49357469a04e2e0a55d7b7cd85100a918cf55d734f01066d3fdc0f7b9d3255610244357f7c836334d5ab49f854acdcda28542386b2e447238f01a7b550cf4b73e9b03dc555610264357f3c482f52128b8e7c79a8c64b5cb21db10ef8ac55884ff031453ef660972fabef55610284357f558e8cd53b467e9e56a1fc646b287819bef55e9e9b1cef531285b78fb892c6f5556102a4357f0f44af8394d12f4d2493817decf7ae460f4010dc707becaefcc522b156cf891455600290527f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3190526102c4357fc5ab4a74920faf8555678fb3de0a5cca786df401ae6d7a3376075739d60be5a455610bed6102e4356112c6565b600454610bfc610304356112c6565b61ffff19166102e4356101000261ff0016176103043560ff1617600455610380516000198114610c32576001016103805261059b565b60e060020a634e487b7102600052601160045260246000fd5b005b346101b15760003660031901126101b1576020600160a060020a0360075416604051908152f35b346101b15760003660031901126101b1576020600160a060020a0360005416604051908152f35b346101b15760203660031901126101b15760043560028110156101b157610ccb602091610cc6611319565b611398565b54604051908152f35b346101b1576101ad610d1c610d49610ceb3661125c565b610cf6939193611319565b60405193610d038561141c565b600385526060366020870137610d21610d1c838361149c565b6113ef565b51610d2b866113ef565b52610d39610d1c8383611824565b51610d43866113fc565b52611b2f565b516101a08261140c565b346101b1576020610ccb600160a060020a03610d6e3661125c565b9190610d78611319565b166000526003835260406000206113ca565b346101b15760203660031901126101b15760043560038110156101b157610daf611319565b610db8816112c6565b61ff006101006004549202169061ff00191617600455600080f35b346101b15760803660031901126101b157610dec611246565b602435906044359060038210156101b15760643560028110156101b157610e11611319565b60ff6101006004540416610e24816112c6565b610ee557600160a060020a03610ec192610e3d83611398565b610e488782546113e2565b9055610e53836113b1565b610e5c866112c6565b856000526020526040600020610e738782546113e2565b905516806000526001602052610e8d8260406000206113ca565b610e96856112c6565b846000526020526040600020610ead8682546113e2565b9055600052600260205260406000206113ca565b90610ecb816112c6565b600052602052610ee160406000209182546113e2565b9055005b606460405160e560020a62461bcd02815260206004820152601d60248201527f596f752063616e206e6f742062657420617420746869732074696d652e0000006044820152fd5b346101b15760003660031901126101b157610f45611319565b602060ff6004541660405190610f5a816112c6565b8152f35b346101b15760003660031901126101b157610f77611319565b602060ff610100600454041660405190610f5a816112c6565b346101b157610f9e3661125c565b90610fa7611319565b61103860405192610fb78461141c565b60038452600160a060020a0360209360603686880137168060005260028452610fe48260406000206113ca565b600080528452604060002054610ff9866113ef565b5280600052600284526110108260406000206113ca565b60016000528452604060002054611026866113fc565b526000526002835260406000206113ca565b9060026000525260406000205490805160021015611065576101ad9160608201526040519182918261128b565b60e060020a634e487b7102600052603260045260246000fd5b346101b15760203660031901126101b15760043560028110156101b1576101ad906110a7611319565b6110ee604051916110b78361141c565b6003835260603660208501376110cc8161223c565b6110d5846113ef565b526110df81612320565b6110e8846113fc565b526123c9565b6101a08261140c565b346101b15760203660031901126101b157611110611319565b600435600855005b346101b1576111263661125c565b61112e611319565b60045491600260ff610100850416611145816112c6565b036111ff576111e561115e8360ff6101ad961684611d88565b92600160a060020a03611170856113ef565b519316806000526020936003855261118c8360406000206113ca565b5580600052600184526111a38260406000206113ca565b6000805284526000604081205580600052600184526111c68260406000206113ca565b60016000528452600060408120556000526001835260406000206113ca565b90600260005252600060408120556040519182918261128b565b606460405160e560020a62461bcd02815260206004820152601f60248201527f596f752063616e206e6f7420636c61696d20617420746869732074696d652e006044820152fd5b60043590600160a060020a03821682036101b157565b60409060031901126101b157600435600160a060020a03811681036101b1579060243560028110156101b15790565b6020908160408183019282815285518094520193019160005b8281106112b2575050505090565b8351855293810193928101926001016112a4565b600311156112d057565b60e060020a634e487b7102600052602160045260246000fd5b9181601f840112156101b15782359167ffffffffffffffff83116101b1576020808501948185020101116101b157565b600160a060020a0360005416330361132d57565b606460405160e560020a62461bcd02815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b9190811015611065576020020190565b35600160a060020a03811681036101b15790565b60028110156112d0576000526005602052604060002090565b60028110156112d0576000526006602052604060002090565b9060028110156112d057600052602052604060002090565b91908201809211610c3257565b8051156110655760200190565b8051600110156110655760400190565b8051600210156110655760600190565b6080810190811067ffffffffffffffff82111761143857604052565b60e060020a634e487b7102600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761143857604052565b90601f8019910116810190811067ffffffffffffffff82111761143857604052565b91908203918211610c3257565b906040908151926114ac84611451565b600291828552602090843683880137600160a060020a03809316936000948086526001948585526114df848989206113ca565b878052855287872054906114f2856113b1565b88805286528888205461150486611398565b541480611801575b15611539575050611525939450855283528484206113ca565b90828052522054611535826113ef565b5290565b611542856113b1565b87895286528888205461155486611398565b5414806117de575b156115835750508552825284842061157491906113ca565b918352522054611535826113ef565b6115918597929394976113b1565b8789528652888820546115a386611398565b5414806117bb575b156115c557505050906115749185528383528585206113ca565b6115d68598969599979293996113b1565b868052855286862054156117af5784906007541693602488518096819360e060020a6370a0823102835260048301525afa9283156117a5578593611772575b5086101561175b57856117175750600854116116e9576116d060146116c96116dd9761169461168e8461167561167061166a8d61165b61165482611398565b54916113b1565b8d80528c528d8d20549061148f565b866121c0565b61215f565b0461167f8b6113b1565b898052885289892054906121e5565b826113e2565b61169d8b6113ef565b526116c36116aa89611398565b546116b48a6113b1565b8880528752888820549061148f565b906121c0565b04946113b1565b90828052522054906121e5565b611535826113fc565b90565b6116d0600a6116c96116dd9761169461168e8461167561171261166a8d61165b61165482611398565b6120c3565b90508414611728575b505050505090565b6116d06117416117479661173b87611398565b546121c0565b946113b1565b611750826113ef565b523880808080611720565b60248460e060020a634e487b710281526021600452fd5b9092508381813d831161179e575b61178a818361146d565b8101031261179a57519138611615565b8480fd5b503d611780565b86513d87823e3d90fd5b50505050505050505090565b508388528186526117ce858a8a206113ca565b87895286528888205415156115ab565b508288528686526117f1858a8a206113ca565b878952865288882054151561155c565b50828852868652611814858a8a206113ca565b888052865288882054151561150c565b9060409081519261183484611451565b600291828552602090843683880137600160a060020a0380931693600094808652600194858552611867848989206113ca565b8688528552878720549061187a856113b1565b88805286528888205461188c86611398565b541480611b0c575b156118ad575050611525939450855283528484206113ca565b6118b6856113b1565b8789528652888820546118c886611398565b541480611ae9575b156118e85750508552825284842061157491906113ca565b6118f68597929394976113b1565b87895286528888205461190886611398565b541480611ac6575b1561192a57505050906115749185528383528585206113ca565b61193b8598969493999792956113b1565b858752845286862054156117af5783906007541692602488518095819360e060020a6370a0823102835260048301525afa9182156117a5578592611a97575b5086101561175b5785611a575760085411611a2a57611a1e6014611a176116dd986119e861168e846119cf61167061166a8e8e8e8e8e6119c36119bc86611398565b54956113b1565b9183525220549061148f565b046119d98c6113b1565b898b5288528a8a2054906121e5565b6119f18c6113ef565b526116c36119fe8a611398565b54611a088b6113b1565b888a528752898920549061148f565b04956113b1565b918352522054906121e5565b611a1e600a611a176116dd986119e861168e846119cf61171261166a8e8e8e8e8e6119c36119bc86611398565b50818514611a69575b50505050505090565b611a1e611a7c611a829761173b88611398565b956113b1565b611a8b826113ef565b52388080808080611a60565b9091508281813d8311611abf575b611aaf818361146d565b8101031261179a5751903861197a565b503d611aa5565b50838852818652611ad9858a8a206113ca565b8789528652888820541515611910565b50828852868652611afc858a8a206113ca565b87895286528888205415156118d0565b50828852868652611b1f858a8a206113ca565b8880528652888820541515611894565b90604090815192611b3f84611451565b600291828552602090843683880137600160a060020a0380931693600094808652600194858552611b72848989206113ca565b83885285528787205490611b85856113b1565b888052865288882054611b9786611398565b541480611d65575b15611bb8575050611525939450855283528484206113ca565b611bc1856113b1565b878952865288882054611bd386611398565b541480611d42575b15611bf35750508552825284842061157491906113ca565b611c018597929394976113b1565b878952865288882054611c1386611398565b541480611d1f575b15611c3557505050906115749185528383528585206113ca565b611c4585989694939997956113b1565b858752845286862054156117af5783906007541692602488518095819360e060020a6370a0823102835260048301525afa9182156117a5578592611cf0575b5083871015611cd95786611cc8575060085411611a2a57611a1e6014611a176116dd986119e861168e846119cf61167061166a8e8e8e8e8e6119c36119bc86611398565b90508514611a695750505050505090565b60248560e060020a634e487b710281526021600452fd5b9091508281813d8311611d18575b611d08818361146d565b8101031261179a57519038611c84565b503d611cfe565b50838852818652611d32858a8a206113ca565b8789528652888820541515611c1b565b50828852868652611d55858a8a206113ca565b8789528652888820541515611bdb565b50828852868652611d78858a8a206113ca565b8880528652888820541515611b9f565b604091825193611d9785611451565b600290818652602091853684890137600160a060020a03809516600095818752600195868652611dc9858a8a206113ca565b611dd2826112c6565b81895286528888205491611de5866113b1565b898052875289892054611df787611398565b54148061207d575b15611e1957505050611525939450855283528484206113ca565b611e22866113b1565b888a52875289892054611e3487611398565b54148061205a575b15611e55575050508552825284842061157491906113ca565b611e64869892939495986113b1565b888a52875289892054611e7687611398565b541480612037575b15611e995750505050906115749185528383528585206113ca565b611eab86999795949a989293966113b1565b611eb4876112c6565b8688528552878720541561202a5784906007541693602489518096819360e060020a6370a0823102835260048301525afa928315612020578693611fed575b50871015611cd95786611fc9575060085411611f9c57611f876014611a176116dd98611f5e61168e84611f4b61167061166a8e8e8e8e8e611f366119bc86611398565b91611f40816112c6565b83525220549061148f565b04611f558c6113b1565b6119d98a6112c6565b611f678c6113ef565b526116c3611f748a611398565b54611f7e8b6113b1565b611a08896112c6565b91611f91816112c6565b8352522054906121e5565b611f87600a611a176116dd98611f5e61168e84611f4b61171261166a8e8e8e8e8e611f366119bc86611398565b90508514611fda5750505050505090565b611f87611a7c611a829761173b88611398565b9092508381813d8311612019575b612005818361146d565b8101031261201557519138611ef3565b8580fd5b503d611ffb565b87513d88823e3d90fd5b5050505050505050505090565b5084895281875261204a868b8b206113ca565b888a528752898920541515611e7e565b5083895287875261206d868b8b206113ca565b888a528752898920541515611e3c565b50838952878752612090868b8b206113ca565b8980528752898920541515611dff565b81156120aa570490565b60e060020a634e487b7102600052601260045260246000fd5b8015612159576009810290808204600903610c32576120e4600991836120a0565b036120ec5790565b608460405160e560020a62461bcd02815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152fd5b50600090565b8015612159576013810290808204601303610c32576120e4601391836120a0565b8015612159576103e8808202918083048203610c32576120e490836120a0565b801561215957610384808202918083048203610c32576120e490836120a0565b9081156121de57808202918083048203610c32576120e490836120a0565b5050600090565b9080156121f5576116e6916120a0565b606460405160e560020a62461bcd02815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152fd5b60028110156112d057806122c957612253816113b1565b906000918280526020526040822054156000146122725750506103e890565b8061229161228b6122856122a294611398565b546121a0565b916113b1565b8380526020526040832054906121e5565b90606482018092116122b2575090565b8060e060020a634e487b7102602492526011600452fd5b6122d2816113b1565b906000918280526020526040822054156000146122f15750506103d490565b60406116e69261231261230c61230685611398565b54612180565b936113b1565b8180526020522054906121e5565b60028110156112d0578061237c57612337816113b1565b90600091600183526020526040822054156000146123575750506103e890565b8061236a61228b6122856122a294611398565b600184526020526040832054906121e5565b612385816113b1565b6001600052602052604060002054156000146123a257506103d490565b806123b561228b6123066116e694611398565b6001600052602052604060002054906121e5565b60028110156112d05780612425576123e0816113b1565b90600091600283526020526040822054156000146124005750506103e890565b8061241361228b6122856122a294611398565b600284526020526040832054906121e5565b61242e816113b1565b60026000526020526040600020541560001461244b57506103d490565b8061245e61228b6123066116e694611398565b6002600052602052604060002054906121e556fea264697066735822122007193feb09e3e2ce9e5704b8a20d6c4ccc2f5ec3d458e49fd26acbfa054ea9e364736f6c63430008110033a2646970667358221220a357496d3e5ca4ce6c78d67df89113909dc4a34d23ecbfe3b51915605331fe3d64736f6c63430008110033

Deployed Bytecode Sourcemap

24894:11124:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29422:7;24894:11124;29432:1;24894:11124;;;;;;;;;29432:1;24894:11124;;;;;;29408:26;;;;;;:::i;:::-;29452:11;24894:11124;29452:11;24894:11124;;29604:1;24894:11124;;;29604:1;24894:11124;;;;;;30093:1;24894:11124;;;30093:1;24894:11124;;;29447:786;29465:9;;;;;;24894:11124;;;;;;;:::i;:::-;;;;29476:3;24894:11124;;;;29538:5;24894:11124;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;29525:58;24894:11124;29525:58;;24894:11124;;;29525:58;;;;;;24894:11124;29525:58;;;:::i;:::-;;;;;;;;;;24894:11124;29525:58;;;;29476:3;29609:12;;;;:::i;:::-;24894:11124;;29604:1;24894:11124;;;29604:1;24894:11124;;;;;;;29598:23;29604:1;24894:11124;;29598:23;;:::i;:::-;24894:11124;29651:12;;;:::i;:::-;24894:11124;;29604:1;24894:11124;;29538:5;24894:11124;;-1:-1:-1;24894:11124:0;;29693:12;24894:11124;29636:27;29538:5;29604:1;24894:11124;;;29636:27;;:::i;:::-;24894:11124;29693:12;:::i;:::-;24894:11124;29604:1;24894:11124;;29422:7;24894:11124;;-1:-1:-1;24894:11124:0;;29678:27;29422:7;29604:1;24894:11124;;;29678:27;;:::i;:::-;24894:11124;;;;;29538:5;24894:11124;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;29755:45;24894:11124;29755:45;;24894:11124;;29755:45;;24894:11124;;:::i;:::-;;;;;;29755:45;;;;;;;;24894:11124;29755:45;;;;29476:3;29838:16;;;;:::i;:::-;24894:11124;;;;29815:39;29819:15;29604:1;24894:11124;;29604:1;24894:11124;;29819:15;:::i;:::-;29815:39;;:::i;:::-;24894:11124;29896:16;;;:::i;:::-;24894:11124;;29873:15;29604:1;24894:11124;;29604:1;24894:11124;;29873:15;:::i;:::-;24894:11124;29538:5;24894:11124;;;;;;29869:43;29538:5;29954:16;24894:11124;;29869:43;;:::i;29954:16::-;24894:11124;;;;29931:15;29604:1;24894:11124;;29604:1;24894:11124;;29931:15;:::i;:::-;29422:7;24894:11124;;;;;;29422:7;29927:43;24894:11124;;29927:43;;:::i;:::-;24894:11124;;;;;29538:5;24894:11124;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;30015:51;24894:11124;30015:51;;24894:11124;;;30015:51;;;;;;24894:11124;30015:51;;;:::i;:::-;;;;;;;;;;24894:11124;30015:51;;;;29476:3;30104:11;;;;:::i;:::-;24894:11124;;;;30081:34;30085:15;29604:1;24894:11124;;30093:1;24894:11124;;30085:15;:::i;30081:34::-;24894:11124;30157:11;;;:::i;:::-;24894:11124;;30134:15;29604:1;24894:11124;;30093:1;24894:11124;;30134:15;:::i;:::-;24894:11124;29538:5;24894:11124;;;;;;30130:38;29538:5;30210:11;24894:11124;;30130:38;;:::i;30210:11::-;24894:11124;;;30187:15;29604:1;24894:11124;;30093:1;24894:11124;;30187:15;:::i;:::-;24894:11124;29422:7;24894:11124;;;;;;;30183:38;29476:3;30183:38;;;:::i;:::-;24894:11124;29476:3;:::i;:::-;29452:11;;;;24894:11124;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;30015:51;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;24894:11124;;;;;;;;;;29755:45;;;;;;;;;;;;;:::i;:::-;;;;;29525:58;;;;;;;;;;;;:::i;:::-;;;;24894:11124;;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;;;:::i;:::-;1970:65;;:::i;:::-;-1:-1:-1;;;;;24894:11124:0;;;2657:22;;24894:11124;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;3072:40;;;;24894:11124;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;;;;;;;;;;;25534:54;25560:7;24894:11124;25554:13;;25534:54;:::i;:::-;24894:11124;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;33431:50;;;;;;24894:11124;;;33431:50;24894:11124;33431:50;;24894:11124;;;:::i;:::-;;33431:50;;24894:11124;;;;;;33431:50;;;;;;;;;;24894:11124;;;;;33431:50;;;;:::i;:::-;24894:11124;;;;33431:50;24894:11124;;;;;;;;;;;:::i;:::-;1970:65;;:::i;:::-;24894:11124;;;;;;28590:36;;;24894:11124;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;28643:34;;;;;28586:213;28643:34;;;;24894:11124;;;;28643:34;;;;;28586:213;24894:11124;28699:36;28695:104;;28586:213;;;;28695:104;28752:8;24894:11124;;;;;;;;28752:35;;-1:-1:-1;;;;;24894:11124:0;;;;28752:35;;24894:11124;;;;;;;;;;28752:35;;24894:11124;;;;;;;;;28752:35;;;;;;;28695:104;28752:35;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;28695:104;;28752:35;;;;;24894:11124;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;;;;;;;;;;;;;1970:65;;:::i;:::-;32042:36;;24894:11124;;32137:39;24894:11124;;;;;32038:264;32209:27;24894:11124;32251:39;24894:11124;32038:264;;24894:11124;;;;;;;;;;;;;;;32776:6;24894:11124;;;;;;;;;;;;;;:::i;:::-;30540:7;24894:11124;;;;;;;;;;;;;;;;;;;30526:26;;;:::i;:::-;30570:11;24894:11124;30570:11;30583:9;;;;;;24894:11124;;;;;;;:::i;30594:3::-;24894:11124;;;;30644:5;24894:11124;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;30631:37;;;;24894:11124;30631:37;;;;;;;;;24894:11124;30631:37;;;;30594:3;24894:11124;;;;:::i;:::-;30614:55;;;;:::i;:::-;24894:11124;;;;;30644:5;24894:11124;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;30711:37;;;;24894:11124;30711:37;;;;;;;;;24894:11124;30711:37;;;;30594:3;24894:11124;;;;:::i;:::-;30684:65;30688:11;;;;:::i;:::-;30684:65;;:::i;:::-;24894:11124;;;;;30644:5;24894:11124;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;30785:61;;24894:11124;30785:61;;;;;;;24894:11124;30785:61;;;:::i;:::-;;;;;;;;;;24894:11124;30785:61;;;;30594:3;24894:11124;;30540:7;24894:11124;;;30540:7;24894:11124;;;;;;30764:82;30768:13;24894:11124;30540:7;24894:11124;;30768:13;:::i;30764:82::-;24894:11124;;;;;30644:5;24894:11124;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;30882:42;;;;24894:11124;30882:42;;24894:11124;;30882:42;;24894:11124;;:::i;:::-;;30882:42;;;;;;;;;;24894:11124;30882:42;;;;30594:3;24894:11124;;30873:1;24894:11124;;;30873:1;24894:11124;;;;;;;;30594:3;24894:11124;30861:63;30865:13;24894:11124;30873:1;24894:11124;;30865:13;:::i;30594:3::-;30570:11;;24894:11124;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;30882:42;;;;24894:11124;30882:42;;24894:11124;30882:42;;;;;;24894:11124;30882:42;;;:::i;:::-;;;24894:11124;;;;;30882:42;;;;24894:11124;;;;30882:42;;;-1:-1:-1;30882:42:0;;30785:61;;;24894:11124;30785:61;;24894:11124;30785:61;;;;;;24894:11124;30785:61;;;:::i;:::-;;;24894:11124;;;;;30785:61;;;;;;-1:-1:-1;30785:61:0;;30711:37;;;24894:11124;30711:37;;24894:11124;30711:37;;;;;;24894:11124;30711:37;;;:::i;:::-;;;24894:11124;;;;;30873:1;24894:11124;;;;;30711:37;;;;;;-1:-1:-1;30711:37:0;;30631;;;24894:11124;30631:37;;24894:11124;30631:37;;;;;;24894:11124;30631:37;;;:::i;:::-;;;24894:11124;;;;;30873:1;24894:11124;;;;;30631:37;;;;;;-1:-1:-1;30631:37:0;;24894:11124;;;;;;;;;;;;;;1970:65;;:::i;:::-;24894:11124;;26226:17;;;;;;;;;;;;;;;;;;24894:11124;;;26226:17;;;;;;;;;;24894:11124;26260:7;24894:11124;;;;26254:5;24894:11124;;-1:-1:-1;;;;;24894:11124:0;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;26296:10;26260:7;24894:11124;26296:10;:::i;:::-;26260:7;24894:11124;;;;;26226:17;24894:11124;;;;;;;;;;26226:17;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;;;1970:65;;:::i;:::-;34271:14;34261:24;;24894:11124;;34335:8;24894:11124;;;;34335:56;;34357:10;24894:11124;34335:56;;24894:11124;34377:4;24894:11124;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;34335:56;;;;;;;;24894:11124;;;;34335:56;;;24894:11124;34335:56;;;;;;;;;:::i;:::-;;;;;24894:11124;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;-1:-1:-1;;;;;24894:11124:0;;:::i;:::-;1970:65;;:::i;:::-;24894:11124;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;;;1970:65;;:::i;:::-;32948:3;32942:9;;24894:11124;;;32998:12;24894:11124;;;;;;32948:3;24894:11124;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34078:10;34065:9;:23;24894:11124;;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25534:54;25560:7;24894:11124;25554:13;;25534:54;:::i;:::-;25822:79;25841:10;26618:9;25830:21;;25822:79;:::i;:::-;24894:11124;;;25542:8;24894:11124;;;;-1:-1:-1;;;;;24894:11124:0;;;;;26673:92;;;;;;24894:11124;;;26673:92;24894:11124;26673:92;;26706:10;24894:11124;26673:92;;24894:11124;26618:9;24894:11124;;;;;;;:::i;:::-;;;;;;;;;;;;;;;26673:92;;;;;;;;;;24894:11124;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;;;;;;;;;;;;;25534:54;25560:7;24894:11124;25554:13;;25534:54;:::i;:::-;25976:78;25995:9;25984:20;;;25976:78;:::i;:::-;27169:8;24894:11124;;;;27169:60;;27191:10;24894:11124;27169:60;;24894:11124;27211:4;24894:11124;;;;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;27169:60;;;;;;;;24894:11124;;;;;;;;;;;;;;;;;27351:6;24894:11124;27347:3;24894:11124;;27347:3;24894:11124;;;;27332:26;27347:3;27332:26;;;;:::i;:::-;24894:11124;27287:118;;;;;;24894:11124;;27287:118;24894:11124;27287:118;;27191:10;24894:11124;27287:118;;24894:11124;;;;;;;;:::i;:::-;;;;;;27347:3;24894:11124;;;;;;;;27287:118;;;;;;;;;;24894:11124;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;27169:60;;;24894:11124;27169:60;;;;;;;;;:::i;:::-;;;;;24894:11124;;;;;;;:::i;:::-;;25534:54;25560:7;24894:11124;25554:13;;25534:54;:::i;:::-;24894:11124;;;25542:8;24894:11124;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;27608:54;24894:11124;27608:54;;24894:11124;;;27643:10;;;27608:54;27643:10;;24894:11124;27608:54;;;:::i;:::-;;24894:11124;;;27608:54;;;;;;;;24894:11124;27608:54;;;;24894:11124;27696:12;27740;27696;;;:::i;:::-;24894:11124;27740:12;;:::i;:::-;24894:11124;27771:16;;24894:11124;;25560:7;24894:11124;;;;;;;27847:36;;;;;;;24894:11124;;;27643:10;;;;;27900:42;;;;;27965:19;24894:11124;;;27957:49;;;;;;;;;;;;;;27843:293;27957:49;;;;27843:293;24894:11124;;28160:36;;;28213:29;24894:11124;;;28213:29;:::i;:::-;24894:11124;;28257:22;;24894:11124;28257:22;:::i;:::-;;24894:11124;;;;;28156:234;28312:29;24894:11124;28312:29;24894:11124;28312:29;:::i;:::-;;24894:11124;28356:22;;24894:11124;28356:22;:::i;:::-;;24894:11124;28156:234;;27957:49;;;;;27843:293;24894:11124;;;;25542:8;24894:11124;28028:36;;28024:112;;27843:293;;;;28024:112;28081:8;24894:11124;;;;28081:43;;27643:10;24894:11124;28081:43;;24894:11124;;;;;;;;;;;;;;;;;;;;28081:43;;;;;;;28024:112;28081:43;;;24894:11124;28081:43;;;;;;;;;:::i;:::-;;;28024:112;;24894:11124;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;27608:54;;;;;;;;;;;;;:::i;:::-;;;;;24894:11124;;;;;;;:::i;:::-;1970:65;;;:::i;:::-;25534:54;25560:7;24894:11124;25554:13;;25534:54;:::i;:::-;24894:11124;;;25542:8;24894:11124;;;;-1:-1:-1;;;;;24894:11124:0;;;;;33199:50;;;;;;24894:11124;;;33199:50;24894:11124;33199:50;;24894:11124;;;:::i;:::-;;;;;;;;;;;;;;;31115:7;24894:11124;;;;;;;;;;;;;;;;;;;;;;1970:65;;:::i;:::-;24894:11124;33832:11;33856:3;33847:7;24894:11124;33845:9;;;;;24894:11124;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;33876:55;;;;;;24894:11124;;;33876:55;24894:11124;33876:55;;;24894:11124;33876:55;;24894:11124;;;;;;33876:55;;;;;;;;;;33856:3;;;;;:::i;:::-;33832:11;;33876:55;;;;:::i;:::-;24894:11124;;;;33876:55;24894:11124;;;;;;;;;;;;;;;;;;;;31568:19;24894:11124;31589:13;24894:11124;31604:19;24894:11124;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25560:7;24894:11124;25534:54;24894:11124;;25554:13;;;25534:54;:::i;:::-;1970:65;;:::i;:::-;24894:11124;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;35437:570;;;;24894:11124;;;;35437:570;;;;;;24894:11124;;35437:570;;24894:11124;;;;;;;;35437:570;;24894:11124;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24894:11124:0;;;;;-1:-1:-1;24894:11124:0;;-1:-1:-1;24894:11124:0;-1:-1:-1;24894:11124:0;;-1:-1:-1;24894:11124:0;-1:-1:-1;35437:570:0;;24894:11124;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;;24894:11124;;;;;;;;;;;:::i;:::-;35437:570;;;24894:11124;;;;;;;;;;;:::i;:::-;35437:570;;;24894:11124;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;35437:570;;24894:11124;;;;;;;;;;;;;;;:::i;:::-;;;;;35437:570;;24894:11124;;;;;;35437:570;;;24894:11124;;;;;;35437:570;;;24894:11124;;;;;;35437:570;;;24894:11124;;;;;;35437:570;;;24894:11124;;;;;;35437:570;;;24894:11124;;;;;;35437:570;;;24894:11124;;;;;;35437:570;;;24894:11124;;;;;;:::i;:::-;;;35437:570;;;24894:11124;;;;;;:::i;:::-;;;;35437:570;;24894:11124;;;;35437:570;;;;;;;;24894:11124;35437:570;;;;;;;;;24894:11124;;;;35437:570;;;;;:::i;:::-;;;24894:11124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;2281:132;-1:-1:-1;;;;;2189:6:0;24894:11124;;773:10;2345:23;24894:11124;;2281:132::o;24894:11124::-;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24894:11124:0;;;;;;;:::o;:::-;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;24894:11124:0;;;:::o;:::-;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;8378:220::-;;8460:6;;8456:20;;24894:11124;;;;;;;;;;;8523:10;24894:11124;;8378:220;:::o;24894:11124::-;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;;;;;;;;;;;;;8456:20;8468:8;;8465:1;8468:8;:::o;24894:11124::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;24894:11124:0;;;;;;;;;;;27621:5;24894:11124;;;;;;;:::o;:::-;;;29422:7;24894:11124;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;32446:189::-;32525:7;24894:11124;32525:7;;32546:13;32539:20;:::o;32521:106::-;-1:-1:-1;24894:11124:0;;;32595:5;24894:11124;;32582:45;24894:11124;-1:-1:-1;;;;;24894:11124:0;;;;;;;32582:45;;;;24894:11124;32582:45;;;;;;;;;;;;;32575:52;;;:::o;32582:45::-;;;;24894:11124;32582:45;;;;;;;;;24894:11124;32582:45;;;:::i;:::-;;;24894:11124;;;;;;32575:52;:::o;32582:45::-;;;-1:-1:-1;32582:45:0;;24894:11124;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://a357496d3e5ca4ce6c78d67df89113909dc4a34d23ecbfe3b51915605331fe3d

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.