Contract 0x34BF115286Ef1312bFDF6b99483ad41670963C98

 
Txn Hash Method
Block
From
To
Value
0xe51080d8b31f116674c56b22b0a981410e68635d82a3750d4aebc426239679acBot_Killed_Playe...127822422024-04-05 21:50:3110 days 6 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000006303670.009695249
0xbc89289f08f7344219d781a6d9d5d3520d66d11cb671d5ce7dc9a6eaed086d17User Spawned127817242024-04-05 21:33:1510 days 6 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000004692140.011788862
0xeb033ece37e8968aa32b8e79ce20b0f7424d54a652c48356ef8f6f45d079f451Bot_Killed_Playe...124357632024-03-28 21:21:1318 days 6 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000088285120.13067112
0x9067d144f1e88aad8e9010e40c0b14c7c56a40f1d94af8ac37dbbc86fac83617Player_Killed_Bo...124357242024-03-28 21:19:5518 days 6 hrs ago0x48ed1558a8435c664b2fc4a6c0938283124567fc IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000079660310.128049085
0x774b111de4e5f7c1885a3f422128becd05416a091df76dd524021e4a969bc4bdPlayer_Killed_Bo...124356592024-03-28 21:17:4518 days 7 hrs ago0x48ed1558a8435c664b2fc4a6c0938283124567fc IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.000007600880.123912672
0x23a6c767628771e29f00bdc0e979f24983ccdebce5024531d7fe20e711ca6d19User Spawned124355932024-03-28 21:15:3318 days 7 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000047898720.121038765
0xbaa42d9db5d3ffda6a543c514758b72c286f2ac6bdc7029601e0bd87e0081b6aPurchase Lives124355202024-03-28 21:13:0718 days 7 hrs ago0xf0e75f2ccb479c73ddbf341b6552871c7640ab06 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000201149590.15
0xb68387cdddfb7a50870883d1bb22467d3b5a5f7f59e99b9496abedf9fab12b5fBot_Killed_Playe...124065382024-03-28 5:07:0318 days 23 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000053321390.061949439
0x2be4308a7b3d3d248039304dc531f171abde4859d02c2e1b12773702152a10c4User Spawned124054922024-03-28 4:32:1118 days 23 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000040656890.040619333
0x81b22a7a203493becb1a4b28058aad66aef2acf28c6b4c1fb86d92c9a189e4ffBot_Killed_Playe...123289602024-03-26 10:01:0720 days 18 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000145138470.23750695
0xb3f2a6a9d06865cb174d20deabf0c5c0d042b86b10798b39c08518e035ea750bUser Spawned123231402024-03-26 6:47:0720 days 21 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000107348540.293961693
0xa883080538f46c8a5babb40d57d33bac1eb6367244e427c0a058aa648139cd21Bot_Killed_Playe...122790052024-03-25 6:15:5721 days 22 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000164468070.269191243
0x1751a4922b36539d3023f1160262b9cbce1f135242ee7addf86f569a7d019710User Spawned122787652024-03-25 6:07:5721 days 22 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000110472010.301206782
0xdc9839fcc055163ef9efeb4eef78483880e2f2dafc1a975538b5a5f27904159fPurchase Lives122742992024-03-25 3:39:0522 days 39 mins ago0xcb4f9a94363d688e11f5f3d87814aa492092ff97 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000116754060.32740031
0x9cada6a59466df604234ee0e955996de355524fa3cfddfb7fa6ac4a4b9e9ee0fPurchase Lives122742182024-03-25 3:36:2322 days 42 mins ago0xcb4f9a94363d688e11f5f3d87814aa492092ff97 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000117748020.330154992
0x484559992c11104eb69001c95bfa451a6b31ec3069e6dc2f96337b885d843c80Purchase Lives122742012024-03-25 3:35:4922 days 43 mins ago0xcb4f9a94363d688e11f5f3d87814aa492092ff97 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000118366710.331943997
0x2af6221bab25e7b2f6aed098b4d088dd074e69283a9ae7aa7f6b6bd0fc460e30Bot_Killed_Playe...122712572024-03-25 1:57:4122 days 2 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000114780910.187878038
0x0387deacfeca26f3e071e1013827ec83b79f584cca65d81b81b2090348bfafa8User Spawned122710912024-03-25 1:52:0922 days 2 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000073114090.20003436
0x5db6f68876bb252ce0a0724f3e0408f1c1bb2042739d34b2837f849532346776Bot_Killed_Playe...122673962024-03-24 23:48:5922 days 4 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000327596720.537223739
0x573e9b2e8b491d7d5a70097372dc3de9630426fadaa321f1d529d0c07bdb95eaUser Spawned122671842024-03-24 23:41:5522 days 4 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000216745260.594498519
0x02b7e9b916cb0b01ea11f9c6ed083e46411eeaee5f0c5d386f4ab6f405d478cdBot_Killed_Playe...122671222024-03-24 23:39:5122 days 4 hrs ago0xd5123f4b3d14b27e74e2e0fe943494ed53d7b945 IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000375964310.616676635
0xe82959b05d0310b2cdeb5484e516aa27c4edd578ef71a2a9c317751eac9a518ePlayer_Killed_Bo...122670112024-03-24 23:36:0922 days 4 hrs ago0x48ed1558a8435c664b2fc4a6c0938283124567fc IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000340538880.656111173
0x6ed14042f02937fdb142073ade269f27cb3941f3375a5618504d08487065215bPlayer_Killed_Bo...122670062024-03-24 23:35:5922 days 4 hrs ago0x48ed1558a8435c664b2fc4a6c0938283124567fc IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000373170240.658092617
0xf092daa453546c5b5dd3f3f1cbba8d0bf7246cdd32bbde7400867a696ca4b4a7Player_Killed_Bo...122669822024-03-24 23:35:1122 days 4 hrs ago0x48ed1558a8435c664b2fc4a6c0938283124567fc IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.000038069240.671304969
0xf4e23a3264de18ae5be3c33057b751672e5d9133c2a434771e47e7ec50ae3c30Player_Killed_Bo...122669752024-03-24 23:34:5722 days 4 hrs ago0x48ed1558a8435c664b2fc4a6c0938283124567fc IN  0x34bf115286ef1312bfdf6b99483ad41670963c980 ETH0.0000382295440.674196214
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PayToPlayLivesV2Contract

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2024-02-20
*/

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


// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

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


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.19;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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


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

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
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) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            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) {
        unchecked {
            // 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) {
        unchecked {
            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) {
        unchecked {
            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) {
        return a + b;
    }

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

    /**
     * @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.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        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) {
        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) {
        unchecked {
            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.
     *
     * 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) {
        unchecked {
            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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: DeepShotContracts/Deepshot_V2_RevisedContracts/PayToPlayLivesV2.sol


pragma solidity ^0.8.19;




contract PayToPlayLivesV2Contract is ReentrancyGuard{
    using SafeMath for uint256;

    ////////////////////////////////////////////////////////////////
    // VARIABLES
    ////////////////////////////////////////////////////////////////

    address public PermissionedServerWallet = 0xD5123f4B3d14B27E74e2E0Fe943494ED53D7B945; //kill payments
    address public BotSpawnerWallet = 0x48eD1558A8435c664B2Fc4a6C0938283124567fc;
    address public TeamWallet = 0x8998F85603737687fAd85EEdF45f43E79ceb608b; //Address is used to store TeamFunds
    address public Erc20TokenAddress = 0x78a087d713Be963Bf307b18F2Ff8122EF9A63ae9; //BSWAP

    bool private _locked;

    mapping(address => uint256) public lives;
    mapping(address => uint256) public kills;
    mapping(address => uint256) public Revives;

    address public owner;

    uint256 public CostOfLives = 5 ether;  //5 Bswap for 1 life
    uint256 public CostOfBotKills = 1 ether; //1 Bswap for 1 life
    
    //25% OUT || 75% KILLS
    uint256 public ProtocolPercentageTake = 20;
    uint256 public PercentageForBots = 5; //this is less than the cost of bot lives (roughly 4 purchased = 1 bot) 
    uint256 public PercentageForKills = 75;

    event LivesPurchased(address indexed user, uint256 amount);
    event UserHasSpawned(address indexed user);
    event PlayerMadeAKill(address indexed user);
    event PlayerKilledABot(address indexed user);
    event BotKilledaPlayer(address indexed user);

    constructor() {
    owner = msg.sender;
    }

    ////////////////////////////////////////////////////////////////
    // MODIFIERS & OWNER/PERMISSIONED WALLET SET
    ////////////////////////////////////////////////////////////////

    modifier onlyOwner() {
        require(msg.sender == owner, "Only the contract owner can call this function");
        _;
    }

    modifier onlyPermissionedServerWallet() {
        require(msg.sender == PermissionedServerWallet, "Only the set Permissioned wallet can call this function");
        _;
    }
    modifier  BotPaymentWallet(){
        require(msg.sender == BotSpawnerWallet,"Only allow the bot spanwer wallet to pay for bot kills");
        _;
    }

    //-----------------------------------------------------------------------------------------------------

    function SetNewPermissionedServerWallet(address newAddr) public onlyOwner {
        PermissionedServerWallet = newAddr;
    }

    function SetNewTeamWallet(address newAddr) public onlyOwner {
        TeamWallet = newAddr;
    }
    
    function SetNewERC20TokenAddress(address newAddr) public onlyOwner {
        Erc20TokenAddress = newAddr;
    }
    
    function SetNewContractOwner(address newAddr) public onlyOwner {
        owner = newAddr;
    }
    
    function SetNewBotPaymentWallet(address newAddr) public onlyOwner {
        BotSpawnerWallet = newAddr;
    }
 
 
    modifier isGuardedReentrant() {
        require(!_locked, "Reentrant call");
        _locked = true;
        _;
        _locked = false;
    }
    ////////////////////////////////////////////////////////////////
    // FUNCTIONS
    ////////////////////////////////////////////////////////////////
    
    function withdrawToken(address tokenAddress) external onlyOwner {
       IERC20 token = IERC20(tokenAddress);
       uint256 balance = token.balanceOf(address(this));
       require(balance > 0, "No tokens to withdraw");
       token.transfer(owner, balance);
    }

    function withdrawErc20Tokens(address token) external onlyOwner {
      IERC20 erc20Token = IERC20(token);
      require(erc20Token.transfer(owner, erc20Token.balanceOf(address(this))), "Failed to withdraw ERC-20 tokens");
    }

    function withdrawGas() public  onlyOwner {
       payable(owner).transfer(address(this).balance);
    }

    function PurchaseLives(uint256 numberOfLivesToPurchase) external isGuardedReentrant {

        uint256 totalCost = numberOfLivesToPurchase * CostOfLives;
        require(IERC20(Erc20TokenAddress).balanceOf(msg.sender) >= totalCost, "Not enough ERC20 tokens to purchase lives");
        require(IERC20(Erc20TokenAddress).transferFrom(msg.sender, address(this), totalCost), "ERC20 transfer failed");

        uint256 amountForBots = totalCost * PercentageForBots / 100; // 5% default
        uint256 amountforTeam = totalCost * ProtocolPercentageTake / 100; // 20%
        uint256 amountPermissionedServerWallet = totalCost * PercentageForKills / 100; //75% Player Killed Player rewards.

        require(IERC20(Erc20TokenAddress).transfer(PermissionedServerWallet,amountPermissionedServerWallet),"ERC20 transfer to PermissionedServerWallet failed");
        require(IERC20(Erc20TokenAddress).transfer(BotSpawnerWallet, amountForBots), "ERC20 transfer to BotSpawnerWallet failed");
        require(IERC20(Erc20TokenAddress).transfer(TeamWallet, amountforTeam), "ERC20 transfer to TeamWallet failed");

        uint256 senderLives = lives[msg.sender];
        lives[msg.sender] = senderLives.add(numberOfLivesToPurchase);
        //Increase the number of lives for the sender
        emit LivesPurchased(msg.sender, numberOfLivesToPurchase);
    }

    function Player_Killed_Player(address _to) external onlyPermissionedServerWallet {  
        uint256 PayoutAmount = CostOfLives * PercentageForKills / 100; //75% Player Killed Player rewards.
        require(IERC20(Erc20TokenAddress).allowance(msg.sender, address(this)) >= PayoutAmount, "Allowance not enough");
        require(IERC20(Erc20TokenAddress).balanceOf(msg.sender) >= PayoutAmount, "Not Enough Funds to pay for Kill");
        IERC20(Erc20TokenAddress).transferFrom(msg.sender, _to, PayoutAmount);
        
        emit PlayerMadeAKill(_to);
    }

    function Bot_Killed_Player(address Killed) external onlyPermissionedServerWallet{

        uint256 PayoutAmount = CostOfLives * PercentageForKills / 100; //75% Player Killed Player rewards.
        // Ensure contract has enough allowance
        require(IERC20(Erc20TokenAddress).allowance(msg.sender, address(this)) >= PayoutAmount, "Allowance not enough");
        // Transfer ERC20 tokens
        require(IERC20(Erc20TokenAddress).balanceOf(msg.sender) >= PayoutAmount, "Not Enough Funds to pay for Kill");

        IERC20(Erc20TokenAddress).transferFrom(msg.sender, TeamWallet, PayoutAmount);

        emit BotKilledaPlayer(Killed);
    }

    function Player_Killed_Bot(address payable _to) external BotPaymentWallet {
        require(IERC20(Erc20TokenAddress).allowance(msg.sender, address(this)) >= CostOfBotKills, "Allowance not enough");
        require(IERC20(Erc20TokenAddress).balanceOf(msg.sender) >= CostOfBotKills, "Not Enough Funds to pay for Kill");
        
        IERC20(Erc20TokenAddress).transferFrom(msg.sender, _to, CostOfBotKills);
        emit PlayerKilledABot(_to);
    }
    
    function UserSpawned(address user) external onlyPermissionedServerWallet {
        require(lives[user] > 0, "User Has No Lives");
        lives[user] = lives[user].sub(1);
        Revives[user] = Revives[user].add(1);
        emit UserHasSpawned(user);
    }
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    /////////////////////////////
    // ADJUST FEE SPLIT VALUES //
    /////////////////////////////
    
    function setCostOfLives(uint256 _newCost) public  onlyOwner {
        CostOfLives = _newCost;
    }
   
    function setCostOfBotKills(uint256 _newCost)public  onlyOwner{
       CostOfBotKills = _newCost;
    }
   
    function setProtocolPercentageTake(uint256 _newPercentage) public onlyOwner {
        ProtocolPercentageTake = _newPercentage;
    }

    function setPercentageForBots(uint256 _newPercentage) public onlyOwner {
        PercentageForBots = _newPercentage;
    }
    
    function setPercentageForKills(uint256 _newPercentage) public onlyOwner {
        PercentageForKills = _newPercentage;
    }
    ////////////////////////////
    // RETURN VALUE FUNCTIONS //
    ////////////////////////////
    function GetCostOfLives() public view returns (uint256) {
        return CostOfLives;
    }

    function HasLife(address user) public view returns (bool) {
        return lives[user] > 0;
    }

    function LivesCount(address user) public view returns (uint256) {
        return lives[user];
    }

    function RevivesCount(address user) public view returns (uint256) {
        return Revives[user];
    }

    function getCostOfLives() external view returns (uint256) {
        return CostOfLives;
    }

    function getProtocolPercentageTake() external view returns (uint256) {
        return ProtocolPercentageTake;
    }

    function getPercentageForBots() external view returns (uint256) {
        return PercentageForBots;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"BotKilledaPlayer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LivesPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"PlayerKilledABot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"PlayerMadeAKill","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"UserHasSpawned","type":"event"},{"inputs":[],"name":"BotSpawnerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"Killed","type":"address"}],"name":"Bot_Killed_Player","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CostOfBotKills","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CostOfLives","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Erc20TokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetCostOfLives","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"HasLife","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"LivesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PercentageForBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PercentageForKills","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PermissionedServerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"}],"name":"Player_Killed_Bot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"Player_Killed_Player","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ProtocolPercentageTake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfLivesToPurchase","type":"uint256"}],"name":"PurchaseLives","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Revives","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"RevivesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"SetNewBotPaymentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"SetNewContractOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"SetNewERC20TokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"SetNewPermissionedServerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"SetNewTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TeamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"UserSpawned","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCostOfLives","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPercentageForBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolPercentageTake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"kills","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lives","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCostOfBotKills","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCostOfLives","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPercentage","type":"uint256"}],"name":"setPercentageForBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPercentage","type":"uint256"}],"name":"setPercentageForKills","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPercentage","type":"uint256"}],"name":"setProtocolPercentageTake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawErc20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405273d5123f4b3d14b27e74e2e0fe943494ed53d7b945600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507348ed1558a8435c664b2fc4a6c0938283124567fc600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738998f85603737687fad85eedf45f43e79ceb608b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507378a087d713be963bf307b18f2ff8122ef9a63ae9600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550674563918244f40000600955670de0b6b3a7640000600a556014600b556005600c55604b600d5534801561018b57600080fd5b50600160008190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061348f806101e46000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80638da5cb5b11610130578063c0141e46116100b8578063ca4d98e91161007c578063ca4d98e91461064d578063ce969a4a1461066b578063ddd22cdb14610689578063e4d2cf6b146106a5578063e7202ce2146106c357610232565b8063c0141e46146105bd578063c08e0706146105d9578063c374ba96146105f7578063c703f7c014610613578063c889aad71461063157610232565b8063a3f83127116100ff578063a3f831271461052d578063ab472a6d14610549578063af5854d514610567578063afe771e214610583578063b1bfb49f1461059f57610232565b80638da5cb5b146104a75780639373f498146104c55780639e05cd13146104e1578063a1a1f3c1146104fd57610232565b806352e0d1c9116101be57806369a392641161018257806369a39264146103dd57806372dfa41f1461040d57806386a60c561461043d578063894760691461046d5780638a4825cd1461048957610232565b806352e0d1c91461034d578063594125f6146103695780635dfdc5c21461038557806366e6b88e146103a1578063677a8870146103bf57610232565b806327e76bae1161020557806327e76bae146102a95780632e7bf589146102c5578063349659a7146102e157806338bca7e4146102ff57806342a454b11461032f57610232565b8063068d098e146102375780631261795d146102675780631abdd600146102715780631bfd00401461028d575b600080fd5b610251600480360381019061024c91906128de565b6106e1565b60405161025e9190612924565b60405180910390f35b61026f6106f9565b005b61028b600480360381019061028691906128de565b6107f4565b005b6102a760048036038101906102a291906128de565b610b6e565b005b6102c360048036038101906102be91906128de565b610c42565b005b6102df60048036038101906102da91906128de565b610d16565b005b6102e9610f9a565b6040516102f69190612924565b60405180910390f35b610319600480360381019061031491906128de565b610fa0565b604051610326919061295a565b60405180910390f35b610337610feb565b6040516103449190612924565b60405180910390f35b610367600480360381019061036291906129a1565b610ff5565b005b610383600480360381019061037e91906129a1565b61108f565b005b61039f600480360381019061039a91906128de565b611129565b005b6103a96111fd565b6040516103b69190612924565b60405180910390f35b6103c7611207565b6040516103d491906129dd565b60405180910390f35b6103f760048036038101906103f291906128de565b61122d565b6040516104049190612924565b60405180910390f35b610427600480360381019061042291906128de565b611276565b6040516104349190612924565b60405180910390f35b610457600480360381019061045291906128de565b61128e565b6040516104649190612924565b60405180910390f35b610487600480360381019061048291906128de565b6112a6565b005b6104916114a2565b60405161049e91906129dd565b60405180910390f35b6104af6114c8565b6040516104bc91906129dd565b60405180910390f35b6104df60048036038101906104da91906128de565b6114ee565b005b6104fb60048036038101906104f691906129a1565b6115c2565b005b610517600480360381019061051291906128de565b61165c565b6040516105249190612924565b60405180910390f35b610547600480360381019061054291906129a1565b6116a5565b005b61055161173f565b60405161055e91906129dd565b60405180910390f35b610581600480360381019061057c91906128de565b611765565b005b61059d60048036038101906105989190612a36565b611abd565b005b6105a7611dfa565b6040516105b491906129dd565b60405180910390f35b6105d760048036038101906105d291906129a1565b611e20565b005b6105e1611eba565b6040516105ee9190612924565b60405180910390f35b610611600480360381019061060c91906129a1565b611ec0565b005b61061b612564565b6040516106289190612924565b60405180910390f35b61064b600480360381019061064691906128de565b61256a565b005b61065561275b565b6040516106629190612924565b60405180910390f35b610673612765565b6040516106809190612924565b60405180910390f35b6106a3600480360381019061069e91906128de565b61276b565b005b6106ad61283f565b6040516106ba9190612924565b60405180910390f35b6106cb612845565b6040516106d89190612924565b60405180910390f35b60076020528060005260406000206000915090505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078090612ae6565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156107f1573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b90612b78565b60405180910390fd5b60006064600d546009546108989190612bc7565b6108a29190612c38565b905080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401610902929190612c69565b602060405180830381865afa15801561091f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109439190612ca7565b1015610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097b90612d20565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016109e091906129dd565b602060405180830381865afa1580156109fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a219190612ca7565b1015610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990612d8c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610ae393929190612dac565b6020604051808303816000875af1158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190612e0f565b508173ffffffffffffffffffffffffffffffffffffffff167f5195c59fe2d296e3d51aaffbd753d0bf8076db4866374ab6b1246bdaaf885cf560405160405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590612ae6565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612ae6565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90612b78565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f90612e88565b60405180910390fd5b610e7b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284f90919063ffffffff16565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f116001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286590919063ffffffff16565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fb2e0aae32e71dadc080b874504ce17b787ae11c588c1496e1dbf4a136d9762ec60405160405180910390a250565b600d5481565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b6000600c54905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90612ae6565b60405180910390fd5b80600d8190555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690612ae6565b60405180910390fd5b8060098190555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090612ae6565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600954905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60056020528060005260406000206000915090505481565b60066020528060005260406000206000915090505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90612ae6565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161137691906129dd565b602060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190612ca7565b9050600081116113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390612ef4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611459929190612f14565b6020604051808303816000875af1158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190612e0f565b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590612ae6565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164990612ae6565b60405180910390fd5b80600c8190555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90612ae6565b60405180910390fd5b80600b8190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612b78565b60405180910390fd5b60006064600d546009546118099190612bc7565b6118139190612c38565b905080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401611873929190612c69565b602060405180830381865afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190612ca7565b10156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90612d20565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161195191906129dd565b602060405180830381865afa15801561196e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119929190612ca7565b10156119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90612d8c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3384846040518463ffffffff1660e01b8152600401611a3293929190612dac565b6020604051808303816000875af1158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190612e0f565b508173ffffffffffffffffffffffffffffffffffffffff167fc38d285a71fab2e80327f84a9d522f02eca2bc9c605148a4bef0a7cc99d3c84d60405160405180910390a25050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490612faf565b60405180910390fd5b600a54600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401611bad929190612c69565b602060405180830381865afa158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee9190612ca7565b1015611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690612d20565b60405180910390fd5b600a54600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611c8d91906129dd565b602060405180830381865afa158015611caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cce9190612ca7565b1015611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0690612d8c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3383600a546040518463ffffffff1660e01b8152600401611d709392919061302e565b6020604051808303816000875af1158015611d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db39190612e0f565b508073ffffffffffffffffffffffffffffffffffffffff167fc0f6b924b4b840364d9c1b2e9a2da098972ce4d8c828c083e591d56bff47484460405160405180910390a250565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea790612ae6565b60405180910390fd5b80600a8190555050565b600c5481565b600460149054906101000a900460ff1615611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f07906130b1565b60405180910390fd5b6001600460146101000a81548160ff021916908315150217905550600060095482611f3b9190612bc7565b905080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611f9991906129dd565b602060405180830381865afa158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fda9190612ca7565b101561201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201290613143565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161207a93929190612dac565b6020604051808303816000875af1158015612099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bd9190612e0f565b6120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f3906131af565b60405180910390fd5b60006064600c548361210e9190612bc7565b6121189190612c38565b905060006064600b548461212c9190612bc7565b6121369190612c38565b905060006064600d548561214a9190612bc7565b6121549190612c38565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016121d5929190612f14565b6020604051808303816000875af11580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122189190612e0f565b612257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224e90613241565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b81526004016122d6929190612f14565b6020604051808303816000875af11580156122f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123199190612e0f565b612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f906132d3565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016123d7929190612f14565b6020604051808303816000875af11580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a9190612e0f565b612459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245090613365565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506124b0868261286590919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f7f51f6e157f39915af17ce39bfa43f960cfb853f387917a3355053407ba143e9876040516125399190612924565b60405180910390a250505050506000600460146101000a81548160ff02191690831515021790555050565b600b5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f190612ae6565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161267791906129dd565b602060405180830381865afa158015612694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b89190612ca7565b6040518363ffffffff1660e01b81526004016126d5929190612f14565b6020604051808303816000875af11580156126f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127189190612e0f565b612757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274e906133d1565b60405180910390fd5b5050565b6000600954905090565b60095481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290612ae6565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b6000600b54905090565b6000818361285d91906133f1565b905092915050565b600081836128739190613425565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128ab82612880565b9050919050565b6128bb816128a0565b81146128c657600080fd5b50565b6000813590506128d8816128b2565b92915050565b6000602082840312156128f4576128f361287b565b5b6000612902848285016128c9565b91505092915050565b6000819050919050565b61291e8161290b565b82525050565b60006020820190506129396000830184612915565b92915050565b60008115159050919050565b6129548161293f565b82525050565b600060208201905061296f600083018461294b565b92915050565b61297e8161290b565b811461298957600080fd5b50565b60008135905061299b81612975565b92915050565b6000602082840312156129b7576129b661287b565b5b60006129c58482850161298c565b91505092915050565b6129d7816128a0565b82525050565b60006020820190506129f260008301846129ce565b92915050565b6000612a0382612880565b9050919050565b612a13816129f8565b8114612a1e57600080fd5b50565b600081359050612a3081612a0a565b92915050565b600060208284031215612a4c57612a4b61287b565b5b6000612a5a84828501612a21565b91505092915050565b600082825260208201905092915050565b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60008201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b6000612ad0602e83612a63565b9150612adb82612a74565b604082019050919050565b60006020820190508181036000830152612aff81612ac3565b9050919050565b7f4f6e6c792074686520736574205065726d697373696f6e65642077616c6c657460008201527f2063616e2063616c6c20746869732066756e6374696f6e000000000000000000602082015250565b6000612b62603783612a63565b9150612b6d82612b06565b604082019050919050565b60006020820190508181036000830152612b9181612b55565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bd28261290b565b9150612bdd8361290b565b9250828202612beb8161290b565b91508282048414831517612c0257612c01612b98565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c438261290b565b9150612c4e8361290b565b925082612c5e57612c5d612c09565b5b828204905092915050565b6000604082019050612c7e60008301856129ce565b612c8b60208301846129ce565b9392505050565b600081519050612ca181612975565b92915050565b600060208284031215612cbd57612cbc61287b565b5b6000612ccb84828501612c92565b91505092915050565b7f416c6c6f77616e6365206e6f7420656e6f756768000000000000000000000000600082015250565b6000612d0a601483612a63565b9150612d1582612cd4565b602082019050919050565b60006020820190508181036000830152612d3981612cfd565b9050919050565b7f4e6f7420456e6f7567682046756e647320746f2070617920666f72204b696c6c600082015250565b6000612d76602083612a63565b9150612d8182612d40565b602082019050919050565b60006020820190508181036000830152612da581612d69565b9050919050565b6000606082019050612dc160008301866129ce565b612dce60208301856129ce565b612ddb6040830184612915565b949350505050565b612dec8161293f565b8114612df757600080fd5b50565b600081519050612e0981612de3565b92915050565b600060208284031215612e2557612e2461287b565b5b6000612e3384828501612dfa565b91505092915050565b7f5573657220486173204e6f204c69766573000000000000000000000000000000600082015250565b6000612e72601183612a63565b9150612e7d82612e3c565b602082019050919050565b60006020820190508181036000830152612ea181612e65565b9050919050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b6000612ede601583612a63565b9150612ee982612ea8565b602082019050919050565b60006020820190508181036000830152612f0d81612ed1565b9050919050565b6000604082019050612f2960008301856129ce565b612f366020830184612915565b9392505050565b7f4f6e6c7920616c6c6f772074686520626f74207370616e7765722077616c6c6560008201527f7420746f2070617920666f7220626f74206b696c6c7300000000000000000000602082015250565b6000612f99603683612a63565b9150612fa482612f3d565b604082019050919050565b60006020820190508181036000830152612fc881612f8c565b9050919050565b6000819050919050565b6000612ff4612fef612fea84612880565b612fcf565b612880565b9050919050565b600061300682612fd9565b9050919050565b600061301882612ffb565b9050919050565b6130288161300d565b82525050565b600060608201905061304360008301866129ce565b613050602083018561301f565b61305d6040830184612915565b949350505050565b7f5265656e7472616e742063616c6c000000000000000000000000000000000000600082015250565b600061309b600e83612a63565b91506130a682613065565b602082019050919050565b600060208201905081810360008301526130ca8161308e565b9050919050565b7f4e6f7420656e6f75676820455243323020746f6b656e7320746f20707572636860008201527f617365206c697665730000000000000000000000000000000000000000000000602082015250565b600061312d602983612a63565b9150613138826130d1565b604082019050919050565b6000602082019050818103600083015261315c81613120565b9050919050565b7f4552433230207472616e73666572206661696c65640000000000000000000000600082015250565b6000613199601583612a63565b91506131a482613163565b602082019050919050565b600060208201905081810360008301526131c88161318c565b9050919050565b7f4552433230207472616e7366657220746f205065726d697373696f6e6564536560008201527f7276657257616c6c6574206661696c6564000000000000000000000000000000602082015250565b600061322b603183612a63565b9150613236826131cf565b604082019050919050565b6000602082019050818103600083015261325a8161321e565b9050919050565b7f4552433230207472616e7366657220746f20426f74537061776e657257616c6c60008201527f6574206661696c65640000000000000000000000000000000000000000000000602082015250565b60006132bd602983612a63565b91506132c882613261565b604082019050919050565b600060208201905081810360008301526132ec816132b0565b9050919050565b7f4552433230207472616e7366657220746f205465616d57616c6c65742066616960008201527f6c65640000000000000000000000000000000000000000000000000000000000602082015250565b600061334f602383612a63565b915061335a826132f3565b604082019050919050565b6000602082019050818103600083015261337e81613342565b9050919050565b7f4661696c656420746f207769746864726177204552432d323020746f6b656e73600082015250565b60006133bb602083612a63565b91506133c682613385565b602082019050919050565b600060208201905081810360008301526133ea816133ae565b9050919050565b60006133fc8261290b565b91506134078361290b565b925082820390508181111561341f5761341e612b98565b5b92915050565b60006134308261290b565b915061343b8361290b565b925082820190508082111561345357613452612b98565b5b9291505056fea2646970667358221220161bd27094d6afa0d2e54feb6295a2547fc1ac57e2154b4e87004dbcd099bb4764736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102325760003560e01c80638da5cb5b11610130578063c0141e46116100b8578063ca4d98e91161007c578063ca4d98e91461064d578063ce969a4a1461066b578063ddd22cdb14610689578063e4d2cf6b146106a5578063e7202ce2146106c357610232565b8063c0141e46146105bd578063c08e0706146105d9578063c374ba96146105f7578063c703f7c014610613578063c889aad71461063157610232565b8063a3f83127116100ff578063a3f831271461052d578063ab472a6d14610549578063af5854d514610567578063afe771e214610583578063b1bfb49f1461059f57610232565b80638da5cb5b146104a75780639373f498146104c55780639e05cd13146104e1578063a1a1f3c1146104fd57610232565b806352e0d1c9116101be57806369a392641161018257806369a39264146103dd57806372dfa41f1461040d57806386a60c561461043d578063894760691461046d5780638a4825cd1461048957610232565b806352e0d1c91461034d578063594125f6146103695780635dfdc5c21461038557806366e6b88e146103a1578063677a8870146103bf57610232565b806327e76bae1161020557806327e76bae146102a95780632e7bf589146102c5578063349659a7146102e157806338bca7e4146102ff57806342a454b11461032f57610232565b8063068d098e146102375780631261795d146102675780631abdd600146102715780631bfd00401461028d575b600080fd5b610251600480360381019061024c91906128de565b6106e1565b60405161025e9190612924565b60405180910390f35b61026f6106f9565b005b61028b600480360381019061028691906128de565b6107f4565b005b6102a760048036038101906102a291906128de565b610b6e565b005b6102c360048036038101906102be91906128de565b610c42565b005b6102df60048036038101906102da91906128de565b610d16565b005b6102e9610f9a565b6040516102f69190612924565b60405180910390f35b610319600480360381019061031491906128de565b610fa0565b604051610326919061295a565b60405180910390f35b610337610feb565b6040516103449190612924565b60405180910390f35b610367600480360381019061036291906129a1565b610ff5565b005b610383600480360381019061037e91906129a1565b61108f565b005b61039f600480360381019061039a91906128de565b611129565b005b6103a96111fd565b6040516103b69190612924565b60405180910390f35b6103c7611207565b6040516103d491906129dd565b60405180910390f35b6103f760048036038101906103f291906128de565b61122d565b6040516104049190612924565b60405180910390f35b610427600480360381019061042291906128de565b611276565b6040516104349190612924565b60405180910390f35b610457600480360381019061045291906128de565b61128e565b6040516104649190612924565b60405180910390f35b610487600480360381019061048291906128de565b6112a6565b005b6104916114a2565b60405161049e91906129dd565b60405180910390f35b6104af6114c8565b6040516104bc91906129dd565b60405180910390f35b6104df60048036038101906104da91906128de565b6114ee565b005b6104fb60048036038101906104f691906129a1565b6115c2565b005b610517600480360381019061051291906128de565b61165c565b6040516105249190612924565b60405180910390f35b610547600480360381019061054291906129a1565b6116a5565b005b61055161173f565b60405161055e91906129dd565b60405180910390f35b610581600480360381019061057c91906128de565b611765565b005b61059d60048036038101906105989190612a36565b611abd565b005b6105a7611dfa565b6040516105b491906129dd565b60405180910390f35b6105d760048036038101906105d291906129a1565b611e20565b005b6105e1611eba565b6040516105ee9190612924565b60405180910390f35b610611600480360381019061060c91906129a1565b611ec0565b005b61061b612564565b6040516106289190612924565b60405180910390f35b61064b600480360381019061064691906128de565b61256a565b005b61065561275b565b6040516106629190612924565b60405180910390f35b610673612765565b6040516106809190612924565b60405180910390f35b6106a3600480360381019061069e91906128de565b61276b565b005b6106ad61283f565b6040516106ba9190612924565b60405180910390f35b6106cb612845565b6040516106d89190612924565b60405180910390f35b60076020528060005260406000206000915090505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078090612ae6565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156107f1573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b90612b78565b60405180910390fd5b60006064600d546009546108989190612bc7565b6108a29190612c38565b905080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401610902929190612c69565b602060405180830381865afa15801561091f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109439190612ca7565b1015610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097b90612d20565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016109e091906129dd565b602060405180830381865afa1580156109fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a219190612ca7565b1015610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990612d8c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610ae393929190612dac565b6020604051808303816000875af1158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190612e0f565b508173ffffffffffffffffffffffffffffffffffffffff167f5195c59fe2d296e3d51aaffbd753d0bf8076db4866374ab6b1246bdaaf885cf560405160405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590612ae6565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612ae6565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90612b78565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f90612e88565b60405180910390fd5b610e7b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284f90919063ffffffff16565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f116001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286590919063ffffffff16565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fb2e0aae32e71dadc080b874504ce17b787ae11c588c1496e1dbf4a136d9762ec60405160405180910390a250565b600d5481565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b6000600c54905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90612ae6565b60405180910390fd5b80600d8190555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690612ae6565b60405180910390fd5b8060098190555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090612ae6565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600954905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60056020528060005260406000206000915090505481565b60066020528060005260406000206000915090505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90612ae6565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161137691906129dd565b602060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190612ca7565b9050600081116113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390612ef4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611459929190612f14565b6020604051808303816000875af1158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190612e0f565b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590612ae6565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164990612ae6565b60405180910390fd5b80600c8190555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90612ae6565b60405180910390fd5b80600b8190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612b78565b60405180910390fd5b60006064600d546009546118099190612bc7565b6118139190612c38565b905080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401611873929190612c69565b602060405180830381865afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190612ca7565b10156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90612d20565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161195191906129dd565b602060405180830381865afa15801561196e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119929190612ca7565b10156119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90612d8c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3384846040518463ffffffff1660e01b8152600401611a3293929190612dac565b6020604051808303816000875af1158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190612e0f565b508173ffffffffffffffffffffffffffffffffffffffff167fc38d285a71fab2e80327f84a9d522f02eca2bc9c605148a4bef0a7cc99d3c84d60405160405180910390a25050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490612faf565b60405180910390fd5b600a54600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401611bad929190612c69565b602060405180830381865afa158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee9190612ca7565b1015611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690612d20565b60405180910390fd5b600a54600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611c8d91906129dd565b602060405180830381865afa158015611caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cce9190612ca7565b1015611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0690612d8c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3383600a546040518463ffffffff1660e01b8152600401611d709392919061302e565b6020604051808303816000875af1158015611d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db39190612e0f565b508073ffffffffffffffffffffffffffffffffffffffff167fc0f6b924b4b840364d9c1b2e9a2da098972ce4d8c828c083e591d56bff47484460405160405180910390a250565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea790612ae6565b60405180910390fd5b80600a8190555050565b600c5481565b600460149054906101000a900460ff1615611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f07906130b1565b60405180910390fd5b6001600460146101000a81548160ff021916908315150217905550600060095482611f3b9190612bc7565b905080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611f9991906129dd565b602060405180830381865afa158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fda9190612ca7565b101561201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201290613143565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161207a93929190612dac565b6020604051808303816000875af1158015612099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bd9190612e0f565b6120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f3906131af565b60405180910390fd5b60006064600c548361210e9190612bc7565b6121189190612c38565b905060006064600b548461212c9190612bc7565b6121369190612c38565b905060006064600d548561214a9190612bc7565b6121549190612c38565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016121d5929190612f14565b6020604051808303816000875af11580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122189190612e0f565b612257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224e90613241565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b81526004016122d6929190612f14565b6020604051808303816000875af11580156122f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123199190612e0f565b612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f906132d3565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016123d7929190612f14565b6020604051808303816000875af11580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a9190612e0f565b612459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245090613365565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506124b0868261286590919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f7f51f6e157f39915af17ce39bfa43f960cfb853f387917a3355053407ba143e9876040516125399190612924565b60405180910390a250505050506000600460146101000a81548160ff02191690831515021790555050565b600b5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f190612ae6565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161267791906129dd565b602060405180830381865afa158015612694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b89190612ca7565b6040518363ffffffff1660e01b81526004016126d5929190612f14565b6020604051808303816000875af11580156126f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127189190612e0f565b612757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274e906133d1565b60405180910390fd5b5050565b6000600954905090565b60095481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290612ae6565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b6000600b54905090565b6000818361285d91906133f1565b905092915050565b600081836128739190613425565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128ab82612880565b9050919050565b6128bb816128a0565b81146128c657600080fd5b50565b6000813590506128d8816128b2565b92915050565b6000602082840312156128f4576128f361287b565b5b6000612902848285016128c9565b91505092915050565b6000819050919050565b61291e8161290b565b82525050565b60006020820190506129396000830184612915565b92915050565b60008115159050919050565b6129548161293f565b82525050565b600060208201905061296f600083018461294b565b92915050565b61297e8161290b565b811461298957600080fd5b50565b60008135905061299b81612975565b92915050565b6000602082840312156129b7576129b661287b565b5b60006129c58482850161298c565b91505092915050565b6129d7816128a0565b82525050565b60006020820190506129f260008301846129ce565b92915050565b6000612a0382612880565b9050919050565b612a13816129f8565b8114612a1e57600080fd5b50565b600081359050612a3081612a0a565b92915050565b600060208284031215612a4c57612a4b61287b565b5b6000612a5a84828501612a21565b91505092915050565b600082825260208201905092915050565b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60008201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b6000612ad0602e83612a63565b9150612adb82612a74565b604082019050919050565b60006020820190508181036000830152612aff81612ac3565b9050919050565b7f4f6e6c792074686520736574205065726d697373696f6e65642077616c6c657460008201527f2063616e2063616c6c20746869732066756e6374696f6e000000000000000000602082015250565b6000612b62603783612a63565b9150612b6d82612b06565b604082019050919050565b60006020820190508181036000830152612b9181612b55565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bd28261290b565b9150612bdd8361290b565b9250828202612beb8161290b565b91508282048414831517612c0257612c01612b98565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c438261290b565b9150612c4e8361290b565b925082612c5e57612c5d612c09565b5b828204905092915050565b6000604082019050612c7e60008301856129ce565b612c8b60208301846129ce565b9392505050565b600081519050612ca181612975565b92915050565b600060208284031215612cbd57612cbc61287b565b5b6000612ccb84828501612c92565b91505092915050565b7f416c6c6f77616e6365206e6f7420656e6f756768000000000000000000000000600082015250565b6000612d0a601483612a63565b9150612d1582612cd4565b602082019050919050565b60006020820190508181036000830152612d3981612cfd565b9050919050565b7f4e6f7420456e6f7567682046756e647320746f2070617920666f72204b696c6c600082015250565b6000612d76602083612a63565b9150612d8182612d40565b602082019050919050565b60006020820190508181036000830152612da581612d69565b9050919050565b6000606082019050612dc160008301866129ce565b612dce60208301856129ce565b612ddb6040830184612915565b949350505050565b612dec8161293f565b8114612df757600080fd5b50565b600081519050612e0981612de3565b92915050565b600060208284031215612e2557612e2461287b565b5b6000612e3384828501612dfa565b91505092915050565b7f5573657220486173204e6f204c69766573000000000000000000000000000000600082015250565b6000612e72601183612a63565b9150612e7d82612e3c565b602082019050919050565b60006020820190508181036000830152612ea181612e65565b9050919050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b6000612ede601583612a63565b9150612ee982612ea8565b602082019050919050565b60006020820190508181036000830152612f0d81612ed1565b9050919050565b6000604082019050612f2960008301856129ce565b612f366020830184612915565b9392505050565b7f4f6e6c7920616c6c6f772074686520626f74207370616e7765722077616c6c6560008201527f7420746f2070617920666f7220626f74206b696c6c7300000000000000000000602082015250565b6000612f99603683612a63565b9150612fa482612f3d565b604082019050919050565b60006020820190508181036000830152612fc881612f8c565b9050919050565b6000819050919050565b6000612ff4612fef612fea84612880565b612fcf565b612880565b9050919050565b600061300682612fd9565b9050919050565b600061301882612ffb565b9050919050565b6130288161300d565b82525050565b600060608201905061304360008301866129ce565b613050602083018561301f565b61305d6040830184612915565b949350505050565b7f5265656e7472616e742063616c6c000000000000000000000000000000000000600082015250565b600061309b600e83612a63565b91506130a682613065565b602082019050919050565b600060208201905081810360008301526130ca8161308e565b9050919050565b7f4e6f7420656e6f75676820455243323020746f6b656e7320746f20707572636860008201527f617365206c697665730000000000000000000000000000000000000000000000602082015250565b600061312d602983612a63565b9150613138826130d1565b604082019050919050565b6000602082019050818103600083015261315c81613120565b9050919050565b7f4552433230207472616e73666572206661696c65640000000000000000000000600082015250565b6000613199601583612a63565b91506131a482613163565b602082019050919050565b600060208201905081810360008301526131c88161318c565b9050919050565b7f4552433230207472616e7366657220746f205065726d697373696f6e6564536560008201527f7276657257616c6c6574206661696c6564000000000000000000000000000000602082015250565b600061322b603183612a63565b9150613236826131cf565b604082019050919050565b6000602082019050818103600083015261325a8161321e565b9050919050565b7f4552433230207472616e7366657220746f20426f74537061776e657257616c6c60008201527f6574206661696c65640000000000000000000000000000000000000000000000602082015250565b60006132bd602983612a63565b91506132c882613261565b604082019050919050565b600060208201905081810360008301526132ec816132b0565b9050919050565b7f4552433230207472616e7366657220746f205465616d57616c6c65742066616960008201527f6c65640000000000000000000000000000000000000000000000000000000000602082015250565b600061334f602383612a63565b915061335a826132f3565b604082019050919050565b6000602082019050818103600083015261337e81613342565b9050919050565b7f4661696c656420746f207769746864726177204552432d323020746f6b656e73600082015250565b60006133bb602083612a63565b91506133c682613385565b602082019050919050565b600060208201905081810360008301526133ea816133ae565b9050919050565b60006133fc8261290b565b91506134078361290b565b925082820390508181111561341f5761341e612b98565b5b92915050565b60006134308261290b565b915061343b8361290b565b925082820190508082111561345357613452612b98565b5b9291505056fea2646970667358221220161bd27094d6afa0d2e54feb6295a2547fc1ac57e2154b4e87004dbcd099bb4764736f6c63430008130033

Deployed ByteCode Sourcemap

13183:8977:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13958:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16962:105;;;:::i;:::-;;19019:653;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15526:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15661:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20148:263;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14369:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21493:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22050:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21158:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20653:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15897:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21822:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13627:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21600:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13864:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13911;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16446:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13437:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14009:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16006:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21022:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21709:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20880:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13544:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18445:566;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19680:456;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13741:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20765:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14253:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17075:1362;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14204:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16724:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21392:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14038:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15772:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14103:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21925:117;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13958:42;;;;;;;;;;;;;;;;;:::o;16962:105::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17021:5:::1;;;;;;;;;;;17013:23;;:46;17037:21;17013:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16962:105::o:0;19019:653::-;15142:24;;;;;;;;;;;15128:38;;:10;:38;;;15120:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;19112:20:::1;19170:3;19149:18;;19135:11;;:32;;;;:::i;:::-;:38;;;;:::i;:::-;19112:61;;19343:12;19284:17;;;;;;;;;;;19277:35;;;19313:10;19333:4;19277:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:78;;19269:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;19484:12;19440:17;;;;;;;;;;;19433:35;;;19469:10;19433:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;19425:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;19553:17;;;;;;;;;;;19546:38;;;19585:10;19597;;;;;;;;;;;19609:12;19546:76;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19657:6;19640:24;;;;;;;;;;;;19099:573;19019:653:::0;:::o;15526:127::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15638:7:::1;15611:24;;:34;;;;;;;;;;;;;;;;;;15526:127:::0;:::o;15661:99::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15745:7:::1;15732:10;;:20;;;;;;;;;;;;;;;;;;15661:99:::0;:::o;20148:263::-;15142:24;;;;;;;;;;;15128:38;;:10;:38;;;15120:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;20254:1:::1;20240:5;:11;20246:4;20240:11;;;;;;;;;;;;;;;;:15;20232:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;20302:18;20318:1;20302:5;:11;20308:4;20302:11;;;;;;;;;;;;;;;;:15;;:18;;;;:::i;:::-;20288:5;:11;20294:4;20288:11;;;;;;;;;;;;;;;:32;;;;20347:20;20365:1;20347:7;:13;20355:4;20347:13;;;;;;;;;;;;;;;;:17;;:20;;;;:::i;:::-;20331:7;:13;20339:4;20331:13;;;;;;;;;;;;;;;:36;;;;20398:4;20383:20;;;;;;;;;;;;20148:263:::0;:::o;14369:38::-;;;;:::o;21493:99::-;21545:4;21583:1;21569:5;:11;21575:4;21569:11;;;;;;;;;;;;;;;;:15;21562:22;;21493:99;;;:::o;22050:107::-;22105:7;22132:17;;22125:24;;22050:107;:::o;21158:126::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;21262:14:::1;21241:18;:35;;;;21158:126:::0;:::o;20653:101::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20738:8:::1;20724:11;:22;;;;20653:101:::0;:::o;15897:97::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15979:7:::1;15971:5;;:15;;;;;;;;;;;;;;;;;;15897:97:::0;:::o;21822:95::-;21871:7;21898:11;;21891:18;;21822:95;:::o;13627:70::-;;;;;;;;;;;;;:::o;21600:101::-;21655:7;21682:5;:11;21688:4;21682:11;;;;;;;;;;;;;;;;21675:18;;21600:101;;;:::o;13864:40::-;;;;;;;;;;;;;;;;;:::o;13911:::-;;;;;;;;;;;;;;;;;:::o;16446:270::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16520:12:::1;16542;16520:35;;16565:15;16583:5;:15;;;16607:4;16583:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16565:48;;16641:1;16631:7;:11;16623:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;16678:5;:14;;;16693:5;;;;;;;;;;;16700:7;16678:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16510:206;;16446:270:::0;:::o;13437:84::-;;;;;;;;;;;;;:::o;14009:20::-;;;;;;;;;;;;;:::o;16006:111::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16102:7:::1;16083:16;;:26;;;;;;;;;;;;;;;;;;16006:111:::0;:::o;21022:124::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;21124:14:::1;21104:17;:34;;;;21022:124:::0;:::o;21709:105::-;21766:7;21793;:13;21801:4;21793:13;;;;;;;;;;;;;;;;21786:20;;21709:105;;;:::o;20880:134::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20992:14:::1;20967:22;:39;;;;20880:134:::0;:::o;13544:76::-;;;;;;;;;;;;;:::o;18445:566::-;15142:24;;;;;;;;;;;15128:38;;:10;:38;;;15120:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;18539:20:::1;18597:3;18576:18;;18562:11;;:32;;;;:::i;:::-;:38;;;;:::i;:::-;18539:61;;18721:12;18662:17;;;;;;;;;;;18655:35;;;18691:10;18711:4;18655:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:78;;18647:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;18828:12;18784:17;;;;;;;;;;;18777:35;;;18813:10;18777:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;18769:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;18895:17;;;;;;;;;;;18888:38;;;18927:10;18939:3;18944:12;18888:69;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18999:3;18983:20;;;;;;;;;;;;18526:485;18445:566:::0;:::o;19680:456::-;15313:16;;;;;;;;;;;15299:30;;:10;:30;;;15291:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19839:14:::1;;19780:17;;;;;;;;;;;19773:35;;;19809:10;19829:4;19773:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;;19765:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;19948:14;;19904:17;;;;;;;;;;;19897:35;;;19933:10;19897:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;19889:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;20027:17;;;;;;;;;;;20020:38;;;20059:10;20071:3;20076:14;;20020:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20124:3;20107:21;;;;;;;;;;;;19680:456:::0;:::o;13741:77::-;;;;;;;;;;;;;:::o;20765:104::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20853:8:::1;20836:14;:25;;;;20765:104:::0;:::o;14253:36::-;;;;:::o;17075:1362::-;16179:7;;;;;;;;;;;16178:8;16170:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;16226:4;16216:7;;:14;;;;;;;;;;;;;;;;;;17172:17:::1;17218:11;;17192:23;:37;;;;:::i;:::-;17172:57;;17299:9;17255:17;;;;;;;;;;;17248:35;;;17284:10;17248:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;17240:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;17380:17;;;;;;;;;;;17373:38;;;17412:10;17432:4;17439:9;17373:76;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17365:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;17488:21;17544:3;17524:17;;17512:9;:29;;;;:::i;:::-;:35;;;;:::i;:::-;17488:59;;17572:21;17633:3;17608:22;;17596:9;:34;;;;:::i;:::-;:40;;;;:::i;:::-;17572:64;;17654:38;17728:3;17707:18;;17695:9;:30;;;;:::i;:::-;:36;;;;:::i;:::-;17654:77;;17795:17;;;;;;;;;;;17788:34;;;17823:24;;;;;;;;;;;17848:30;17788:91;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17780:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;17958:17;;;;;;;;;;;17951:34;;;17986:16;;;;;;;;;;;18004:13;17951:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17943:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;18090:17;;;;;;;;;;;18083:34;;;18118:10;;;;;;;;;;;18130:13;18083:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18075:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;18197:19;18219:5;:17;18225:10;18219:17;;;;;;;;;;;;;;;;18197:39;;18267:40;18283:23;18267:11;:15;;:40;;;;:::i;:::-;18247:5;:17;18253:10;18247:17;;;;;;;;;;;;;;;:60;;;;18393:10;18378:51;;;18405:23;18378:51;;;;;;:::i;:::-;;;;;;;;17159:1278;;;;;16263:5:::0;16253:7;;:15;;;;;;;;;;;;;;;;;;17075:1362;:::o;14204:42::-;;;;:::o;16724:230::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16796:17:::1;16823:5;16796:33;;16846:10;:19;;;16866:5;;;;;;;;;;;16873:10;:20;;;16902:4;16873:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16846:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16838:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;16787:167;16724:230:::0;:::o;21392:93::-;21439:7;21466:11;;21459:18;;21392:93;:::o;14038:36::-;;;;:::o;15772:113::-;14985:5;;;;;;;;;;;14971:19;;:10;:19;;;14963:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15870:7:::1;15850:17;;:27;;;;;;;;;;;;;;;;;;15772:113:::0;:::o;14103:39::-;;;;:::o;21925:117::-;21985:7;22012:22;;22005:29;;21925:117;:::o;9385:98::-;9443:7;9474:1;9470;:5;;;;:::i;:::-;9463:12;;9385:98;;;;:::o;9004:::-;9062:7;9093:1;9089;:5;;;;:::i;:::-;9082:12;;9004:98;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:90::-;1645:7;1688:5;1681:13;1674:21;1663:32;;1611:90;;;:::o;1707:109::-;1788:21;1803:5;1788:21;:::i;:::-;1783:3;1776:34;1707:109;;:::o;1822:210::-;1909:4;1947:2;1936:9;1932:18;1924:26;;1960:65;2022:1;2011:9;2007:17;1998:6;1960:65;:::i;:::-;1822:210;;;;:::o;2038:122::-;2111:24;2129:5;2111:24;:::i;:::-;2104:5;2101:35;2091:63;;2150:1;2147;2140:12;2091:63;2038:122;:::o;2166:139::-;2212:5;2250:6;2237:20;2228:29;;2266:33;2293:5;2266:33;:::i;:::-;2166:139;;;;:::o;2311:329::-;2370:6;2419:2;2407:9;2398:7;2394:23;2390:32;2387:119;;;2425:79;;:::i;:::-;2387:119;2545:1;2570:53;2615:7;2606:6;2595:9;2591:22;2570:53;:::i;:::-;2560:63;;2516:117;2311:329;;;;:::o;2646:118::-;2733:24;2751:5;2733:24;:::i;:::-;2728:3;2721:37;2646:118;;:::o;2770:222::-;2863:4;2901:2;2890:9;2886:18;2878:26;;2914:71;2982:1;2971:9;2967:17;2958:6;2914:71;:::i;:::-;2770:222;;;;:::o;2998:104::-;3043:7;3072:24;3090:5;3072:24;:::i;:::-;3061:35;;2998:104;;;:::o;3108:138::-;3189:32;3215:5;3189:32;:::i;:::-;3182:5;3179:43;3169:71;;3236:1;3233;3226:12;3169:71;3108:138;:::o;3252:155::-;3306:5;3344:6;3331:20;3322:29;;3360:41;3395:5;3360:41;:::i;:::-;3252:155;;;;:::o;3413:345::-;3480:6;3529:2;3517:9;3508:7;3504:23;3500:32;3497:119;;;3535:79;;:::i;:::-;3497:119;3655:1;3680:61;3733:7;3724:6;3713:9;3709:22;3680:61;:::i;:::-;3670:71;;3626:125;3413:345;;;;:::o;3764:169::-;3848:11;3882:6;3877:3;3870:19;3922:4;3917:3;3913:14;3898:29;;3764:169;;;;:::o;3939:233::-;4079:34;4075:1;4067:6;4063:14;4056:58;4148:16;4143:2;4135:6;4131:15;4124:41;3939:233;:::o;4178:366::-;4320:3;4341:67;4405:2;4400:3;4341:67;:::i;:::-;4334:74;;4417:93;4506:3;4417:93;:::i;:::-;4535:2;4530:3;4526:12;4519:19;;4178:366;;;:::o;4550:419::-;4716:4;4754:2;4743:9;4739:18;4731:26;;4803:9;4797:4;4793:20;4789:1;4778:9;4774:17;4767:47;4831:131;4957:4;4831:131;:::i;:::-;4823:139;;4550:419;;;:::o;4975:242::-;5115:34;5111:1;5103:6;5099:14;5092:58;5184:25;5179:2;5171:6;5167:15;5160:50;4975:242;:::o;5223:366::-;5365:3;5386:67;5450:2;5445:3;5386:67;:::i;:::-;5379:74;;5462:93;5551:3;5462:93;:::i;:::-;5580:2;5575:3;5571:12;5564:19;;5223:366;;;:::o;5595:419::-;5761:4;5799:2;5788:9;5784:18;5776:26;;5848:9;5842:4;5838:20;5834:1;5823:9;5819:17;5812:47;5876:131;6002:4;5876:131;:::i;:::-;5868:139;;5595:419;;;:::o;6020:180::-;6068:77;6065:1;6058:88;6165:4;6162:1;6155:15;6189:4;6186:1;6179:15;6206:410;6246:7;6269:20;6287:1;6269:20;:::i;:::-;6264:25;;6303:20;6321:1;6303:20;:::i;:::-;6298:25;;6358:1;6355;6351:9;6380:30;6398:11;6380:30;:::i;:::-;6369:41;;6559:1;6550:7;6546:15;6543:1;6540:22;6520:1;6513:9;6493:83;6470:139;;6589:18;;:::i;:::-;6470:139;6254:362;6206:410;;;;:::o;6622:180::-;6670:77;6667:1;6660:88;6767:4;6764:1;6757:15;6791:4;6788:1;6781:15;6808:185;6848:1;6865:20;6883:1;6865:20;:::i;:::-;6860:25;;6899:20;6917:1;6899:20;:::i;:::-;6894:25;;6938:1;6928:35;;6943:18;;:::i;:::-;6928:35;6985:1;6982;6978:9;6973:14;;6808:185;;;;:::o;6999:332::-;7120:4;7158:2;7147:9;7143:18;7135:26;;7171:71;7239:1;7228:9;7224:17;7215:6;7171:71;:::i;:::-;7252:72;7320:2;7309:9;7305:18;7296:6;7252:72;:::i;:::-;6999:332;;;;;:::o;7337:143::-;7394:5;7425:6;7419:13;7410:22;;7441:33;7468:5;7441:33;:::i;:::-;7337:143;;;;:::o;7486:351::-;7556:6;7605:2;7593:9;7584:7;7580:23;7576:32;7573:119;;;7611:79;;:::i;:::-;7573:119;7731:1;7756:64;7812:7;7803:6;7792:9;7788:22;7756:64;:::i;:::-;7746:74;;7702:128;7486:351;;;;:::o;7843:170::-;7983:22;7979:1;7971:6;7967:14;7960:46;7843:170;:::o;8019:366::-;8161:3;8182:67;8246:2;8241:3;8182:67;:::i;:::-;8175:74;;8258:93;8347:3;8258:93;:::i;:::-;8376:2;8371:3;8367:12;8360:19;;8019:366;;;:::o;8391:419::-;8557:4;8595:2;8584:9;8580:18;8572:26;;8644:9;8638:4;8634:20;8630:1;8619:9;8615:17;8608:47;8672:131;8798:4;8672:131;:::i;:::-;8664:139;;8391:419;;;:::o;8816:182::-;8956:34;8952:1;8944:6;8940:14;8933:58;8816:182;:::o;9004:366::-;9146:3;9167:67;9231:2;9226:3;9167:67;:::i;:::-;9160:74;;9243:93;9332:3;9243:93;:::i;:::-;9361:2;9356:3;9352:12;9345:19;;9004:366;;;:::o;9376:419::-;9542:4;9580:2;9569:9;9565:18;9557:26;;9629:9;9623:4;9619:20;9615:1;9604:9;9600:17;9593:47;9657:131;9783:4;9657:131;:::i;:::-;9649:139;;9376:419;;;:::o;9801:442::-;9950:4;9988:2;9977:9;9973:18;9965:26;;10001:71;10069:1;10058:9;10054:17;10045:6;10001:71;:::i;:::-;10082:72;10150:2;10139:9;10135:18;10126:6;10082:72;:::i;:::-;10164;10232:2;10221:9;10217:18;10208:6;10164:72;:::i;:::-;9801:442;;;;;;:::o;10249:116::-;10319:21;10334:5;10319:21;:::i;:::-;10312:5;10309:32;10299:60;;10355:1;10352;10345:12;10299:60;10249:116;:::o;10371:137::-;10425:5;10456:6;10450:13;10441:22;;10472:30;10496:5;10472:30;:::i;:::-;10371:137;;;;:::o;10514:345::-;10581:6;10630:2;10618:9;10609:7;10605:23;10601:32;10598:119;;;10636:79;;:::i;:::-;10598:119;10756:1;10781:61;10834:7;10825:6;10814:9;10810:22;10781:61;:::i;:::-;10771:71;;10727:125;10514:345;;;;:::o;10865:167::-;11005:19;11001:1;10993:6;10989:14;10982:43;10865:167;:::o;11038:366::-;11180:3;11201:67;11265:2;11260:3;11201:67;:::i;:::-;11194:74;;11277:93;11366:3;11277:93;:::i;:::-;11395:2;11390:3;11386:12;11379:19;;11038:366;;;:::o;11410:419::-;11576:4;11614:2;11603:9;11599:18;11591:26;;11663:9;11657:4;11653:20;11649:1;11638:9;11634:17;11627:47;11691:131;11817:4;11691:131;:::i;:::-;11683:139;;11410:419;;;:::o;11835:171::-;11975:23;11971:1;11963:6;11959:14;11952:47;11835:171;:::o;12012:366::-;12154:3;12175:67;12239:2;12234:3;12175:67;:::i;:::-;12168:74;;12251:93;12340:3;12251:93;:::i;:::-;12369:2;12364:3;12360:12;12353:19;;12012:366;;;:::o;12384:419::-;12550:4;12588:2;12577:9;12573:18;12565:26;;12637:9;12631:4;12627:20;12623:1;12612:9;12608:17;12601:47;12665:131;12791:4;12665:131;:::i;:::-;12657:139;;12384:419;;;:::o;12809:332::-;12930:4;12968:2;12957:9;12953:18;12945:26;;12981:71;13049:1;13038:9;13034:17;13025:6;12981:71;:::i;:::-;13062:72;13130:2;13119:9;13115:18;13106:6;13062:72;:::i;:::-;12809:332;;;;;:::o;13147:241::-;13287:34;13283:1;13275:6;13271:14;13264:58;13356:24;13351:2;13343:6;13339:15;13332:49;13147:241;:::o;13394:366::-;13536:3;13557:67;13621:2;13616:3;13557:67;:::i;:::-;13550:74;;13633:93;13722:3;13633:93;:::i;:::-;13751:2;13746:3;13742:12;13735:19;;13394:366;;;:::o;13766:419::-;13932:4;13970:2;13959:9;13955:18;13947:26;;14019:9;14013:4;14009:20;14005:1;13994:9;13990:17;13983:47;14047:131;14173:4;14047:131;:::i;:::-;14039:139;;13766:419;;;:::o;14191:60::-;14219:3;14240:5;14233:12;;14191:60;;;:::o;14257:142::-;14307:9;14340:53;14358:34;14367:24;14385:5;14367:24;:::i;:::-;14358:34;:::i;:::-;14340:53;:::i;:::-;14327:66;;14257:142;;;:::o;14405:126::-;14455:9;14488:37;14519:5;14488:37;:::i;:::-;14475:50;;14405:126;;;:::o;14537:134::-;14595:9;14628:37;14659:5;14628:37;:::i;:::-;14615:50;;14537:134;;;:::o;14677:147::-;14772:45;14811:5;14772:45;:::i;:::-;14767:3;14760:58;14677:147;;:::o;14830:458::-;14987:4;15025:2;15014:9;15010:18;15002:26;;15038:71;15106:1;15095:9;15091:17;15082:6;15038:71;:::i;:::-;15119:80;15195:2;15184:9;15180:18;15171:6;15119:80;:::i;:::-;15209:72;15277:2;15266:9;15262:18;15253:6;15209:72;:::i;:::-;14830:458;;;;;;:::o;15294:164::-;15434:16;15430:1;15422:6;15418:14;15411:40;15294:164;:::o;15464:366::-;15606:3;15627:67;15691:2;15686:3;15627:67;:::i;:::-;15620:74;;15703:93;15792:3;15703:93;:::i;:::-;15821:2;15816:3;15812:12;15805:19;;15464:366;;;:::o;15836:419::-;16002:4;16040:2;16029:9;16025:18;16017:26;;16089:9;16083:4;16079:20;16075:1;16064:9;16060:17;16053:47;16117:131;16243:4;16117:131;:::i;:::-;16109:139;;15836:419;;;:::o;16261:228::-;16401:34;16397:1;16389:6;16385:14;16378:58;16470:11;16465:2;16457:6;16453:15;16446:36;16261:228;:::o;16495:366::-;16637:3;16658:67;16722:2;16717:3;16658:67;:::i;:::-;16651:74;;16734:93;16823:3;16734:93;:::i;:::-;16852:2;16847:3;16843:12;16836:19;;16495:366;;;:::o;16867:419::-;17033:4;17071:2;17060:9;17056:18;17048:26;;17120:9;17114:4;17110:20;17106:1;17095:9;17091:17;17084:47;17148:131;17274:4;17148:131;:::i;:::-;17140:139;;16867:419;;;:::o;17292:171::-;17432:23;17428:1;17420:6;17416:14;17409:47;17292:171;:::o;17469:366::-;17611:3;17632:67;17696:2;17691:3;17632:67;:::i;:::-;17625:74;;17708:93;17797:3;17708:93;:::i;:::-;17826:2;17821:3;17817:12;17810:19;;17469:366;;;:::o;17841:419::-;18007:4;18045:2;18034:9;18030:18;18022:26;;18094:9;18088:4;18084:20;18080:1;18069:9;18065:17;18058:47;18122:131;18248:4;18122:131;:::i;:::-;18114:139;;17841:419;;;:::o;18266:236::-;18406:34;18402:1;18394:6;18390:14;18383:58;18475:19;18470:2;18462:6;18458:15;18451:44;18266:236;:::o;18508:366::-;18650:3;18671:67;18735:2;18730:3;18671:67;:::i;:::-;18664:74;;18747:93;18836:3;18747:93;:::i;:::-;18865:2;18860:3;18856:12;18849:19;;18508:366;;;:::o;18880:419::-;19046:4;19084:2;19073:9;19069:18;19061:26;;19133:9;19127:4;19123:20;19119:1;19108:9;19104:17;19097:47;19161:131;19287:4;19161:131;:::i;:::-;19153:139;;18880:419;;;:::o;19305:228::-;19445:34;19441:1;19433:6;19429:14;19422:58;19514:11;19509:2;19501:6;19497:15;19490:36;19305:228;:::o;19539:366::-;19681:3;19702:67;19766:2;19761:3;19702:67;:::i;:::-;19695:74;;19778:93;19867:3;19778:93;:::i;:::-;19896:2;19891:3;19887:12;19880:19;;19539:366;;;:::o;19911:419::-;20077:4;20115:2;20104:9;20100:18;20092:26;;20164:9;20158:4;20154:20;20150:1;20139:9;20135:17;20128:47;20192:131;20318:4;20192:131;:::i;:::-;20184:139;;19911:419;;;:::o;20336:222::-;20476:34;20472:1;20464:6;20460:14;20453:58;20545:5;20540:2;20532:6;20528:15;20521:30;20336:222;:::o;20564:366::-;20706:3;20727:67;20791:2;20786:3;20727:67;:::i;:::-;20720:74;;20803:93;20892:3;20803:93;:::i;:::-;20921:2;20916:3;20912:12;20905:19;;20564:366;;;:::o;20936:419::-;21102:4;21140:2;21129:9;21125:18;21117:26;;21189:9;21183:4;21179:20;21175:1;21164:9;21160:17;21153:47;21217:131;21343:4;21217:131;:::i;:::-;21209:139;;20936:419;;;:::o;21361:182::-;21501:34;21497:1;21489:6;21485:14;21478:58;21361:182;:::o;21549:366::-;21691:3;21712:67;21776:2;21771:3;21712:67;:::i;:::-;21705:74;;21788:93;21877:3;21788:93;:::i;:::-;21906:2;21901:3;21897:12;21890:19;;21549:366;;;:::o;21921:419::-;22087:4;22125:2;22114:9;22110:18;22102:26;;22174:9;22168:4;22164:20;22160:1;22149:9;22145:17;22138:47;22202:131;22328:4;22202:131;:::i;:::-;22194:139;;21921:419;;;:::o;22346:194::-;22386:4;22406:20;22424:1;22406:20;:::i;:::-;22401:25;;22440:20;22458:1;22440:20;:::i;:::-;22435:25;;22484:1;22481;22477:9;22469:17;;22508:1;22502:4;22499:11;22496:37;;;22513:18;;:::i;:::-;22496:37;22346:194;;;;:::o;22546:191::-;22586:3;22605:20;22623:1;22605:20;:::i;:::-;22600:25;;22639:20;22657:1;22639:20;:::i;:::-;22634:25;;22682:1;22679;22675:9;22668:16;;22703:3;22700:1;22697:10;22694:36;;;22710:18;;:::i;:::-;22694:36;22546:191;;;;:::o

Swarm Source

ipfs://161bd27094d6afa0d2e54feb6295a2547fc1ac57e2154b4e87004dbcd099bb47
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.