false
false
0

Contract Address Details

0x4802D3e13965b1553f1085E794aCB2F11308972e

Contract Name
RouletteV6
Creator
0xcd08e1–8f8ddb at 0x723c73–783354
Balance
0.0111 FTN
Tokens
Fetching tokens...
Transactions
4 Transactions
Transfers
1 Transfers
Gas Used
619,413
Last Balance Update
6850549
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
RouletteV6




Optimization enabled
false
Compiler version
v0.8.6+commit.11564f7e




EVM Version
default




Verified at
2025-07-15T14:11:09.544154Z

Constructor Arguments

0000000000000000000000007fdbf4fe2dbbdf956c010b3dd83177cb86eb1b146da22a485fc06c9bce99691a2ff5af57b7fd20b09af4a6572f6a44473d6c1514000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000002302c75d734d53cf511527f517716735a7a71441

 Arg [0] (&amp;amp;lt;b&amp;amp;gt;address&amp;amp;lt;/b&amp;amp;gt;) : &amp;amp;lt;a href=&amp;amp;quot;{#{address_path(@conn, :show, @address)}}&amp;amp;quot;&amp;amp;gt;0x7fdbf4fe2dbbdf956c010b3dd83177cb86eb1b14&amp;amp;lt;/a&amp;amp;gt; Arg [1] (&amp;lt;b&amp;gt;bytes32&amp;lt;/b&amp;gt;) : 6da22a485fc06c9bce99691a2ff5af57b7fd20b09af4a6572f6a44473d6c1514 Arg [2] (&lt;b&gt;uint64&lt;/b&gt;) : 11 Arg [3] (<b>address</b>) : <a href="{#{address_path(@conn, :show, @address)}}">0x2302c75d734d53cf511527f517716735a7a71441</a>
              

.sol

Sol2uml
new
// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;

interface IERC20 {
    function transfer(address to, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
}

interface ErinaceusVRFInterface {
    function requestRandomWords(
        bytes32 keyHash,
        uint64 subId,
        uint16 requestConfirmations,
        uint32 callbackGasLimit,
        uint32 numWords
    ) external returns (uint256 requestId);
}

contract RouletteV6 {
    address public owner;
    IERC20 public lbrToken;
    ErinaceusVRFInterface public vrf;
    uint64 public subId;
    bytes32 public keyHash;

    // -------------------------------------------
    // BET STRUCT AND MAPPINGS
    // -------------------------------------------

    struct Bet {
        address player;      // Address of the player
        bool betOnRed;       // true if bet on red, false if on black
        bool isFTNBet;       // true if bet was made in FTN, false if in LBR
        uint256 amount;      // Amount wagered, in FTN or LBR
    }

    // requestId => Bet
    mapping(uint256 => Bet) public pendingBets;

    // Prevents users from placing a new bet while waiting for resolution
    mapping(address => bool) public waitingForResult;

    // Pending winnings or consolation amounts
    mapping(address => uint256) public pendingWithdrawalsFTN;
    mapping(address => uint256) public pendingWithdrawalsLBR;

    // -------------------------------------------
    // EVENTS
    // -------------------------------------------

    // Emitted when a player places a bet
    event BetPlaced(
        address indexed player,
        bool betOnRed,
        bool isFTNBet,
        uint256 requestId,
        uint256 betValue
    );

    // Emitted when the bet result is determined
    event ResultGenerated(
        address indexed player,
        bool won,
        uint8 result,
        bool isFTNBet,
        uint256 betAmount,
        uint256 payoutFTN,
        uint256 payoutLBR
    );

    // Emitted when a player withdraws their pending balances
    event FundsWithdrawn(
        address indexed player,
        uint256 ftnAmount,
        uint256 lbrAmount
    );

    // Emitted when the owner updates VRF info
    event VRFUpdated(address newVRF);
    event KeyHashUpdated(bytes32 newKeyHash);
    event SubIdUpdated(uint64 newSubId);

    // Emitted for owner deposits/withdrawals
    event OwnerWithdrewFTN(uint256 amount);
    event OwnerWithdrewLBR(uint256 amount);
    event OwnerDepositedLBR(uint256 amount);
    event OwnerDepositedFTN(uint256 amount);

    // -------------------------------------------
    // MODIFIER
    // -------------------------------------------

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

    // -------------------------------------------
    // CONSTRUCTOR
    // -------------------------------------------

    constructor(
        address _vrfAddress,
        bytes32 _keyHash,
        uint64 _subId,
        address _lbrToken
    ) {
        owner = msg.sender;
        vrf = ErinaceusVRFInterface(_vrfAddress);
        keyHash = _keyHash;
        subId = _subId;
        lbrToken = IERC20(_lbrToken);
    }

    // -------------------------------------------
    // MAIN BET FUNCTION
    // -------------------------------------------

    /**
     * @dev A player can bet on red or black with either FTN or LBR.
     *      If msg.value > 0, it is an FTN bet.
     *      If msg.value == 0, it is an LBR bet with _amount.
     *
     * Rules:
     *   - FTN bet:
     *       * The user sends some FTN, indicated by msg.value == _amount.
     *       * If they win, they receive 2x their bet in FTN.
     *       * If they lose, they receive the same amount in LBR.
     *   - LBR bet:
     *       * The user must have approved the contract for _amount of LBR.
     *       * If they win, they receive 2x their bet in LBR.
     *       * If they lose, they receive the same amount in FTN.
     */
    function bet(bool _betOnRed, uint256 _amount) external payable {
        require(!waitingForResult[msg.sender], "Pending bet not resolved");

        bool ftnBet = (msg.value > 0);
        if (ftnBet) {
            // FTN bet
            require(msg.value == _amount, "Parameter _amount must match msg.value");
            require(_amount > 0, "Bet amount must be > 0");

            // Check contract liquidity
            require(address(this).balance >= 2 * _amount, "Not enough FTN in contract");
            require(lbrToken.balanceOf(address(this)) >= _amount, "Not enough LBR in contract");
        } else {
            // LBR bet
            require(msg.value == 0, "Do not send FTN for an LBR bet");
            require(_amount > 0, "Bet amount must be > 0");
            bool ok = lbrToken.transferFrom(msg.sender, address(this), _amount);
            require(ok, "Failed to transfer LBR");

            // Check contract liquidity
            require(lbrToken.balanceOf(address(this)) >= 2 * _amount, "Not enough LBR in contract");
            require(address(this).balance >= _amount, "Not enough FTN in contract");
        }

        // Request randomness
        uint256 requestId = vrf.requestRandomWords(
            keyHash,
            subId,
            3,       // confirmations
            200000,  // callback gas
            1        // 1 random word
        );

        // Record the bet
        pendingBets[requestId] = Bet({
            player: msg.sender,
            betOnRed: _betOnRed,
            isFTNBet: ftnBet,
            amount: _amount
        });

        waitingForResult[msg.sender] = true;

        emit BetPlaced(msg.sender, _betOnRed, ftnBet, requestId, _amount);
    }

    // -------------------------------------------
    // VRF CALLBACK
    // -------------------------------------------

    function rawFulfillRandomWords(uint256 requestId, uint256[] memory randomWords) external {
        require(msg.sender == address(vrf), "Only VRF can fulfill");

        Bet memory betInfo = pendingBets[requestId];
        require(betInfo.player != address(0), "Bet not found");

        // Clear bet
        waitingForResult[betInfo.player] = false;
        delete pendingBets[requestId];

        // Spin outcome (10 possible outcomes)
        uint8 spin = uint8(randomWords[0] % 10);
        uint8 result;
        // 0..3 => Red (40%)
        // 4..7 => Black (40%)
        // 8..9 => Green (20%)
        if (spin < 4) {
            result = 0; // red
        } else if (spin < 8) {
            result = 1; // black
        } else {
            result = 2; // green
        }

        // Determine if won
        bool won = false;
        if ((result == 0 && betInfo.betOnRed) || (result == 1 && !betInfo.betOnRed)) {
            won = true;
        }

        uint256 payoutFTN = 0;
        uint256 payoutLBR = 0;

        // Payout logic
        if (betInfo.isFTNBet) {
            if (won) {
                // Win: 2x FTN
                payoutFTN = betInfo.amount * 2;
            } else {
                // Lose: same amount in LBR
                payoutLBR = betInfo.amount;
            }
        } else {
            // Bet in LBR
            if (won) {
                // Win: 0.3333333x FTN
                payoutFTN = betInfo.amount / 3;
            }
        }

        // Assign to pending
        pendingWithdrawalsFTN[betInfo.player] += payoutFTN;
        pendingWithdrawalsLBR[betInfo.player] += payoutLBR;

        emit ResultGenerated(
            betInfo.player,
            won,
            result,
            betInfo.isFTNBet,
            betInfo.amount,
            payoutFTN,
            payoutLBR
        );
    }

    // -------------------------------------------
    // WITHDRAW FUNCTIONS (PLAYERS)
    // -------------------------------------------

    function withdrawFunds() external {
        uint256 ftnAmount = pendingWithdrawalsFTN[msg.sender];
        uint256 lbrAmount = pendingWithdrawalsLBR[msg.sender];
        require(ftnAmount > 0 || lbrAmount > 0, "No funds to withdraw");

        // Reset to zero before sending
        pendingWithdrawalsFTN[msg.sender] = 0;
        pendingWithdrawalsLBR[msg.sender] = 0;

        // Send FTN
        if (ftnAmount > 0) {
            (bool success, ) = msg.sender.call{value: ftnAmount}("");
            require(success, "Failed to send FTN");
        }

        // Send LBR
        if (lbrAmount > 0) {
            bool ok = lbrToken.transfer(msg.sender, lbrAmount);
            require(ok, "Failed to send LBR");
        }

        emit FundsWithdrawn(msg.sender, ftnAmount, lbrAmount);
    }

    // -------------------------------------------
    // OWNER (ADMIN) FUNCTIONS
    // -------------------------------------------

    // Allows the owner to withdraw FTN from the contract
    function ownerWithdrawFTN(uint256 amount) external onlyOwner {
        require(amount > 0, "Invalid amount");
        (bool success, ) = owner.call{value: amount}("");
        require(success, "Failed to withdraw FTN");
        emit OwnerWithdrewFTN(amount);
    }

    // Allows the owner to withdraw LBR tokens from the contract
    function ownerWithdrawLBR(uint256 amount) external onlyOwner {
        require(amount > 0, "Invalid amount");
        bool ok = lbrToken.transfer(owner, amount);
        require(ok, "Failed to withdraw LBR");
        emit OwnerWithdrewLBR(amount);
    }

    // Allows the owner to deposit LBR tokens into the contract
    // Must have approved this contract for 'amount'
    function ownerDepositLBR(uint256 amount) external onlyOwner {
        require(amount > 0, "Invalid amount");
        bool ok = lbrToken.transferFrom(msg.sender, address(this), amount);
        require(ok, "Failed to deposit LBR");
        emit OwnerDepositedLBR(amount);
    }

    // Allows the owner to deposit FTN into the contract
    // The owner just calls this function with value > 0
    function ownerDepositFTN() external payable onlyOwner {
        require(msg.value > 0, "Must send some FTN");
        emit OwnerDepositedFTN(msg.value);
    }

    // VRF config updates
    function updateVRF(address newVRFAddress) external onlyOwner {
        require(newVRFAddress != address(0), "Invalid VRF");
        vrf = ErinaceusVRFInterface(newVRFAddress);
        emit VRFUpdated(newVRFAddress);
    }

    function updateKeyHash(bytes32 newKeyHash) external onlyOwner {
        keyHash = newKeyHash;
        emit KeyHashUpdated(newKeyHash);
    }

    function updateSubId(uint64 newSubId) external onlyOwner {
        subId = newSubId;
        emit SubIdUpdated(newSubId);
    }

    // -------------------------------------------
    // RECEIVE FTN (fallback)
    // -------------------------------------------

    receive() external payable {
        // Accept FTN deposits from anyone
    }
}
        

Compiler Settings

{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers"],"":["ast"]}},"optimizer":{"runs":200,"enabled":false},"metadata":{"bytecodeHash":"ipfs"},"libraries":{".sol":{}}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_vrfAddress","internalType":"address"},{"type":"bytes32","name":"_keyHash","internalType":"bytes32"},{"type":"uint64","name":"_subId","internalType":"uint64"},{"type":"address","name":"_lbrToken","internalType":"address"}]},{"type":"event","name":"BetPlaced","inputs":[{"type":"address","name":"player","internalType":"address","indexed":true},{"type":"bool","name":"betOnRed","internalType":"bool","indexed":false},{"type":"bool","name":"isFTNBet","internalType":"bool","indexed":false},{"type":"uint256","name":"requestId","internalType":"uint256","indexed":false},{"type":"uint256","name":"betValue","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"FundsWithdrawn","inputs":[{"type":"address","name":"player","internalType":"address","indexed":true},{"type":"uint256","name":"ftnAmount","internalType":"uint256","indexed":false},{"type":"uint256","name":"lbrAmount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"KeyHashUpdated","inputs":[{"type":"bytes32","name":"newKeyHash","internalType":"bytes32","indexed":false}],"anonymous":false},{"type":"event","name":"OwnerDepositedFTN","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnerDepositedLBR","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnerWithdrewFTN","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnerWithdrewLBR","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ResultGenerated","inputs":[{"type":"address","name":"player","internalType":"address","indexed":true},{"type":"bool","name":"won","internalType":"bool","indexed":false},{"type":"uint8","name":"result","internalType":"uint8","indexed":false},{"type":"bool","name":"isFTNBet","internalType":"bool","indexed":false},{"type":"uint256","name":"betAmount","internalType":"uint256","indexed":false},{"type":"uint256","name":"payoutFTN","internalType":"uint256","indexed":false},{"type":"uint256","name":"payoutLBR","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"SubIdUpdated","inputs":[{"type":"uint64","name":"newSubId","internalType":"uint64","indexed":false}],"anonymous":false},{"type":"event","name":"VRFUpdated","inputs":[{"type":"address","name":"newVRF","internalType":"address","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"payable","outputs":[],"name":"bet","inputs":[{"type":"bool","name":"_betOnRed","internalType":"bool"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"keyHash","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"lbrToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"ownerDepositFTN","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ownerDepositLBR","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ownerWithdrawFTN","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ownerWithdrawLBR","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"player","internalType":"address"},{"type":"bool","name":"betOnRed","internalType":"bool"},{"type":"bool","name":"isFTNBet","internalType":"bool"},{"type":"uint256","name":"amount","internalType":"uint256"}],"name":"pendingBets","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"pendingWithdrawalsFTN","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"pendingWithdrawalsLBR","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rawFulfillRandomWords","inputs":[{"type":"uint256","name":"requestId","internalType":"uint256"},{"type":"uint256[]","name":"randomWords","internalType":"uint256[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint64","name":"","internalType":"uint64"}],"name":"subId","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateKeyHash","inputs":[{"type":"bytes32","name":"newKeyHash","internalType":"bytes32"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateSubId","inputs":[{"type":"uint64","name":"newSubId","internalType":"uint64"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateVRF","inputs":[{"type":"address","name":"newVRFAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ErinaceusVRFInterface"}],"name":"vrf","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"waitingForResult","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdrawFunds","inputs":[]},{"type":"receive","stateMutability":"payable"}]
              

Contract Creation Code

Verify & Publish
0x60806040523480156200001157600080fd5b50604051620034a4380380620034a4833981810160405281019062000037919062000178565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260038190555081600260146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506200028f565b600081519050620001448162000241565b92915050565b6000815190506200015b816200025b565b92915050565b600081519050620001728162000275565b92915050565b600080600080608085870312156200019557620001946200023c565b5b6000620001a58782880162000133565b9450506020620001b8878288016200014a565b9350506040620001cb8782880162000161565b9250506060620001de8782880162000133565b91505092959194509250565b6000620001f78262000208565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600080fd5b6200024c81620001ea565b81146200025857600080fd5b50565b6200026681620001fe565b81146200027257600080fd5b50565b620002808162000228565b81146200028c57600080fd5b50565b613205806200029f6000396000f3fe6080604052600436106101185760003560e01c80638da5cb5b116100a0578063d219750b11610064578063d219750b1461037d578063d837d14d146103a6578063e17b3360146103cf578063e7fa67e5146103fa578063eb1d28bb146104235761011f565b80638da5cb5b146102b9578063918dae3b146102e4578063a84db89414610321578063acfb03121461034a578063b1986acc146103545761011f565b80631fe543e3116100e75780631fe543e3146101f557806324600fc31461021e5780632a9a8fa4146102355780635229a6fd1461027257806361728f391461028e5761011f565b806301abd6d71461012457806308f6b8e7146101645780630c9490431461018d57806314621962146101b85761011f565b3661011f57005b600080fd5b34801561013057600080fd5b5061014b6004803603810190610146919061214b565b61044e565b60405161015b94939291906125f6565b60405180910390f35b34801561017057600080fd5b5061018b6004803603810190610186919061214b565b6104b8565b005b34801561019957600080fd5b506101a26106b9565b6040516101af9190612793565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612084565b6106df565b6040516101ec9190612664565b60405180910390f35b34801561020157600080fd5b5061021c600480360381019061021791906121a5565b6106ff565b005b34801561022a57600080fd5b50610233610b92565b005b34801561024157600080fd5b5061025c60048036038101906102579190612084565b610efb565b6040516102699190612a29565b60405180910390f35b61028c600480360381019061028791906120de565b610f13565b005b34801561029a57600080fd5b506102a3611696565b6040516102b09190612725565b60405180910390f35b3480156102c557600080fd5b506102ce61169c565b6040516102db91906125a4565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612084565b6116c0565b6040516103189190612a29565b60405180910390f35b34801561032d57600080fd5b5061034860048036038101906103439190612201565b6116d8565b005b6103526117c9565b005b34801561036057600080fd5b5061037b60048036038101906103769190612084565b6118d3565b005b34801561038957600080fd5b506103a4600480360381019061039f919061214b565b611a4c565b005b3480156103b257600080fd5b506103cd60048036038101906103c8919061214b565b611c6b565b005b3480156103db57600080fd5b506103e4611e44565b6040516103f191906127ae565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c919061211e565b611e6a565b005b34801561042f57600080fd5b50610438611f39565b6040516104459190612a6d565b60405180910390f35b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16908060010154905084565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90612809565b60405180910390fd5b60008111610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090612849565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016105ea939291906125bf565b602060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063c91906120b1565b90508061067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067590612949565b60405180910390fd5b7ff3ec7c68ae090b3d300d039b738d38d7cacf25b4f34b3497d9e6644f70329afe826040516106ad9190612a29565b60405180910390a15050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906128a9565b60405180910390fd5b6000600460008481526020019081526020016000206040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff161515151581526020016000820160159054906101000a900460ff161515151581526020016001820154815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614156108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b2906129a9565b60405180910390fd5b600060056000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060046000848152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690556000820160156101000a81549060ff0219169055600182016000905550506000600a8360008151811061099c5761099b612da5565b5b60200260200101516109ae9190612d16565b9050600060048260ff1610156109c757600090506109e2565b60088260ff1610156109dc57600190506109e1565b600290505b5b6000808260ff161480156109f7575083602001515b80610a13575060018260ff16148015610a1257508360200151155b5b15610a1d57600190505b600080856040015115610a55578215610a485760028660600151610a419190612b7c565b9150610a50565b856060015190505b610a70565b8215610a6f5760038660600151610a6c9190612b4b565b91505b5b8160066000886000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ac39190612af5565b925050819055508060076000886000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1d9190612af5565b92505081905550856000015173ffffffffffffffffffffffffffffffffffffffff167fac1b0776a152a5430bad8bef965aea330ab6e30871b654a15ecb64a8f4e71b07848689604001518a606001518787604051610b80969594939291906126c4565b60405180910390a25050505050505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000821180610c295750600081115b610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f906128c9565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115610da95760003373ffffffffffffffffffffffffffffffffffffffff1683604051610d219061258f565b60006040518083038185875af1925050503d8060008114610d5e576040519150601f19603f3d011682016040523d82523d6000602084013e610d63565b606091505b5050905080610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90612929565b60405180910390fd5b505b6000811115610ea7576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610e1192919061263b565b602060405180830381600087803b158015610e2b57600080fd5b505af1158015610e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6391906120b1565b905080610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c90612a09565b60405180910390fd5b505b3373ffffffffffffffffffffffffffffffffffffffff167ffbc3a599b784fe88772fc5abcc07223f64ca0b13acc341f4fb1e46bef0510eb48383604051610eef929190612a44565b60405180910390a25050565b60066020528060005260406000206000915090505481565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9790612829565b60405180910390fd5b60008034119050801561117357813414610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612869565b60405180910390fd5b60008211611032576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611029906129c9565b60405180910390fd5b81600261103f9190612b7c565b471015611081576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611078906127e9565b60405180910390fd5b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110dd91906125a4565b60206040518083038186803b1580156110f557600080fd5b505afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190612178565b101561116e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611165906127c9565b60405180910390fd5b61142c565b600034146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90612889565b60405180910390fd5b600082116111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906129c9565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b815260040161125a939291906125bf565b602060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac91906120b1565b9050806112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e5906129e9565b60405180910390fd5b8260026112fb9190612b7c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161135691906125a4565b60206040518083038186803b15801561136e57600080fd5b505afa158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a69190612178565b10156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de906127c9565b60405180910390fd5b8247101561142a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611421906127e9565b60405180910390fd5b505b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d3b1d30600354600260149054906101000a900467ffffffffffffffff16600362030d4060016040518663ffffffff1660e01b81526004016114ae959493929190612740565b602060405180830381600087803b1580156114c857600080fd5b505af11580156114dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115009190612178565b905060405180608001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200185151581526020018315158152602001848152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160000160156101000a81548160ff021916908315150217905550606082015181600101559050506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167fa616da74b550dd11493ad87451ebfdef7153cae5f80b7d8dbc072a4e8075265485848487604051611688949392919061267f565b60405180910390a250505050565b60035481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90612809565b60405180910390fd5b80600260146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f3fb6fc5b974e21a29292aeaa29ed6d0f23c5ae0a0e8e6599d973f88c53ea301b816040516117be9190612a6d565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612809565b60405180910390fd5b6000341161189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190612969565b60405180910390fd5b7fc43249e5bb8706113fbd95859b38261cede611e5382d4d3d3e35664a8aec600d346040516118c99190612a29565b60405180910390a1565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890612809565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c890612909565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6f0e7304358d9f5acc110757d682927f66d013808aa8bf39a4a4db0d4dbe39be81604051611a4191906125a4565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad190612809565b60405180910390fd5b60008111611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1490612849565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611b9c92919061263b565b602060405180830381600087803b158015611bb657600080fd5b505af1158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee91906120b1565b905080611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790612989565b60405180910390fd5b7fb0b2cc82911569fe0ec17ee2f98beac059df3117ce2f896acf504cca6caa887382604051611c5f9190612a29565b60405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf090612809565b60405180910390fd5b60008111611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3390612849565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611d839061258f565b60006040518083038185875af1925050503d8060008114611dc0576040519150601f19603f3d011682016040523d82523d6000602084013e611dc5565b606091505b5050905080611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e00906128e9565b60405180910390fd5b7f641bb248dba1f49578a3373556c6c43fe770837654a334c4e02a62cab00f8a4b82604051611e389190612a29565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90612809565b60405180910390fd5b806003819055507f21d77d94f4c9e163d289e2e4b3fa5fd25ce1f709ad72c23b6a675e94c8282b5281604051611f2e9190612725565b60405180910390a150565b600260149054906101000a900467ffffffffffffffff1681565b6000611f66611f6184612aad565b612a88565b90508083825260208201905082856020860282011115611f8957611f88612e08565b5b60005b85811015611fb95781611f9f8882612045565b845260208401935060208301925050600181019050611f8c565b5050509392505050565b600081359050611fd28161315c565b92915050565b600082601f830112611fed57611fec612e03565b5b8135611ffd848260208601611f53565b91505092915050565b60008135905061201581613173565b92915050565b60008151905061202a81613173565b92915050565b60008135905061203f8161318a565b92915050565b600081359050612054816131a1565b92915050565b600081519050612069816131a1565b92915050565b60008135905061207e816131b8565b92915050565b60006020828403121561209a57612099612e12565b5b60006120a884828501611fc3565b91505092915050565b6000602082840312156120c7576120c6612e12565b5b60006120d58482850161201b565b91505092915050565b600080604083850312156120f5576120f4612e12565b5b600061210385828601612006565b925050602061211485828601612045565b9150509250929050565b60006020828403121561213457612133612e12565b5b600061214284828501612030565b91505092915050565b60006020828403121561216157612160612e12565b5b600061216f84828501612045565b91505092915050565b60006020828403121561218e5761218d612e12565b5b600061219c8482850161205a565b91505092915050565b600080604083850312156121bc576121bb612e12565b5b60006121ca85828601612045565b925050602083013567ffffffffffffffff8111156121eb576121ea612e0d565b5b6121f785828601611fd8565b9150509250929050565b60006020828403121561221757612216612e12565b5b60006122258482850161206f565b91505092915050565b61223781612bd6565b82525050565b61224681612be8565b82525050565b61225581612bf4565b82525050565b61226481612c67565b82525050565b61227381612c8b565b82525050565b61228281612caf565b82525050565b61229181612cc1565b82525050565b6122a081612cd3565b82525050565b60006122b3601a83612ae4565b91506122be82612e28565b602082019050919050565b60006122d6601a83612ae4565b91506122e182612e51565b602082019050919050565b60006122f9600a83612ae4565b915061230482612e7a565b602082019050919050565b600061231c601883612ae4565b915061232782612ea3565b602082019050919050565b600061233f600e83612ae4565b915061234a82612ecc565b602082019050919050565b6000612362602683612ae4565b915061236d82612ef5565b604082019050919050565b6000612385601e83612ae4565b915061239082612f44565b602082019050919050565b60006123a8601483612ae4565b91506123b382612f6d565b602082019050919050565b60006123cb601483612ae4565b91506123d682612f96565b602082019050919050565b60006123ee601683612ae4565b91506123f982612fbf565b602082019050919050565b6000612411600b83612ae4565b915061241c82612fe8565b602082019050919050565b6000612434601283612ae4565b915061243f82613011565b602082019050919050565b6000612457601583612ae4565b91506124628261303a565b602082019050919050565b600061247a601283612ae4565b915061248582613063565b602082019050919050565b600061249d601683612ae4565b91506124a88261308c565b602082019050919050565b60006124c0600083612ad9565b91506124cb826130b5565b600082019050919050565b60006124e3600d83612ae4565b91506124ee826130b8565b602082019050919050565b6000612506601683612ae4565b9150612511826130e1565b602082019050919050565b6000612529601683612ae4565b91506125348261310a565b602082019050919050565b600061254c601283612ae4565b915061255782613133565b602082019050919050565b61256b81612c2c565b82525050565b61257a81612c46565b82525050565b61258981612c5a565b82525050565b600061259a826124b3565b9150819050919050565b60006020820190506125b9600083018461222e565b92915050565b60006060820190506125d4600083018661222e565b6125e1602083018561222e565b6125ee6040830184612562565b949350505050565b600060808201905061260b600083018761222e565b612618602083018661223d565b612625604083018561223d565b6126326060830184612562565b95945050505050565b6000604082019050612650600083018561222e565b61265d6020830184612562565b9392505050565b6000602082019050612679600083018461223d565b92915050565b6000608082019050612694600083018761223d565b6126a1602083018661223d565b6126ae6040830185612562565b6126bb6060830184612562565b95945050505050565b600060c0820190506126d9600083018961223d565b6126e66020830188612580565b6126f3604083018761223d565b6127006060830186612562565b61270d6080830185612562565b61271a60a0830184612562565b979650505050505050565b600060208201905061273a600083018461224c565b92915050565b600060a082019050612755600083018861224c565b6127626020830187612571565b61276f6040830186612297565b61277c6060830185612288565b6127896080830184612279565b9695505050505050565b60006020820190506127a8600083018461225b565b92915050565b60006020820190506127c3600083018461226a565b92915050565b600060208201905081810360008301526127e2816122a6565b9050919050565b60006020820190508181036000830152612802816122c9565b9050919050565b60006020820190508181036000830152612822816122ec565b9050919050565b600060208201905081810360008301526128428161230f565b9050919050565b6000602082019050818103600083015261286281612332565b9050919050565b6000602082019050818103600083015261288281612355565b9050919050565b600060208201905081810360008301526128a281612378565b9050919050565b600060208201905081810360008301526128c28161239b565b9050919050565b600060208201905081810360008301526128e2816123be565b9050919050565b60006020820190508181036000830152612902816123e1565b9050919050565b6000602082019050818103600083015261292281612404565b9050919050565b6000602082019050818103600083015261294281612427565b9050919050565b600060208201905081810360008301526129628161244a565b9050919050565b600060208201905081810360008301526129828161246d565b9050919050565b600060208201905081810360008301526129a281612490565b9050919050565b600060208201905081810360008301526129c2816124d6565b9050919050565b600060208201905081810360008301526129e2816124f9565b9050919050565b60006020820190508181036000830152612a028161251c565b9050919050565b60006020820190508181036000830152612a228161253f565b9050919050565b6000602082019050612a3e6000830184612562565b92915050565b6000604082019050612a596000830185612562565b612a666020830184612562565b9392505050565b6000602082019050612a826000830184612571565b92915050565b6000612a92612aa3565b9050612a9e8282612ce5565b919050565b6000604051905090565b600067ffffffffffffffff821115612ac857612ac7612dd4565b5b602082029050602081019050919050565b600081905092915050565b600082825260208201905092915050565b6000612b0082612c2c565b9150612b0b83612c2c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b4057612b3f612d47565b5b828201905092915050565b6000612b5682612c2c565b9150612b6183612c2c565b925082612b7157612b70612d76565b5b828204905092915050565b6000612b8782612c2c565b9150612b9283612c2c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bcb57612bca612d47565b5b828202905092915050565b6000612be182612c0c565b9050919050565b60008115159050919050565b6000819050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b6000612c7282612c79565b9050919050565b6000612c8482612c0c565b9050919050565b6000612c9682612c9d565b9050919050565b6000612ca882612c0c565b9050919050565b6000612cba82612c36565b9050919050565b6000612ccc82612c36565b9050919050565b6000612cde82612bfe565b9050919050565b612cee82612e17565b810181811067ffffffffffffffff82111715612d0d57612d0c612dd4565b5b80604052505050565b6000612d2182612c2c565b9150612d2c83612c2c565b925082612d3c57612d3b612d76565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e6f7420656e6f756768204c425220696e20636f6e7472616374000000000000600082015250565b7f4e6f7420656e6f7567682046544e20696e20636f6e7472616374000000000000600082015250565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b7f50656e64696e6720626574206e6f74207265736f6c7665640000000000000000600082015250565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b7f506172616d65746572205f616d6f756e74206d757374206d61746368206d736760008201527f2e76616c75650000000000000000000000000000000000000000000000000000602082015250565b7f446f206e6f742073656e642046544e20666f7220616e204c4252206265740000600082015250565b7f4f6e6c79205652462063616e2066756c66696c6c000000000000000000000000600082015250565b7f4e6f2066756e647320746f207769746864726177000000000000000000000000600082015250565b7f4661696c656420746f2077697468647261772046544e00000000000000000000600082015250565b7f496e76616c696420565246000000000000000000000000000000000000000000600082015250565b7f4661696c656420746f2073656e642046544e0000000000000000000000000000600082015250565b7f4661696c656420746f206465706f736974204c42520000000000000000000000600082015250565b7f4d7573742073656e6420736f6d652046544e0000000000000000000000000000600082015250565b7f4661696c656420746f207769746864726177204c425200000000000000000000600082015250565b50565b7f426574206e6f7420666f756e6400000000000000000000000000000000000000600082015250565b7f42657420616d6f756e74206d757374206265203e203000000000000000000000600082015250565b7f4661696c656420746f207472616e73666572204c425200000000000000000000600082015250565b7f4661696c656420746f2073656e64204c42520000000000000000000000000000600082015250565b61316581612bd6565b811461317057600080fd5b50565b61317c81612be8565b811461318757600080fd5b50565b61319381612bf4565b811461319e57600080fd5b50565b6131aa81612c2c565b81146131b557600080fd5b50565b6131c181612c46565b81146131cc57600080fd5b5056fea26469706673582212200e6989ffb73f13301aa06dffc6087523ca8bd105d565eefe19aef420aa84c14f64736f6c634300080600330000000000000000000000007fdbf4fe2dbbdf956c010b3dd83177cb86eb1b146da22a485fc06c9bce99691a2ff5af57b7fd20b09af4a6572f6a44473d6c1514000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000002302c75d734d53cf511527f517716735a7a71441

Deployed ByteCode

0x6080604052600436106101185760003560e01c80638da5cb5b116100a0578063d219750b11610064578063d219750b1461037d578063d837d14d146103a6578063e17b3360146103cf578063e7fa67e5146103fa578063eb1d28bb146104235761011f565b80638da5cb5b146102b9578063918dae3b146102e4578063a84db89414610321578063acfb03121461034a578063b1986acc146103545761011f565b80631fe543e3116100e75780631fe543e3146101f557806324600fc31461021e5780632a9a8fa4146102355780635229a6fd1461027257806361728f391461028e5761011f565b806301abd6d71461012457806308f6b8e7146101645780630c9490431461018d57806314621962146101b85761011f565b3661011f57005b600080fd5b34801561013057600080fd5b5061014b6004803603810190610146919061214b565b61044e565b60405161015b94939291906125f6565b60405180910390f35b34801561017057600080fd5b5061018b6004803603810190610186919061214b565b6104b8565b005b34801561019957600080fd5b506101a26106b9565b6040516101af9190612793565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612084565b6106df565b6040516101ec9190612664565b60405180910390f35b34801561020157600080fd5b5061021c600480360381019061021791906121a5565b6106ff565b005b34801561022a57600080fd5b50610233610b92565b005b34801561024157600080fd5b5061025c60048036038101906102579190612084565b610efb565b6040516102699190612a29565b60405180910390f35b61028c600480360381019061028791906120de565b610f13565b005b34801561029a57600080fd5b506102a3611696565b6040516102b09190612725565b60405180910390f35b3480156102c557600080fd5b506102ce61169c565b6040516102db91906125a4565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612084565b6116c0565b6040516103189190612a29565b60405180910390f35b34801561032d57600080fd5b5061034860048036038101906103439190612201565b6116d8565b005b6103526117c9565b005b34801561036057600080fd5b5061037b60048036038101906103769190612084565b6118d3565b005b34801561038957600080fd5b506103a4600480360381019061039f919061214b565b611a4c565b005b3480156103b257600080fd5b506103cd60048036038101906103c8919061214b565b611c6b565b005b3480156103db57600080fd5b506103e4611e44565b6040516103f191906127ae565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c919061211e565b611e6a565b005b34801561042f57600080fd5b50610438611f39565b6040516104459190612a6d565b60405180910390f35b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16908060010154905084565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90612809565b60405180910390fd5b60008111610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090612849565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016105ea939291906125bf565b602060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063c91906120b1565b90508061067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067590612949565b60405180910390fd5b7ff3ec7c68ae090b3d300d039b738d38d7cacf25b4f34b3497d9e6644f70329afe826040516106ad9190612a29565b60405180910390a15050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906128a9565b60405180910390fd5b6000600460008481526020019081526020016000206040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff161515151581526020016000820160159054906101000a900460ff161515151581526020016001820154815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614156108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b2906129a9565b60405180910390fd5b600060056000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060046000848152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690556000820160156101000a81549060ff0219169055600182016000905550506000600a8360008151811061099c5761099b612da5565b5b60200260200101516109ae9190612d16565b9050600060048260ff1610156109c757600090506109e2565b60088260ff1610156109dc57600190506109e1565b600290505b5b6000808260ff161480156109f7575083602001515b80610a13575060018260ff16148015610a1257508360200151155b5b15610a1d57600190505b600080856040015115610a55578215610a485760028660600151610a419190612b7c565b9150610a50565b856060015190505b610a70565b8215610a6f5760038660600151610a6c9190612b4b565b91505b5b8160066000886000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ac39190612af5565b925050819055508060076000886000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1d9190612af5565b92505081905550856000015173ffffffffffffffffffffffffffffffffffffffff167fac1b0776a152a5430bad8bef965aea330ab6e30871b654a15ecb64a8f4e71b07848689604001518a606001518787604051610b80969594939291906126c4565b60405180910390a25050505050505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000821180610c295750600081115b610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f906128c9565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115610da95760003373ffffffffffffffffffffffffffffffffffffffff1683604051610d219061258f565b60006040518083038185875af1925050503d8060008114610d5e576040519150601f19603f3d011682016040523d82523d6000602084013e610d63565b606091505b5050905080610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90612929565b60405180910390fd5b505b6000811115610ea7576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610e1192919061263b565b602060405180830381600087803b158015610e2b57600080fd5b505af1158015610e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6391906120b1565b905080610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c90612a09565b60405180910390fd5b505b3373ffffffffffffffffffffffffffffffffffffffff167ffbc3a599b784fe88772fc5abcc07223f64ca0b13acc341f4fb1e46bef0510eb48383604051610eef929190612a44565b60405180910390a25050565b60066020528060005260406000206000915090505481565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9790612829565b60405180910390fd5b60008034119050801561117357813414610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612869565b60405180910390fd5b60008211611032576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611029906129c9565b60405180910390fd5b81600261103f9190612b7c565b471015611081576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611078906127e9565b60405180910390fd5b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110dd91906125a4565b60206040518083038186803b1580156110f557600080fd5b505afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190612178565b101561116e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611165906127c9565b60405180910390fd5b61142c565b600034146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90612889565b60405180910390fd5b600082116111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906129c9565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b815260040161125a939291906125bf565b602060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac91906120b1565b9050806112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e5906129e9565b60405180910390fd5b8260026112fb9190612b7c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161135691906125a4565b60206040518083038186803b15801561136e57600080fd5b505afa158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a69190612178565b10156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de906127c9565b60405180910390fd5b8247101561142a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611421906127e9565b60405180910390fd5b505b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d3b1d30600354600260149054906101000a900467ffffffffffffffff16600362030d4060016040518663ffffffff1660e01b81526004016114ae959493929190612740565b602060405180830381600087803b1580156114c857600080fd5b505af11580156114dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115009190612178565b905060405180608001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200185151581526020018315158152602001848152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160000160156101000a81548160ff021916908315150217905550606082015181600101559050506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167fa616da74b550dd11493ad87451ebfdef7153cae5f80b7d8dbc072a4e8075265485848487604051611688949392919061267f565b60405180910390a250505050565b60035481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90612809565b60405180910390fd5b80600260146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f3fb6fc5b974e21a29292aeaa29ed6d0f23c5ae0a0e8e6599d973f88c53ea301b816040516117be9190612a6d565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612809565b60405180910390fd5b6000341161189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190612969565b60405180910390fd5b7fc43249e5bb8706113fbd95859b38261cede611e5382d4d3d3e35664a8aec600d346040516118c99190612a29565b60405180910390a1565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890612809565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c890612909565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6f0e7304358d9f5acc110757d682927f66d013808aa8bf39a4a4db0d4dbe39be81604051611a4191906125a4565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad190612809565b60405180910390fd5b60008111611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1490612849565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611b9c92919061263b565b602060405180830381600087803b158015611bb657600080fd5b505af1158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee91906120b1565b905080611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790612989565b60405180910390fd5b7fb0b2cc82911569fe0ec17ee2f98beac059df3117ce2f896acf504cca6caa887382604051611c5f9190612a29565b60405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf090612809565b60405180910390fd5b60008111611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3390612849565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611d839061258f565b60006040518083038185875af1925050503d8060008114611dc0576040519150601f19603f3d011682016040523d82523d6000602084013e611dc5565b606091505b5050905080611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e00906128e9565b60405180910390fd5b7f641bb248dba1f49578a3373556c6c43fe770837654a334c4e02a62cab00f8a4b82604051611e389190612a29565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90612809565b60405180910390fd5b806003819055507f21d77d94f4c9e163d289e2e4b3fa5fd25ce1f709ad72c23b6a675e94c8282b5281604051611f2e9190612725565b60405180910390a150565b600260149054906101000a900467ffffffffffffffff1681565b6000611f66611f6184612aad565b612a88565b90508083825260208201905082856020860282011115611f8957611f88612e08565b5b60005b85811015611fb95781611f9f8882612045565b845260208401935060208301925050600181019050611f8c565b5050509392505050565b600081359050611fd28161315c565b92915050565b600082601f830112611fed57611fec612e03565b5b8135611ffd848260208601611f53565b91505092915050565b60008135905061201581613173565b92915050565b60008151905061202a81613173565b92915050565b60008135905061203f8161318a565b92915050565b600081359050612054816131a1565b92915050565b600081519050612069816131a1565b92915050565b60008135905061207e816131b8565b92915050565b60006020828403121561209a57612099612e12565b5b60006120a884828501611fc3565b91505092915050565b6000602082840312156120c7576120c6612e12565b5b60006120d58482850161201b565b91505092915050565b600080604083850312156120f5576120f4612e12565b5b600061210385828601612006565b925050602061211485828601612045565b9150509250929050565b60006020828403121561213457612133612e12565b5b600061214284828501612030565b91505092915050565b60006020828403121561216157612160612e12565b5b600061216f84828501612045565b91505092915050565b60006020828403121561218e5761218d612e12565b5b600061219c8482850161205a565b91505092915050565b600080604083850312156121bc576121bb612e12565b5b60006121ca85828601612045565b925050602083013567ffffffffffffffff8111156121eb576121ea612e0d565b5b6121f785828601611fd8565b9150509250929050565b60006020828403121561221757612216612e12565b5b60006122258482850161206f565b91505092915050565b61223781612bd6565b82525050565b61224681612be8565b82525050565b61225581612bf4565b82525050565b61226481612c67565b82525050565b61227381612c8b565b82525050565b61228281612caf565b82525050565b61229181612cc1565b82525050565b6122a081612cd3565b82525050565b60006122b3601a83612ae4565b91506122be82612e28565b602082019050919050565b60006122d6601a83612ae4565b91506122e182612e51565b602082019050919050565b60006122f9600a83612ae4565b915061230482612e7a565b602082019050919050565b600061231c601883612ae4565b915061232782612ea3565b602082019050919050565b600061233f600e83612ae4565b915061234a82612ecc565b602082019050919050565b6000612362602683612ae4565b915061236d82612ef5565b604082019050919050565b6000612385601e83612ae4565b915061239082612f44565b602082019050919050565b60006123a8601483612ae4565b91506123b382612f6d565b602082019050919050565b60006123cb601483612ae4565b91506123d682612f96565b602082019050919050565b60006123ee601683612ae4565b91506123f982612fbf565b602082019050919050565b6000612411600b83612ae4565b915061241c82612fe8565b602082019050919050565b6000612434601283612ae4565b915061243f82613011565b602082019050919050565b6000612457601583612ae4565b91506124628261303a565b602082019050919050565b600061247a601283612ae4565b915061248582613063565b602082019050919050565b600061249d601683612ae4565b91506124a88261308c565b602082019050919050565b60006124c0600083612ad9565b91506124cb826130b5565b600082019050919050565b60006124e3600d83612ae4565b91506124ee826130b8565b602082019050919050565b6000612506601683612ae4565b9150612511826130e1565b602082019050919050565b6000612529601683612ae4565b91506125348261310a565b602082019050919050565b600061254c601283612ae4565b915061255782613133565b602082019050919050565b61256b81612c2c565b82525050565b61257a81612c46565b82525050565b61258981612c5a565b82525050565b600061259a826124b3565b9150819050919050565b60006020820190506125b9600083018461222e565b92915050565b60006060820190506125d4600083018661222e565b6125e1602083018561222e565b6125ee6040830184612562565b949350505050565b600060808201905061260b600083018761222e565b612618602083018661223d565b612625604083018561223d565b6126326060830184612562565b95945050505050565b6000604082019050612650600083018561222e565b61265d6020830184612562565b9392505050565b6000602082019050612679600083018461223d565b92915050565b6000608082019050612694600083018761223d565b6126a1602083018661223d565b6126ae6040830185612562565b6126bb6060830184612562565b95945050505050565b600060c0820190506126d9600083018961223d565b6126e66020830188612580565b6126f3604083018761223d565b6127006060830186612562565b61270d6080830185612562565b61271a60a0830184612562565b979650505050505050565b600060208201905061273a600083018461224c565b92915050565b600060a082019050612755600083018861224c565b6127626020830187612571565b61276f6040830186612297565b61277c6060830185612288565b6127896080830184612279565b9695505050505050565b60006020820190506127a8600083018461225b565b92915050565b60006020820190506127c3600083018461226a565b92915050565b600060208201905081810360008301526127e2816122a6565b9050919050565b60006020820190508181036000830152612802816122c9565b9050919050565b60006020820190508181036000830152612822816122ec565b9050919050565b600060208201905081810360008301526128428161230f565b9050919050565b6000602082019050818103600083015261286281612332565b9050919050565b6000602082019050818103600083015261288281612355565b9050919050565b600060208201905081810360008301526128a281612378565b9050919050565b600060208201905081810360008301526128c28161239b565b9050919050565b600060208201905081810360008301526128e2816123be565b9050919050565b60006020820190508181036000830152612902816123e1565b9050919050565b6000602082019050818103600083015261292281612404565b9050919050565b6000602082019050818103600083015261294281612427565b9050919050565b600060208201905081810360008301526129628161244a565b9050919050565b600060208201905081810360008301526129828161246d565b9050919050565b600060208201905081810360008301526129a281612490565b9050919050565b600060208201905081810360008301526129c2816124d6565b9050919050565b600060208201905081810360008301526129e2816124f9565b9050919050565b60006020820190508181036000830152612a028161251c565b9050919050565b60006020820190508181036000830152612a228161253f565b9050919050565b6000602082019050612a3e6000830184612562565b92915050565b6000604082019050612a596000830185612562565b612a666020830184612562565b9392505050565b6000602082019050612a826000830184612571565b92915050565b6000612a92612aa3565b9050612a9e8282612ce5565b919050565b6000604051905090565b600067ffffffffffffffff821115612ac857612ac7612dd4565b5b602082029050602081019050919050565b600081905092915050565b600082825260208201905092915050565b6000612b0082612c2c565b9150612b0b83612c2c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b4057612b3f612d47565b5b828201905092915050565b6000612b5682612c2c565b9150612b6183612c2c565b925082612b7157612b70612d76565b5b828204905092915050565b6000612b8782612c2c565b9150612b9283612c2c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bcb57612bca612d47565b5b828202905092915050565b6000612be182612c0c565b9050919050565b60008115159050919050565b6000819050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b6000612c7282612c79565b9050919050565b6000612c8482612c0c565b9050919050565b6000612c9682612c9d565b9050919050565b6000612ca882612c0c565b9050919050565b6000612cba82612c36565b9050919050565b6000612ccc82612c36565b9050919050565b6000612cde82612bfe565b9050919050565b612cee82612e17565b810181811067ffffffffffffffff82111715612d0d57612d0c612dd4565b5b80604052505050565b6000612d2182612c2c565b9150612d2c83612c2c565b925082612d3c57612d3b612d76565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e6f7420656e6f756768204c425220696e20636f6e7472616374000000000000600082015250565b7f4e6f7420656e6f7567682046544e20696e20636f6e7472616374000000000000600082015250565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b7f50656e64696e6720626574206e6f74207265736f6c7665640000000000000000600082015250565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b7f506172616d65746572205f616d6f756e74206d757374206d61746368206d736760008201527f2e76616c75650000000000000000000000000000000000000000000000000000602082015250565b7f446f206e6f742073656e642046544e20666f7220616e204c4252206265740000600082015250565b7f4f6e6c79205652462063616e2066756c66696c6c000000000000000000000000600082015250565b7f4e6f2066756e647320746f207769746864726177000000000000000000000000600082015250565b7f4661696c656420746f2077697468647261772046544e00000000000000000000600082015250565b7f496e76616c696420565246000000000000000000000000000000000000000000600082015250565b7f4661696c656420746f2073656e642046544e0000000000000000000000000000600082015250565b7f4661696c656420746f206465706f736974204c42520000000000000000000000600082015250565b7f4d7573742073656e6420736f6d652046544e0000000000000000000000000000600082015250565b7f4661696c656420746f207769746864726177204c425200000000000000000000600082015250565b50565b7f426574206e6f7420666f756e6400000000000000000000000000000000000000600082015250565b7f42657420616d6f756e74206d757374206265203e203000000000000000000000600082015250565b7f4661696c656420746f207472616e73666572204c425200000000000000000000600082015250565b7f4661696c656420746f2073656e64204c42520000000000000000000000000000600082015250565b61316581612bd6565b811461317057600080fd5b50565b61317c81612be8565b811461318757600080fd5b50565b61319381612bf4565b811461319e57600080fd5b50565b6131aa81612c2c565b81146131b557600080fd5b50565b6131c181612c46565b81146131cc57600080fd5b5056fea26469706673582212200e6989ffb73f13301aa06dffc6087523ca8bd105d565eefe19aef420aa84c14f64736f6c63430008060033
<script src="{@file}"> </script>