ETH Price: $2,660.74 (+1.61%)

Contract

0xea7e5398C09c06675cf35ab1Da4F04f19CD73DD2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Owner Change Tok...163102752023-01-01 6:58:23770 days ago1672556303IN
0xea7e5398...19CD73DD2
0 ETH0.0004291414.7433391
Owner Renew Key163102562023-01-01 6:54:35770 days ago1672556075IN
0xea7e5398...19CD73DD2
0 ETH0.0005127813.35643453
Owner Change Exp...163102492023-01-01 6:53:11770 days ago1672555991IN
0xea7e5398...19CD73DD2
0 ETH0.0003926213.49980666
Owner Renew Key161387092022-12-08 8:10:23794 days ago1670487023IN
0xea7e5398...19CD73DD2
0 ETH0.0005548814.45311754
Owner Renew Key160104212022-11-20 9:46:11811 days ago1668937571IN
0xea7e5398...19CD73DD2
0 ETH0.0004566311.89407587
Owner Renew Key159236902022-11-08 7:02:35824 days ago1667890955IN
0xea7e5398...19CD73DD2
0 ETH0.0005447814.18994733
Owner Change App...159028342022-11-05 9:10:47827 days ago1667639447IN
0xea7e5398...19CD73DD2
0 ETH0.0003991112.40224802
Owner Renew Key159014542022-11-05 4:33:11827 days ago1667622791IN
0xea7e5398...19CD73DD2
0 ETH0.0004831212.58390499
Owner Renew Key158879732022-11-03 7:21:23829 days ago1667460083IN
0xea7e5398...19CD73DD2
0 ETH0.0005956515.51506876
Owner Change Ren...158812862022-11-02 8:57:11830 days ago1667379431IN
0xea7e5398...19CD73DD2
0 ETH0.000296810.18452418
Owner Change Tok...158812832022-11-02 8:56:35830 days ago1667379395IN
0xea7e5398...19CD73DD2
0 ETH0.000290639.97248465
Owner Add Key158498642022-10-28 23:32:47834 days ago1666999967IN
0xea7e5398...19CD73DD2
0 ETH0.001012810
Owner Renew Key157929752022-10-21 0:44:11842 days ago1666313051IN
0xea7e5398...19CD73DD2
0 ETH0.0006910518
Owner Renew Key156741162022-10-04 10:16:11858 days ago1664878571IN
0xea7e5398...19CD73DD2
0 ETH0.000231316.02514611
Owner Add Key155649192022-09-19 3:34:47874 days ago1663558487IN
0xea7e5398...19CD73DD2
0 ETH0.000747957.38502177
Owner Renew Key155648092022-09-19 3:12:47874 days ago1663557167IN
0xea7e5398...19CD73DD2
0 ETH0.000227065.91448194
Owner Add Key155101482022-09-10 17:57:55882 days ago1662832675IN
0xea7e5398...19CD73DD2
0 ETH0.000985269.72808531
Owner Renew Key154678392022-09-03 21:57:57889 days ago1662242277IN
0xea7e5398...19CD73DD2
0 ETH0.000153183.97925721
Owner Renew Key154678072022-09-03 21:51:12889 days ago1662241872IN
0xea7e5398...19CD73DD2
0 ETH0.000183974.79199817
Withdraw Balance154080182022-08-25 8:14:19899 days ago1661415259IN
0xea7e5398...19CD73DD2
0 ETH0.000304759.91613264
Check Out153756822022-08-20 5:08:52904 days ago1660972132IN
0xea7e5398...19CD73DD2
0.5 ETH0.0012975411.86446661
Owner Allow User153718252022-08-19 14:30:52904 days ago1660919452IN
0xea7e5398...19CD73DD2
0 ETH0.0027139727.43548563

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
154080182022-08-25 8:14:19899 days ago1661415259
0xea7e5398...19CD73DD2
0.5 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OManager

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-18
*/

pragma solidity ^0.8.13;
// SPDX-License-Identifier: UNLICENSED
/*
   ___  __  __                                   
  / _ \|  \/  | __ _ _ __   __ _  __ _  ___ _ __ 
 | | | | |\/| |/ _` | '_ \ / _` |/ _` |/ _ \ '__|
 | |_| | |  | | (_| | | | | (_| | (_| |  __/ |   
  \___/|_|  |_|\__,_|_| |_|\__,_|\__, |\___|_|   
                                 |___/                     
*/ 
contract OManager {
    address private owner;
    uint256 public tokenPrice = 500000000000000000; // 0.5 Eth
    uint256 public renewPrice = 300000000000000000; // 0.3 Eth
    uint256 public transferPrice = 30000000000000000; // 0.03 Eth
    uint256 public expirationPeriod = 15 days;
    bool public saleIsActive = false;
    uint256 public maxSupply = 10;
    string public appVersion;

    mapping(address => AllowedUserStruct) private _allowedUsersStructs;
    address[] _allowedUsersList;

    struct AllowedUserStruct {
        uint256 timestamp;
        uint256 listPointer;
    }

    mapping(address => KeyOwnerStruct) private _keyOwnersStructs;
    address[] _keyOwnersList;

    struct KeyOwnerStruct {
        uint256 listPointer;
        uint256 expiration;
    }

    constructor() {
        owner = msg.sender;
        ownerAllowUser(msg.sender);
        ownerAddKey(msg.sender);
        appVersion = "1.0.0";
    }

    modifier requireOwner() {
        require(owner == msg.sender, "not an owner");
        _;
    }

    modifier callerIsUser() {
        require(tx.origin == msg.sender, "Caller cannot be a contract");
        _;
    }

    function _isAllowedUser(address userAddress)
        private
        view
        returns (bool isIndeed)
    {
        if (_allowedUsersList.length == 0) return false;
        return (_allowedUsersList[
            _allowedUsersStructs[userAddress].listPointer
        ] == userAddress);
    }
    
    function _isKeyOwner(address ownerAddress)
        private
        view
        returns (bool isIndeed)
    {
        if (_keyOwnersList.length == 0) return false;
        return (_keyOwnersList[_keyOwnersStructs[ownerAddress].listPointer] ==
            ownerAddress);
    }

    function ownerGetAllowedUsers()
        public
        view
        requireOwner
        returns (address[] memory)
    {
        return _allowedUsersList;
    }
    
    function ownerGetKeys()
        public
        view
        requireOwner
        returns (address[] memory)
    {
        return _keyOwnersList;
    }

    function getAllowedUsersCount()
        public
        view
        requireOwner
        returns (uint256 usersCount)
    {
        return _allowedUsersList.length;
    }

    function getKeyOwnersCount()
        public
        view
        requireOwner
        returns (uint256 ownersCount)
    {
        return _keyOwnersList.length;
    }

    function ownerChangeTokenPrice(uint256 newPrice) external requireOwner returns (bool success){
        tokenPrice = newPrice;
        return true;
    }

    function ownerChangeRenewPrice(uint256 newPrice) external requireOwner returns (bool success){
        renewPrice = newPrice;
        return true;
    }

    function ownerChangeTransferPrice(uint256 newPrice) external requireOwner returns (bool success){
        transferPrice = newPrice;
        return true;
    }

    function ownerChangeExpirationPeriod(uint256 newPeriod) external requireOwner returns (bool success){
        expirationPeriod = newPeriod;
        return true;
    }

    function ownerChangeTokensAmount(uint256 newTokensAmount) external requireOwner returns (bool success){
        maxSupply = newTokensAmount;
        return true;
    }

    function ownerChangeAppVersion(string calldata newAppVersion) external requireOwner returns (bool success){
        appVersion = newAppVersion;
        return true;
    }

    function toggleSale() external requireOwner {
        saleIsActive = !saleIsActive;
    }

    function ownerAllowUser(address userAddress)
        public
        requireOwner
        returns (bool success)
    {
        if (_isAllowedUser(userAddress)) revert();
        _allowedUsersStructs[userAddress].timestamp = block.timestamp;
        _allowedUsersList.push(userAddress);
        _allowedUsersStructs[userAddress].listPointer =
            _allowedUsersList.length -
            1;
        return true;
    }

    function ownerRemovePermission(address userAddress)
        external
        requireOwner
        returns (bool success)
    {
        require(_isAllowedUser(userAddress), "User is not whitelisted");
        uint256 rowToDelete = _allowedUsersStructs[userAddress].listPointer;
        delete _allowedUsersStructs[userAddress];
        delete _allowedUsersList[rowToDelete];
        return true;
    }

    function ownerAddKey(address key)
        public
        requireOwner
        returns (bool success)
    {
        require(!_isKeyOwner(key), "Already key owner");
        _keyOwnersList.push(key);
        _keyOwnersStructs[key].listPointer = _keyOwnersList.length - 1;
        _keyOwnersStructs[key].expiration = block.timestamp + expirationPeriod;
        return true;
    }

    function ownerRemoveKey(address key)
        external
        requireOwner
        returns (bool success)
    {
        require(_isKeyOwner(key), "There is no that key");
        uint256 rowToDelete = _keyOwnersStructs[key].listPointer;
        delete _keyOwnersStructs[key];
        delete _keyOwnersList[rowToDelete];
        return true;
    }

    function ownerRemoveKeyandPermission(address userAddress)
        external
        requireOwner
        returns (bool success)
    {
        require(_isAllowedUser(userAddress) || _isKeyOwner(userAddress), "User is neither whitelisted nor key owner");
        if(_isKeyOwner(userAddress)){
            uint256 rowToDelete = _keyOwnersStructs[userAddress].listPointer;
            delete _keyOwnersStructs[userAddress];
            delete _keyOwnersList[rowToDelete];
        }
        if(_isAllowedUser(userAddress)){
            uint256 rowToDelete = _allowedUsersStructs[userAddress].listPointer;
            delete _allowedUsersStructs[userAddress];
            delete _allowedUsersList[rowToDelete];
        }
        return true;
    }
    
    function ownerRenewKey(address key) public requireOwner {
        require(_isKeyOwner(key), "Token doesn't exist.");
        uint256 _currentExpiryTime = _keyOwnersStructs[key].expiration;
        if (block.timestamp > _currentExpiryTime) {
            _keyOwnersStructs[key].expiration = block.timestamp + expirationPeriod;
        } else {
            _keyOwnersStructs[key].expiration += expirationPeriod;
        }
    }

    function ownerIsKeyRenewed(address key) public view requireOwner returns (bool) {
        require(_isKeyOwner(key), "Token doesn't exist.");
        return _keyOwnersStructs[key].expiration > block.timestamp;
    }

    function ownerCheckTokenExpiry(address key) public view requireOwner returns (uint256) {
        require(_isKeyOwner(key), "Token doesn't exist.");
        return _keyOwnersStructs[key].expiration;
    }

    function withdrawBalance() external requireOwner returns (bool) {
        (bool success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "Transfer failed.");
        return success;
    }
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() external requireOwner {
        _transferOwnership(address(0));
    }

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

    function transferOwnership(address newOwner) external requireOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) private {
        address oldOwner = owner;
        owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    //
    //

    function isUserAdded(address userAddress)
        public
        view
        returns (bool)
    {
        return _isAllowedUser(userAddress);
    }

    function userHasKey(address userAddress)
        public
        view
        returns (bool)
    {
        return _isKeyOwner(userAddress);
    }

    function isKeyRenewed(address userAddress)
        public
        view
        returns (bool)
    {
        require(_isKeyOwner(userAddress), "Token doesn't exist");
        uint256 _currentExpiryTime = _keyOwnersStructs[userAddress].expiration;
        if (block.timestamp > _currentExpiryTime) {
            return false;
        } else {
            return true;
        }    
    }

    function amIAllowedToCheckout() public view returns (bool) {
        return _isAllowedUser(msg.sender);
    }

    function doIHaveAKey() public view returns (bool) {
        return (_isKeyOwner(msg.sender));
    }

    event KeyMinted(address key, uint pointer, uint expiration);

    function publicSaleCheckout() external payable callerIsUser {
        require(!_isKeyOwner(msg.sender), "Already key owner");
        require(!_isAllowedUser(msg.sender), "You have permission, check out from the dash");
        require(saleIsActive, "Public sale is not active");
        require(_keyOwnersList.length<maxSupply, "Max supply exceeded");
        require(msg.value >= tokenPrice, "Not enough ether sent");
        _keyOwnersList.push(msg.sender);
        _keyOwnersStructs[msg.sender].listPointer = _keyOwnersList.length - 1;
        _keyOwnersStructs[msg.sender].expiration = block.timestamp + expirationPeriod;
        _allowedUsersList.push(msg.sender);
        _allowedUsersStructs[msg.sender].timestamp = block.timestamp;
        _allowedUsersStructs[msg.sender].listPointer =_allowedUsersList.length -1;
        emit KeyMinted(msg.sender, _keyOwnersStructs[msg.sender].listPointer, _keyOwnersStructs[msg.sender].expiration);
    }

    function checkOut() external payable callerIsUser {
        require(_isAllowedUser(msg.sender), "This address isnt whitelisted");
        require(msg.value >= tokenPrice, "Not enough ether sent");
        require(!_isKeyOwner(msg.sender), "Already key owner");
        _keyOwnersList.push(msg.sender);
        _keyOwnersStructs[msg.sender].listPointer = _keyOwnersList.length - 1;
        _keyOwnersStructs[msg.sender].expiration = block.timestamp + expirationPeriod;
        emit KeyMinted(msg.sender, _keyOwnersStructs[msg.sender].listPointer, _keyOwnersStructs[msg.sender].expiration);
    } // view - cant modify, pure - cant modify or read

    event KeyTransferred(address oldOwner, address newOwner, uint256 expiration);
    event PermissionTransferred(address oldOwner, address newOwner);

    function transferKeyandPermission(address newOwner) external payable {
        require(_isAllowedUser(msg.sender) || _isKeyOwner(msg.sender), "User is neither whitelisted nor key owner");
        require(msg.value >= transferPrice, "Not enough ether sent");
        // require(!_isKeyOwner(msg.sender), "Already key owner");
        if(_isAllowedUser(msg.sender)){
            uint256 rowToDelete = _allowedUsersStructs[msg.sender].listPointer;
            delete _allowedUsersStructs[msg.sender];
            delete _allowedUsersList[rowToDelete];
            _allowedUsersStructs[newOwner].timestamp = block.timestamp;
            _allowedUsersList.push(newOwner);
            _allowedUsersStructs[newOwner].listPointer = _allowedUsersList.length - 1;
            emit PermissionTransferred(msg.sender, newOwner);
        }
        if(_isKeyOwner(msg.sender) && !_isKeyOwner(newOwner)){
            uint256 rowToDelete = _keyOwnersStructs[msg.sender].listPointer;
            uint256 expiration = _keyOwnersStructs[msg.sender].expiration;
            delete _keyOwnersStructs[msg.sender];
            delete _keyOwnersList[rowToDelete];
            _keyOwnersList.push(newOwner);
            _keyOwnersStructs[newOwner].listPointer = _keyOwnersList.length - 1;
            _keyOwnersStructs[newOwner].expiration = expiration;  
            emit KeyTransferred(msg.sender, newOwner, expiration);    
        }
    } // view - cant modify, pure - cant modify or read

    function renewKey() external payable {
        require(_isAllowedUser(msg.sender), "This address isnt allowed to renew");
        require(_isKeyOwner(msg.sender), "Token doesn't exist");
        require(msg.value >= renewPrice, "Not enough ether sent");
        uint256 _currentExpiryTime = _keyOwnersStructs[msg.sender].expiration;
        if (block.timestamp > _currentExpiryTime) {
            _keyOwnersStructs[msg.sender].expiration = block.timestamp + expirationPeriod;
        } else {
            _keyOwnersStructs[msg.sender].expiration += expirationPeriod;
        }
    }

    // function isKeyRenewed() public view returns (bool) {
    //     return _keyOwnersStructs[msg.sender].expiration > block.timestamp;
    // }

    function totalSupply() public view returns (uint){
        return _keyOwnersList.length;
    }

    function checkTokenExpiry() public view returns (uint256) {
        require(_isKeyOwner(msg.sender), "Token doesn't exist.");
        return _keyOwnersStructs[msg.sender].expiration;
    }
    // function balanceOf(address _owner) public view returns(uint256 balance){
    //     return _owner.balance;
    // }
    receive() external payable {} //fallback function
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"key","type":"address"},{"indexed":false,"internalType":"uint256","name":"pointer","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expiration","type":"uint256"}],"name":"KeyMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiration","type":"uint256"}],"name":"KeyTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"PermissionTransferred","type":"event"},{"inputs":[],"name":"amIAllowedToCheckout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"appVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkOut","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"checkTokenExpiry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"doIHaveAKey","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expirationPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllowedUsersCount","outputs":[{"internalType":"uint256","name":"usersCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getKeyOwnersCount","outputs":[{"internalType":"uint256","name":"ownersCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"isKeyRenewed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"isUserAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"key","type":"address"}],"name":"ownerAddKey","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"ownerAllowUser","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newAppVersion","type":"string"}],"name":"ownerChangeAppVersion","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"ownerChangeExpirationPeriod","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"ownerChangeRenewPrice","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"ownerChangeTokenPrice","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTokensAmount","type":"uint256"}],"name":"ownerChangeTokensAmount","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"ownerChangeTransferPrice","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"key","type":"address"}],"name":"ownerCheckTokenExpiry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerGetAllowedUsers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerGetKeys","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"key","type":"address"}],"name":"ownerIsKeyRenewed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"key","type":"address"}],"name":"ownerRemoveKey","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"ownerRemoveKeyandPermission","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"ownerRemovePermission","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"key","type":"address"}],"name":"ownerRenewKey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"publicSaleCheckout","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renewKey","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renewPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferKeyandPermission","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"userHasKey","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526706f05b59d3b20000600155670429d069189e0000600255666a94d74f4300006003556213c6806004556000600560006101000a81548160ff021916908315150217905550600a6006553480156200005b57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000ad336200011460201b60201c565b50620000bf33620002d060201b60201c565b506040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250600790805190602001906200010d92919062000679565b5062000982565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620001a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019e906200078a565b60405180910390fd5b620001b882620004d360201b60201c565b15620001c357600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506009829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050620002819190620007e5565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555060019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000363576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200035a906200078a565b60405180910390fd5b6200037482620005a660201b60201c565b15620003b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003ae9062000870565b60405180910390fd5b600b829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b805490506200042e9190620007e5565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506004544262000484919062000892565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555060019050919050565b60008060098054905003620004ec5760009050620005a1565b8173ffffffffffffffffffffffffffffffffffffffff166009600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154815481106200055c576200055b620008ef565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b600080600b8054905003620005bf576000905062000674565b8173ffffffffffffffffffffffffffffffffffffffff16600b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154815481106200062f576200062e620008ef565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b82805462000687906200094d565b90600052602060002090601f016020900481019282620006ab5760008555620006f7565b82601f10620006c657805160ff1916838001178555620006f7565b82800160010185558215620006f7579182015b82811115620006f6578251825591602001919060010190620006d9565b5b5090506200070691906200070a565b5090565b5b80821115620007255760008160009055506001016200070b565b5090565b600082825260208201905092915050565b7f6e6f7420616e206f776e65720000000000000000000000000000000000000000600082015250565b600062000772600c8362000729565b91506200077f826200073a565b602082019050919050565b60006020820190508181036000830152620007a58162000763565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007f282620007ac565b9150620007ff83620007ac565b925082821015620008155762000814620007b6565b5b828203905092915050565b7f416c7265616479206b6579206f776e6572000000000000000000000000000000600082015250565b60006200085860118362000729565b9150620008658262000820565b602082019050919050565b600060208201905081810360008301526200088b8162000849565b9050919050565b60006200089f82620007ac565b9150620008ac83620007ac565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008e457620008e3620007b6565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200096657607f821691505b6020821081036200097c576200097b6200091e565b5b50919050565b6143fe80620009926000396000f3fe60806040526004361061023f5760003560e01c80638eaaa3891161012e578063cba5751c116100ab578063e8fd95bb1161006f578063e8fd95bb1461087a578063eb5d0614146108b7578063eb8d2444146108f4578063efd5f6051461091f578063f2fde38b1461095c57610246565b8063cba5751c146107a0578063d5abeb01146107aa578063d5fa4139146107d5578063df69fd3d14610812578063e0e770c81461084f57610246565b8063a656b389116100f2578063a656b38914610693578063acede30d146106be578063b148b0fd146106fb578063b717ef2014610726578063ca472e141461076357610246565b80638eaaa389146105745780639b0508411461059f5780639b3cf6d4146105dc5780639bcfd4c7146106195780639f5f09e01461065657610246565b80635fd8c710116101bc5780637f99fb95116101805780637f99fb951461049d5780637ff9b596146104c857806381cd8194146104f35780638897cad31461051e5780638b3894901461054957610246565b80635fd8c7101461040f578063676103611461043a5780636dd5e84714610444578063715018a61461046f5780637d8966e41461048657610246565b80631e2bb5ac116102035780631e2bb5ac1461036a5780632ec53a4f146103865780635592d61b146103af5780635d23b9ff146103da5780635e090547146103e457610246565b80630340ea321461024b57806310f8ec49146102885780631756eaa1146102c557806318160ddd146103025780631a68b53d1461032d57610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906136ff565b610985565b60405161027f9190613747565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa91906136ff565b610b33565b6040516102bc9190613747565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e79190613798565b610b45565b6040516102f99190613747565b60405180910390f35b34801561030e57600080fd5b50610317610be5565b60405161032491906137d4565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f91906136ff565b610bf2565b6040516103619190613747565b60405180910390f35b610384600480360381019061037f91906136ff565b610dae565b005b34801561039257600080fd5b506103ad60048036038101906103a891906136ff565b6112f4565b005b3480156103bb57600080fd5b506103c46114d2565b6040516103d191906137d4565b60405180910390f35b6103e26114d8565b005b3480156103f057600080fd5b506103f9611987565b60405161040691906137d4565b60405180910390f35b34801561041b57600080fd5b50610424611a22565b6040516104319190613747565b60405180910390f35b610442611b65565b005b34801561045057600080fd5b50610459611d41565b60405161046691906138ad565b60405180910390f35b34801561047b57600080fd5b50610484611e5d565b005b34801561049257600080fd5b5061049b611ef7565b005b3480156104a957600080fd5b506104b2611fb1565b6040516104bf91906138ad565b60405180910390f35b3480156104d457600080fd5b506104dd6120cd565b6040516104ea91906137d4565b60405180910390f35b3480156104ff57600080fd5b506105086120d3565b60405161051591906137d4565b60405180910390f35b34801561052a57600080fd5b506105336120d9565b60405161054091906137d4565b60405180910390f35b34801561055557600080fd5b5061055e6120df565b60405161056b91906137d4565b60405180910390f35b34801561058057600080fd5b50610589612171565b60405161059691906137d4565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c191906136ff565b61220c565b6040516105d39190613747565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe9190613798565b61221e565b6040516106109190613747565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b91906136ff565b6122be565b60405161064d9190613747565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190613798565b6123e2565b60405161068a9190613747565b60405180910390f35b34801561069f57600080fd5b506106a8612482565b6040516106b59190613747565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190613798565b612492565b6040516106f29190613747565b60405180910390f35b34801561070757600080fd5b50610710612532565b60405161071d9190613968565b60405180910390f35b34801561073257600080fd5b5061074d600480360381019061074891906136ff565b6125c0565b60405161075a9190613747565b60405180910390f35b34801561076f57600080fd5b5061078a600480360381019061078591906139ef565b61266e565b6040516107979190613747565b60405180910390f35b6107a861271a565b005b3480156107b657600080fd5b506107bf612a2e565b6040516107cc91906137d4565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906136ff565b612a34565b6040516108099190613747565b60405180910390f35b34801561081e57600080fd5b50610839600480360381019061083491906136ff565b612bf0565b6040516108469190613747565b60405180910390f35b34801561085b57600080fd5b50610864612de1565b6040516108719190613747565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c91906136ff565b612df1565b6040516108ae9190613747565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d99190613798565b6130b6565b6040516108eb9190613747565b60405180910390f35b34801561090057600080fd5b50610909613156565b6040516109169190613747565b60405180910390f35b34801561092b57600080fd5b50610946600480360381019061094191906136ff565b613169565b60405161095391906137d4565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e91906136ff565b61328b565b005b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90613a88565b60405180910390fd5b610a1e82613394565b15610a2857600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506009829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050610ae49190613ad7565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555060019050919050565b6000610b3e82613394565b9050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90613a88565b60405180910390fd5b8160018190555060019050919050565b6000600b80549050905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7990613a88565b60405180910390fd5b610c8b82613462565b610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613b57565b60405180910390fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090555050600b8181548110610d7757610d76613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001915050919050565b610db733613394565b80610dc75750610dc633613462565b5b610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90613c18565b60405180910390fd5b600354341015610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290613c84565b60405180910390fd5b610e5433613394565b15611070576000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160009055505060098181548110610f0657610f05613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905542600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506009829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050610fef9190613ad7565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507ff34387c55974f8eb2620e75451a256e9dc5b70edd3dd646ad3703d0bef36f8843383604051611066929190613cb3565b60405180910390a1505b61107933613462565b801561108b575061108981613462565b155b156112f1576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090555050600b828154811061118457611183613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600b839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b805490506112269190613ad7565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507fe981f5cfde61d2e5dc16a3cd0e23497f47987de9e3e9c64f5a68bd75932787893384836040516112e693929190613cdc565b60405180910390a150505b50565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613a88565b60405180910390fd5b61138b81613462565b6113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613d5f565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508042111561147257600454426114279190613d7f565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506114ce565b600454600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546114c69190613d7f565b925050819055505b5050565b60025481565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613e21565b60405180910390fd5b61154f33613462565b1561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690613e8d565b60405180910390fd5b61159833613394565b156115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90613f1f565b60405180910390fd5b600560009054906101000a900460ff16611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90613f8b565b60405180910390fd5b600654600b8054905010611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790613ff7565b60405180910390fd5b6001543410156116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90613c84565b60405180910390fd5b600b339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b8054905061172a9190613ad7565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506004544261177e9190613d7f565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506009339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060016009805490506118809190613ad7565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f8e590345184cf7d0786f64fa6623e16f019b438933b95c32f64147885218f51d33600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015460405161197d93929190614017565b60405180910390a1565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e90613a88565b60405180910390fd5b600980549050905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990613a88565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611ad89061407f565b60006040518083038185875af1925050503d8060008114611b15576040519150601f19603f3d011682016040523d82523d6000602084013e611b1a565b606091505b5050905080611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b55906140e0565b60405180910390fd5b8091505090565b611b6e33613394565b611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba490614172565b60405180910390fd5b611bb633613462565b611bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec906141de565b60405180910390fd5b600254341015611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190613c84565b60405180910390fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080421115611ce25760045442611c979190613d7f565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550611d3e565b600454600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611d369190613d7f565b925050819055505b50565b60603373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890613a88565b60405180910390fd5b6009805480602002602001604051908101604052809291908181526020018280548015611e5357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e09575b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613a88565b60405180910390fd5b611ef56000613530565b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c90613a88565b60405180910390fd5b600560009054906101000a900460ff1615600560006101000a81548160ff021916908315150217905550565b60603373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203890613a88565b60405180910390fd5b600b8054806020026020016040519081016040528092919081815260200182805480156120c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612079575b5050505050905090565b60015481565b60035481565b60045481565b60006120ea33613462565b612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613d5f565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f890613a88565b60405180910390fd5b600b80549050905090565b600061221782613462565b9050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a590613a88565b60405180910390fd5b8160028190555060019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461234e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234590613a88565b60405180910390fd5b61235782613462565b612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d90613d5f565b60405180910390fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154119050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990613a88565b60405180910390fd5b8160038190555060019050919050565b600061248d33613394565b905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251990613a88565b60405180910390fd5b8160048190555060019050919050565b6007805461253f9061422d565b80601f016020809104026020016040519081016040528092919081815260200182805461256b9061422d565b80156125b85780601f1061258d576101008083540402835291602001916125b8565b820191906000526020600020905b81548152906001019060200180831161259b57829003601f168201915b505050505081565b60006125cb82613462565b61260a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612601906141de565b60405180910390fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080421115612663576000915050612669565b60019150505b919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f590613a88565b60405180910390fd5b82826007919061270f9291906135f4565b506001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614612788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277f90613e21565b60405180910390fd5b61279133613394565b6127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c7906142aa565b60405180910390fd5b600154341015612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c90613c84565b60405180910390fd5b61281e33613462565b1561285e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285590613e8d565b60405180910390fd5b600b339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b805490506128d39190613ad7565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600454426129279190613d7f565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f8e590345184cf7d0786f64fa6623e16f019b438933b95c32f64147885218f51d33600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154604051612a2493929190614017565b60405180910390a1565b60065481565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abb90613a88565b60405180910390fd5b612acd82613394565b612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390614316565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160009055505060098181548110612bb957612bb8613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001915050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7790613a88565b60405180910390fd5b612c8982613462565b15612cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc090613e8d565b60405180910390fd5b600b829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b80549050612d3e9190613ad7565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060045442612d929190613d7f565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555060019050919050565b6000612dec33613462565b905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7890613a88565b60405180910390fd5b612e8a82613394565b80612e9a5750612e9982613462565b5b612ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed090613c18565b60405180910390fd5b612ee282613462565b15612fc3576000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090555050600b8181548110612f9457612f93613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505b612fcc82613394565b156130ad576000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000905550506009818154811061307e5761307d613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505b60019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313d90613a88565b60405180910390fd5b8160068190555060019050919050565b600560009054906101000a900460ff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f090613a88565b60405180910390fd5b61320282613462565b613241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323890613d5f565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331090613a88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337f906143a8565b60405180910390fd5b61339181613530565b50565b600080600980549050036133ab576000905061345d565b8173ffffffffffffffffffffffffffffffffffffffff166009600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548154811061341857613417613b77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b600080600b8054905003613479576000905061352b565b8173ffffffffffffffffffffffffffffffffffffffff16600b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154815481106134e6576134e5613b77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546136009061422d565b90600052602060002090601f0160209004810192826136225760008555613669565b82601f1061363b57803560ff1916838001178555613669565b82800160010185558215613669579182015b8281111561366857823582559160200191906001019061364d565b5b509050613676919061367a565b5090565b5b8082111561369357600081600090555060010161367b565b5090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136cc826136a1565b9050919050565b6136dc816136c1565b81146136e757600080fd5b50565b6000813590506136f9816136d3565b92915050565b60006020828403121561371557613714613697565b5b6000613723848285016136ea565b91505092915050565b60008115159050919050565b6137418161372c565b82525050565b600060208201905061375c6000830184613738565b92915050565b6000819050919050565b61377581613762565b811461378057600080fd5b50565b6000813590506137928161376c565b92915050565b6000602082840312156137ae576137ad613697565b5b60006137bc84828501613783565b91505092915050565b6137ce81613762565b82525050565b60006020820190506137e960008301846137c5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613824816136c1565b82525050565b6000613836838361381b565b60208301905092915050565b6000602082019050919050565b600061385a826137ef565b61386481856137fa565b935061386f8361380b565b8060005b838110156138a0578151613887888261382a565b975061389283613842565b925050600181019050613873565b5085935050505092915050565b600060208201905081810360008301526138c7818461384f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139095780820151818401526020810190506138ee565b83811115613918576000848401525b50505050565b6000601f19601f8301169050919050565b600061393a826138cf565b61394481856138da565b93506139548185602086016138eb565b61395d8161391e565b840191505092915050565b60006020820190508181036000830152613982818461392f565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126139af576139ae61398a565b5b8235905067ffffffffffffffff8111156139cc576139cb61398f565b5b6020830191508360018202830111156139e8576139e7613994565b5b9250929050565b60008060208385031215613a0657613a05613697565b5b600083013567ffffffffffffffff811115613a2457613a2361369c565b5b613a3085828601613999565b92509250509250929050565b7f6e6f7420616e206f776e65720000000000000000000000000000000000000000600082015250565b6000613a72600c836138da565b9150613a7d82613a3c565b602082019050919050565b60006020820190508181036000830152613aa181613a65565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ae282613762565b9150613aed83613762565b925082821015613b0057613aff613aa8565b5b828203905092915050565b7f5468657265206973206e6f2074686174206b6579000000000000000000000000600082015250565b6000613b416014836138da565b9150613b4c82613b0b565b602082019050919050565b60006020820190508181036000830152613b7081613b34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f55736572206973206e6569746865722077686974656c6973746564206e6f722060008201527f6b6579206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613c026029836138da565b9150613c0d82613ba6565b604082019050919050565b60006020820190508181036000830152613c3181613bf5565b9050919050565b7f4e6f7420656e6f7567682065746865722073656e740000000000000000000000600082015250565b6000613c6e6015836138da565b9150613c7982613c38565b602082019050919050565b60006020820190508181036000830152613c9d81613c61565b9050919050565b613cad816136c1565b82525050565b6000604082019050613cc86000830185613ca4565b613cd56020830184613ca4565b9392505050565b6000606082019050613cf16000830186613ca4565b613cfe6020830185613ca4565b613d0b60408301846137c5565b949350505050565b7f546f6b656e20646f65736e27742065786973742e000000000000000000000000600082015250565b6000613d496014836138da565b9150613d5482613d13565b602082019050919050565b60006020820190508181036000830152613d7881613d3c565b9050919050565b6000613d8a82613762565b9150613d9583613762565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613dca57613dc9613aa8565b5b828201905092915050565b7f43616c6c65722063616e6e6f74206265206120636f6e74726163740000000000600082015250565b6000613e0b601b836138da565b9150613e1682613dd5565b602082019050919050565b60006020820190508181036000830152613e3a81613dfe565b9050919050565b7f416c7265616479206b6579206f776e6572000000000000000000000000000000600082015250565b6000613e776011836138da565b9150613e8282613e41565b602082019050919050565b60006020820190508181036000830152613ea681613e6a565b9050919050565b7f596f752068617665207065726d697373696f6e2c20636865636b206f7574206660008201527f726f6d2074686520646173680000000000000000000000000000000000000000602082015250565b6000613f09602c836138da565b9150613f1482613ead565b604082019050919050565b60006020820190508181036000830152613f3881613efc565b9050919050565b7f5075626c69632073616c65206973206e6f742061637469766500000000000000600082015250565b6000613f756019836138da565b9150613f8082613f3f565b602082019050919050565b60006020820190508181036000830152613fa481613f68565b9050919050565b7f4d617820737570706c7920657863656564656400000000000000000000000000600082015250565b6000613fe16013836138da565b9150613fec82613fab565b602082019050919050565b6000602082019050818103600083015261401081613fd4565b9050919050565b600060608201905061402c6000830186613ca4565b61403960208301856137c5565b61404660408301846137c5565b949350505050565b600081905092915050565b50565b600061406960008361404e565b915061407482614059565b600082019050919050565b600061408a8261405c565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b60006140ca6010836138da565b91506140d582614094565b602082019050919050565b600060208201905081810360008301526140f9816140bd565b9050919050565b7f5468697320616464726573732069736e7420616c6c6f77656420746f2072656e60008201527f6577000000000000000000000000000000000000000000000000000000000000602082015250565b600061415c6022836138da565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b7f546f6b656e20646f65736e277420657869737400000000000000000000000000600082015250565b60006141c86013836138da565b91506141d382614192565b602082019050919050565b600060208201905081810360008301526141f7816141bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061424557607f821691505b602082108103614258576142576141fe565b5b50919050565b7f5468697320616464726573732069736e742077686974656c6973746564000000600082015250565b6000614294601d836138da565b915061429f8261425e565b602082019050919050565b600060208201905081810360008301526142c381614287565b9050919050565b7f55736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b60006143006017836138da565b915061430b826142ca565b602082019050919050565b6000602082019050818103600083015261432f816142f3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143926026836138da565b915061439d82614336565b604082019050919050565b600060208201905081810360008301526143c181614385565b905091905056fea2646970667358221220deb9a0c2d26be103108e624341ec5cdb02731fe50b2a1b96677d4b683b1d8b6764736f6c634300080d0033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80638eaaa3891161012e578063cba5751c116100ab578063e8fd95bb1161006f578063e8fd95bb1461087a578063eb5d0614146108b7578063eb8d2444146108f4578063efd5f6051461091f578063f2fde38b1461095c57610246565b8063cba5751c146107a0578063d5abeb01146107aa578063d5fa4139146107d5578063df69fd3d14610812578063e0e770c81461084f57610246565b8063a656b389116100f2578063a656b38914610693578063acede30d146106be578063b148b0fd146106fb578063b717ef2014610726578063ca472e141461076357610246565b80638eaaa389146105745780639b0508411461059f5780639b3cf6d4146105dc5780639bcfd4c7146106195780639f5f09e01461065657610246565b80635fd8c710116101bc5780637f99fb95116101805780637f99fb951461049d5780637ff9b596146104c857806381cd8194146104f35780638897cad31461051e5780638b3894901461054957610246565b80635fd8c7101461040f578063676103611461043a5780636dd5e84714610444578063715018a61461046f5780637d8966e41461048657610246565b80631e2bb5ac116102035780631e2bb5ac1461036a5780632ec53a4f146103865780635592d61b146103af5780635d23b9ff146103da5780635e090547146103e457610246565b80630340ea321461024b57806310f8ec49146102885780631756eaa1146102c557806318160ddd146103025780631a68b53d1461032d57610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906136ff565b610985565b60405161027f9190613747565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa91906136ff565b610b33565b6040516102bc9190613747565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e79190613798565b610b45565b6040516102f99190613747565b60405180910390f35b34801561030e57600080fd5b50610317610be5565b60405161032491906137d4565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f91906136ff565b610bf2565b6040516103619190613747565b60405180910390f35b610384600480360381019061037f91906136ff565b610dae565b005b34801561039257600080fd5b506103ad60048036038101906103a891906136ff565b6112f4565b005b3480156103bb57600080fd5b506103c46114d2565b6040516103d191906137d4565b60405180910390f35b6103e26114d8565b005b3480156103f057600080fd5b506103f9611987565b60405161040691906137d4565b60405180910390f35b34801561041b57600080fd5b50610424611a22565b6040516104319190613747565b60405180910390f35b610442611b65565b005b34801561045057600080fd5b50610459611d41565b60405161046691906138ad565b60405180910390f35b34801561047b57600080fd5b50610484611e5d565b005b34801561049257600080fd5b5061049b611ef7565b005b3480156104a957600080fd5b506104b2611fb1565b6040516104bf91906138ad565b60405180910390f35b3480156104d457600080fd5b506104dd6120cd565b6040516104ea91906137d4565b60405180910390f35b3480156104ff57600080fd5b506105086120d3565b60405161051591906137d4565b60405180910390f35b34801561052a57600080fd5b506105336120d9565b60405161054091906137d4565b60405180910390f35b34801561055557600080fd5b5061055e6120df565b60405161056b91906137d4565b60405180910390f35b34801561058057600080fd5b50610589612171565b60405161059691906137d4565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c191906136ff565b61220c565b6040516105d39190613747565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe9190613798565b61221e565b6040516106109190613747565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b91906136ff565b6122be565b60405161064d9190613747565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190613798565b6123e2565b60405161068a9190613747565b60405180910390f35b34801561069f57600080fd5b506106a8612482565b6040516106b59190613747565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190613798565b612492565b6040516106f29190613747565b60405180910390f35b34801561070757600080fd5b50610710612532565b60405161071d9190613968565b60405180910390f35b34801561073257600080fd5b5061074d600480360381019061074891906136ff565b6125c0565b60405161075a9190613747565b60405180910390f35b34801561076f57600080fd5b5061078a600480360381019061078591906139ef565b61266e565b6040516107979190613747565b60405180910390f35b6107a861271a565b005b3480156107b657600080fd5b506107bf612a2e565b6040516107cc91906137d4565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906136ff565b612a34565b6040516108099190613747565b60405180910390f35b34801561081e57600080fd5b50610839600480360381019061083491906136ff565b612bf0565b6040516108469190613747565b60405180910390f35b34801561085b57600080fd5b50610864612de1565b6040516108719190613747565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c91906136ff565b612df1565b6040516108ae9190613747565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d99190613798565b6130b6565b6040516108eb9190613747565b60405180910390f35b34801561090057600080fd5b50610909613156565b6040516109169190613747565b60405180910390f35b34801561092b57600080fd5b50610946600480360381019061094191906136ff565b613169565b60405161095391906137d4565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e91906136ff565b61328b565b005b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90613a88565b60405180910390fd5b610a1e82613394565b15610a2857600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506009829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050610ae49190613ad7565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555060019050919050565b6000610b3e82613394565b9050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90613a88565b60405180910390fd5b8160018190555060019050919050565b6000600b80549050905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7990613a88565b60405180910390fd5b610c8b82613462565b610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613b57565b60405180910390fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090555050600b8181548110610d7757610d76613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001915050919050565b610db733613394565b80610dc75750610dc633613462565b5b610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90613c18565b60405180910390fd5b600354341015610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290613c84565b60405180910390fd5b610e5433613394565b15611070576000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160009055505060098181548110610f0657610f05613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905542600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506009829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050610fef9190613ad7565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507ff34387c55974f8eb2620e75451a256e9dc5b70edd3dd646ad3703d0bef36f8843383604051611066929190613cb3565b60405180910390a1505b61107933613462565b801561108b575061108981613462565b155b156112f1576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090555050600b828154811061118457611183613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600b839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b805490506112269190613ad7565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507fe981f5cfde61d2e5dc16a3cd0e23497f47987de9e3e9c64f5a68bd75932787893384836040516112e693929190613cdc565b60405180910390a150505b50565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613a88565b60405180910390fd5b61138b81613462565b6113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613d5f565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508042111561147257600454426114279190613d7f565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506114ce565b600454600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546114c69190613d7f565b925050819055505b5050565b60025481565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613e21565b60405180910390fd5b61154f33613462565b1561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690613e8d565b60405180910390fd5b61159833613394565b156115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90613f1f565b60405180910390fd5b600560009054906101000a900460ff16611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90613f8b565b60405180910390fd5b600654600b8054905010611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790613ff7565b60405180910390fd5b6001543410156116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90613c84565b60405180910390fd5b600b339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b8054905061172a9190613ad7565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506004544261177e9190613d7f565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506009339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060016009805490506118809190613ad7565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f8e590345184cf7d0786f64fa6623e16f019b438933b95c32f64147885218f51d33600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015460405161197d93929190614017565b60405180910390a1565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e90613a88565b60405180910390fd5b600980549050905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990613a88565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611ad89061407f565b60006040518083038185875af1925050503d8060008114611b15576040519150601f19603f3d011682016040523d82523d6000602084013e611b1a565b606091505b5050905080611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b55906140e0565b60405180910390fd5b8091505090565b611b6e33613394565b611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba490614172565b60405180910390fd5b611bb633613462565b611bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec906141de565b60405180910390fd5b600254341015611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190613c84565b60405180910390fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080421115611ce25760045442611c979190613d7f565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550611d3e565b600454600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611d369190613d7f565b925050819055505b50565b60603373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890613a88565b60405180910390fd5b6009805480602002602001604051908101604052809291908181526020018280548015611e5357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e09575b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613a88565b60405180910390fd5b611ef56000613530565b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c90613a88565b60405180910390fd5b600560009054906101000a900460ff1615600560006101000a81548160ff021916908315150217905550565b60603373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203890613a88565b60405180910390fd5b600b8054806020026020016040519081016040528092919081815260200182805480156120c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612079575b5050505050905090565b60015481565b60035481565b60045481565b60006120ea33613462565b612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613d5f565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f890613a88565b60405180910390fd5b600b80549050905090565b600061221782613462565b9050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a590613a88565b60405180910390fd5b8160028190555060019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461234e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234590613a88565b60405180910390fd5b61235782613462565b612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d90613d5f565b60405180910390fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154119050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990613a88565b60405180910390fd5b8160038190555060019050919050565b600061248d33613394565b905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251990613a88565b60405180910390fd5b8160048190555060019050919050565b6007805461253f9061422d565b80601f016020809104026020016040519081016040528092919081815260200182805461256b9061422d565b80156125b85780601f1061258d576101008083540402835291602001916125b8565b820191906000526020600020905b81548152906001019060200180831161259b57829003601f168201915b505050505081565b60006125cb82613462565b61260a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612601906141de565b60405180910390fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080421115612663576000915050612669565b60019150505b919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f590613a88565b60405180910390fd5b82826007919061270f9291906135f4565b506001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614612788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277f90613e21565b60405180910390fd5b61279133613394565b6127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c7906142aa565b60405180910390fd5b600154341015612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c90613c84565b60405180910390fd5b61281e33613462565b1561285e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285590613e8d565b60405180910390fd5b600b339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b805490506128d39190613ad7565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600454426129279190613d7f565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f8e590345184cf7d0786f64fa6623e16f019b438933b95c32f64147885218f51d33600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154604051612a2493929190614017565b60405180910390a1565b60065481565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abb90613a88565b60405180910390fd5b612acd82613394565b612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390614316565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160009055505060098181548110612bb957612bb8613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001915050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7790613a88565b60405180910390fd5b612c8982613462565b15612cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc090613e8d565b60405180910390fd5b600b829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b80549050612d3e9190613ad7565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060045442612d929190613d7f565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555060019050919050565b6000612dec33613462565b905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7890613a88565b60405180910390fd5b612e8a82613394565b80612e9a5750612e9982613462565b5b612ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed090613c18565b60405180910390fd5b612ee282613462565b15612fc3576000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090555050600b8181548110612f9457612f93613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505b612fcc82613394565b156130ad576000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000905550506009818154811061307e5761307d613b77565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505b60019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313d90613a88565b60405180910390fd5b8160068190555060019050919050565b600560009054906101000a900460ff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f090613a88565b60405180910390fd5b61320282613462565b613241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323890613d5f565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331090613a88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337f906143a8565b60405180910390fd5b61339181613530565b50565b600080600980549050036133ab576000905061345d565b8173ffffffffffffffffffffffffffffffffffffffff166009600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548154811061341857613417613b77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b600080600b8054905003613479576000905061352b565b8173ffffffffffffffffffffffffffffffffffffffff16600b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154815481106134e6576134e5613b77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546136009061422d565b90600052602060002090601f0160209004810192826136225760008555613669565b82601f1061363b57803560ff1916838001178555613669565b82800160010185558215613669579182015b8281111561366857823582559160200191906001019061364d565b5b509050613676919061367a565b5090565b5b8082111561369357600081600090555060010161367b565b5090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136cc826136a1565b9050919050565b6136dc816136c1565b81146136e757600080fd5b50565b6000813590506136f9816136d3565b92915050565b60006020828403121561371557613714613697565b5b6000613723848285016136ea565b91505092915050565b60008115159050919050565b6137418161372c565b82525050565b600060208201905061375c6000830184613738565b92915050565b6000819050919050565b61377581613762565b811461378057600080fd5b50565b6000813590506137928161376c565b92915050565b6000602082840312156137ae576137ad613697565b5b60006137bc84828501613783565b91505092915050565b6137ce81613762565b82525050565b60006020820190506137e960008301846137c5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613824816136c1565b82525050565b6000613836838361381b565b60208301905092915050565b6000602082019050919050565b600061385a826137ef565b61386481856137fa565b935061386f8361380b565b8060005b838110156138a0578151613887888261382a565b975061389283613842565b925050600181019050613873565b5085935050505092915050565b600060208201905081810360008301526138c7818461384f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139095780820151818401526020810190506138ee565b83811115613918576000848401525b50505050565b6000601f19601f8301169050919050565b600061393a826138cf565b61394481856138da565b93506139548185602086016138eb565b61395d8161391e565b840191505092915050565b60006020820190508181036000830152613982818461392f565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126139af576139ae61398a565b5b8235905067ffffffffffffffff8111156139cc576139cb61398f565b5b6020830191508360018202830111156139e8576139e7613994565b5b9250929050565b60008060208385031215613a0657613a05613697565b5b600083013567ffffffffffffffff811115613a2457613a2361369c565b5b613a3085828601613999565b92509250509250929050565b7f6e6f7420616e206f776e65720000000000000000000000000000000000000000600082015250565b6000613a72600c836138da565b9150613a7d82613a3c565b602082019050919050565b60006020820190508181036000830152613aa181613a65565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ae282613762565b9150613aed83613762565b925082821015613b0057613aff613aa8565b5b828203905092915050565b7f5468657265206973206e6f2074686174206b6579000000000000000000000000600082015250565b6000613b416014836138da565b9150613b4c82613b0b565b602082019050919050565b60006020820190508181036000830152613b7081613b34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f55736572206973206e6569746865722077686974656c6973746564206e6f722060008201527f6b6579206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613c026029836138da565b9150613c0d82613ba6565b604082019050919050565b60006020820190508181036000830152613c3181613bf5565b9050919050565b7f4e6f7420656e6f7567682065746865722073656e740000000000000000000000600082015250565b6000613c6e6015836138da565b9150613c7982613c38565b602082019050919050565b60006020820190508181036000830152613c9d81613c61565b9050919050565b613cad816136c1565b82525050565b6000604082019050613cc86000830185613ca4565b613cd56020830184613ca4565b9392505050565b6000606082019050613cf16000830186613ca4565b613cfe6020830185613ca4565b613d0b60408301846137c5565b949350505050565b7f546f6b656e20646f65736e27742065786973742e000000000000000000000000600082015250565b6000613d496014836138da565b9150613d5482613d13565b602082019050919050565b60006020820190508181036000830152613d7881613d3c565b9050919050565b6000613d8a82613762565b9150613d9583613762565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613dca57613dc9613aa8565b5b828201905092915050565b7f43616c6c65722063616e6e6f74206265206120636f6e74726163740000000000600082015250565b6000613e0b601b836138da565b9150613e1682613dd5565b602082019050919050565b60006020820190508181036000830152613e3a81613dfe565b9050919050565b7f416c7265616479206b6579206f776e6572000000000000000000000000000000600082015250565b6000613e776011836138da565b9150613e8282613e41565b602082019050919050565b60006020820190508181036000830152613ea681613e6a565b9050919050565b7f596f752068617665207065726d697373696f6e2c20636865636b206f7574206660008201527f726f6d2074686520646173680000000000000000000000000000000000000000602082015250565b6000613f09602c836138da565b9150613f1482613ead565b604082019050919050565b60006020820190508181036000830152613f3881613efc565b9050919050565b7f5075626c69632073616c65206973206e6f742061637469766500000000000000600082015250565b6000613f756019836138da565b9150613f8082613f3f565b602082019050919050565b60006020820190508181036000830152613fa481613f68565b9050919050565b7f4d617820737570706c7920657863656564656400000000000000000000000000600082015250565b6000613fe16013836138da565b9150613fec82613fab565b602082019050919050565b6000602082019050818103600083015261401081613fd4565b9050919050565b600060608201905061402c6000830186613ca4565b61403960208301856137c5565b61404660408301846137c5565b949350505050565b600081905092915050565b50565b600061406960008361404e565b915061407482614059565b600082019050919050565b600061408a8261405c565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b60006140ca6010836138da565b91506140d582614094565b602082019050919050565b600060208201905081810360008301526140f9816140bd565b9050919050565b7f5468697320616464726573732069736e7420616c6c6f77656420746f2072656e60008201527f6577000000000000000000000000000000000000000000000000000000000000602082015250565b600061415c6022836138da565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b7f546f6b656e20646f65736e277420657869737400000000000000000000000000600082015250565b60006141c86013836138da565b91506141d382614192565b602082019050919050565b600060208201905081810360008301526141f7816141bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061424557607f821691505b602082108103614258576142576141fe565b5b50919050565b7f5468697320616464726573732069736e742077686974656c6973746564000000600082015250565b6000614294601d836138da565b915061429f8261425e565b602082019050919050565b600060208201905081810360008301526142c381614287565b9050919050565b7f55736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b60006143006017836138da565b915061430b826142ca565b602082019050919050565b6000602082019050818103600083015261432f816142f3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143926026836138da565b915061439d82614336565b604082019050919050565b600060208201905081810360008301526143c181614385565b905091905056fea2646970667358221220deb9a0c2d26be103108e624341ec5cdb02731fe50b2a1b96677d4b683b1d8b6764736f6c634300080d0033

Deployed Bytecode Sourcemap

391:13783:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4040:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8639:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2910:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13695:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5293:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11446:1439;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6426:432;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;508:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9660:963;;;:::i;:::-;;2545:177;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7305:223;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12943:592;;;:::i;:::-;;2200:168;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7877:100;;;;;;;;;;;;;:::i;:::-;;3941:91;;;;;;;;;;;;;:::i;:::-;;2380:157;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;444:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;572:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;639:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13799:191;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2730:172;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8801:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3073:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6866:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3236:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9364:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3405:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;762:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8959:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3760:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10631:602;;;:::i;:::-;;726:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4481:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4899:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9483:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5657:757;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3582:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;687:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7091:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8077:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4040:433;4141:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;4175:27:::1;4190:11;4175:14;:27::i;:::-;4171:41;;;4204:8;::::0;::::1;4171:41;4269:15;4223:20;:33;4244:11;4223:33;;;;;;;;;;;;;;;:43;;:61;;;;4295:17;4318:11;4295:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4442:1;4402:17;:24;;;;:41;;;;:::i;:::-;4341:20;:33;4362:11;4341:33;;;;;;;;;;;;;;;:45;;:102;;;;4461:4;4454:11;;4040:433:::0;;;:::o;8639:154::-;8729:4;8758:27;8773:11;8758:14;:27::i;:::-;8751:34;;8639:154;;;:::o;2910:155::-;2990:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3027:8:::1;3014:10;:21;;;;3053:4;3046:11;;2910:155:::0;;;:::o;13695:96::-;13739:4;13762:14;:21;;;;13755:28;;13695:96;:::o;5293:356::-;5388:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;5426:16:::1;5438:3;5426:11;:16::i;:::-;5418:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;5478:19;5500:17;:22;5518:3;5500:22;;;;;;;;;;;;;;;:34;;;5478:56;;5552:17;:22;5570:3;5552:22;;;;;;;;;;;;;;;;5545:29:::0;::::1;;;;;;;;;;;;;5592:14;5607:11;5592:27;;;;;;;;:::i;:::-;;;;;;;;;;5585:34;;;;;;;;;;;5637:4;5630:11;;;5293:356:::0;;;:::o;11446:1439::-;11534:26;11549:10;11534:14;:26::i;:::-;:53;;;;11564:23;11576:10;11564:11;:23::i;:::-;11534:53;11526:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;11665:13;;11652:9;:26;;11644:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11786:26;11801:10;11786:14;:26::i;:::-;11783:500;;;11828:19;11850:20;:32;11871:10;11850:32;;;;;;;;;;;;;;;:44;;;11828:66;;11916:20;:32;11937:10;11916:32;;;;;;;;;;;;;;;;11909:39;;;;;;;;;;;;;;11970:17;11988:11;11970:30;;;;;;;;:::i;:::-;;;;;;;;;;11963:37;;;;;;;;;;;12058:15;12015:20;:30;12036:8;12015:30;;;;;;;;;;;;;;;:40;;:58;;;;12088:17;12111:8;12088:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12207:1;12180:17;:24;;;;:28;;;;:::i;:::-;12135:20;:30;12156:8;12135:30;;;;;;;;;;;;;;;:42;;:73;;;;12228:43;12250:10;12262:8;12228:43;;;;;;;:::i;:::-;;;;;;;;11813:470;11783:500;12296:23;12308:10;12296:11;:23::i;:::-;:49;;;;;12324:21;12336:8;12324:11;:21::i;:::-;12323:22;12296:49;12293:585;;;12361:19;12383:17;:29;12401:10;12383:29;;;;;;;;;;;;;;;:41;;;12361:63;;12439:18;12460:17;:29;12478:10;12460:29;;;;;;;;;;;;;;;:40;;;12439:61;;12522:17;:29;12540:10;12522:29;;;;;;;;;;;;;;;;12515:36;;;;;;;;;;;;;;12573:14;12588:11;12573:27;;;;;;;;:::i;:::-;;;;;;;;;;12566:34;;;;;;;;;;;12615:14;12635:8;12615:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12725:1;12701:14;:21;;;;:25;;;;:::i;:::-;12659:17;:27;12677:8;12659:27;;;;;;;;;;;;;;;:39;;:67;;;;12782:10;12741:17;:27;12759:8;12741:27;;;;;;;;;;;;;;;:38;;:51;;;;12814:48;12829:10;12841:8;12851:10;12814:48;;;;;;;;:::i;:::-;;;;;;;;12346:532;;12293:585;11446:1439;:::o;6426:432::-;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6501:16:::1;6513:3;6501:11;:16::i;:::-;6493:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6553:26;6582:17;:22;6600:3;6582:22;;;;;;;;;;;;;;;:33;;;6553:62;;6648:18;6630:15;:36;6626:225;;;6737:16;;6719:15;:34;;;;:::i;:::-;6683:17;:22;6701:3;6683:22;;;;;;;;;;;;;;;:33;;:70;;;;6626:225;;;6823:16;;6786:17;:22;6804:3;6786:22;;;;;;;;;;;;;;;:33;;;:53;;;;;;;:::i;:::-;;;;;;;;6626:225;6482:376;6426:432:::0;:::o;508:46::-;;;;:::o;9660:963::-;1524:10;1511:23;;:9;:23;;;1503:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9740:23:::1;9752:10;9740:11;:23::i;:::-;9739:24;9731:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9805:26;9820:10;9805:14;:26::i;:::-;9804:27;9796:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;9899:12;;;;;;;;;;;9891:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9982:9;;9960:14;:21;;;;:31;9952:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10047:10;;10034:9;:23;;10026:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10094:14;10114:10;10094:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10204:1;10180:14;:21;;;;:25;;;;:::i;:::-;10136:17;:29;10154:10;10136:29;;;;;;;;;;;;;;;:41;;:69;;;;10277:16;;10259:15;:34;;;;:::i;:::-;10216:17;:29;10234:10;10216:29;;;;;;;;;;;;;;;:40;;:77;;;;10304:17;10327:10;10304:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10394:15;10349:20;:32;10370:10;10349:32;;;;;;;;;;;;;;;:42;;:60;;;;10492:1;10466:17;:24;;;;:27;;;;:::i;:::-;10420:20;:32;10441:10;10420:32;;;;;;;;;;;;;;;:44;;:73;;;;10509:106;10519:10;10531:17;:29;10549:10;10531:29;;;;;;;;;;;;;;;:41;;;10574:17;:29;10592:10;10574:29;;;;;;;;;;;;;;;:40;;;10509:106;;;;;;;;:::i;:::-;;;;;;;;9660:963::o:0;2545:177::-;2647:18;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2690:17:::1;:24;;;;2683:31;;2545:177:::0;:::o;7305:223::-;7363:4;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7381:12:::1;7399:10;:15;;7422:21;7399:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7380:68;;;7467:7;7459:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7513:7;7506:14;;;7305:223:::0;:::o;12943:592::-;12999:26;13014:10;12999:14;:26::i;:::-;12991:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13083:23;13095:10;13083:11;:23::i;:::-;13075:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13162:10;;13149:9;:23;;13141:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13209:26;13238:17;:29;13256:10;13238:29;;;;;;;;;;;;;;;:40;;;13209:69;;13311:18;13293:15;:36;13289:239;;;13407:16;;13389:15;:34;;;;:::i;:::-;13346:17;:29;13364:10;13346:29;;;;;;;;;;;;;;;:40;;:77;;;;13289:239;;;13500:16;;13456:17;:29;13474:10;13456:29;;;;;;;;;;;;;;;:40;;;:60;;;;;;;:::i;:::-;;;;;;;;13289:239;12980:555;12943:592::o;2200:168::-;2302:16;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2343:17:::1;2336:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:168:::0;:::o;7877:100::-;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7939:30:::1;7966:1;7939:18;:30::i;:::-;7877:100::o:0;3941:91::-;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;4012:12:::1;;;;;;;;;;;4011:13;3996:12;;:28;;;;;;;;;;;;;;;;;;3941:91::o:0;2380:157::-;2474:16;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2515:14:::1;2508:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:157:::0;:::o;444:46::-;;;;:::o;572:48::-;;;;:::o;639:41::-;;;;:::o;13799:191::-;13848:7;13876:23;13888:10;13876:11;:23::i;:::-;13868:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13942:17;:29;13960:10;13942:29;;;;;;;;;;;;;;;:40;;;13935:47;;13799:191;:::o;2730:172::-;2829:19;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2873:14:::1;:21;;;;2866:28;;2730:172:::0;:::o;8801:150::-;8890:4;8919:24;8931:11;8919;:24::i;:::-;8912:31;;8801:150;;;:::o;3073:155::-;3153:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3190:8:::1;3177:10;:21;;;;3216:4;3209:11;;3073:155:::0;;;:::o;6866:217::-;6940:4;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6965:16:::1;6977:3;6965:11;:16::i;:::-;6957:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;7060:15;7024:17;:22;7042:3;7024:22;;;;;;;;;;;;;;;:33;;;:51;7017:58;;6866:217:::0;;;:::o;3236:161::-;3319:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3359:8:::1;3343:13;:24;;;;3385:4;3378:11;;3236:161:::0;;;:::o;9364:111::-;9417:4;9441:26;9456:10;9441:14;:26::i;:::-;9434:33;;9364:111;:::o;3405:169::-;3492:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3535:9:::1;3516:16;:28;;;;3562:4;3555:11;;3405:169:::0;;;:::o;762:24::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8959:397::-;9050:4;9080:24;9092:11;9080;:24::i;:::-;9072:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9139:26;9168:17;:30;9186:11;9168:30;;;;;;;;;;;;;;;:41;;;9139:70;;9242:18;9224:15;:36;9220:125;;;9284:5;9277:12;;;;;9220:125;9329:4;9322:11;;;8959:397;;;;:::o;3760:173::-;3853:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3890:13:::1;;3877:10;:26;;;;;;;:::i;:::-;;3921:4;3914:11;;3760:173:::0;;;;:::o;10631:602::-;1524:10;1511:23;;:9;:23;;;1503:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10700:26:::1;10715:10;10700:14;:26::i;:::-;10692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10792:10;;10779:9;:23;;10771:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10848:23;10860:10;10848:11;:23::i;:::-;10847:24;10839:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10904:14;10924:10;10904:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11014:1;10990:14;:21;;;;:25;;;;:::i;:::-;10946:17;:29;10964:10;10946:29;;;;;;;;;;;;;;;:41;;:69;;;;11087:16;;11069:15;:34;;;;:::i;:::-;11026:17;:29;11044:10;11026:29;;;;;;;;;;;;;;;:40;;:77;;;;11119:106;11129:10;11141:17;:29;11159:10;11141:29;;;;;;;;;;;;;;;:41;;;11184:17;:29;11202:10;11184:29;;;;;;;;;;;;;;;:40;;;11119:106;;;;;;;;:::i;:::-;;;;;;;;10631:602::o:0;726:29::-;;;;:::o;4481:410::-;4591:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;4629:27:::1;4644:11;4629:14;:27::i;:::-;4621:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4695:19;4717:20;:33;4738:11;4717:33;;;;;;;;;;;;;;;:45;;;4695:67;;4780:20;:33;4801:11;4780:33;;;;;;;;;;;;;;;;4773:40:::0;::::1;;;;;;;;;;;;;4831:17;4849:11;4831:30;;;;;;;;:::i;:::-;;;;;;;;;;4824:37;;;;;;;;;;;4879:4;4872:11;;;4481:410:::0;;;:::o;4899:386::-;4989:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;5028:16:::1;5040:3;5028:11;:16::i;:::-;5027:17;5019:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;5077:14;5097:3;5077:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5173:1;5149:14;:21;;;;:25;;;;:::i;:::-;5112:17;:22;5130:3;5112:22;;;;;;;;;;;;;;;:34;;:62;;;;5239:16;;5221:15;:34;;;;:::i;:::-;5185:17;:22;5203:3;5185:22;;;;;;;;;;;;;;;:33;;:70;;;;5273:4;5266:11;;4899:386:::0;;;:::o;9483:101::-;9527:4;9552:23;9564:10;9552:11;:23::i;:::-;9544:32;;9483:101;:::o;5657:757::-;5773:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;5811:27:::1;5826:11;5811:14;:27::i;:::-;:55;;;;5842:24;5854:11;5842;:24::i;:::-;5811:55;5803:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;5926:24;5938:11;5926;:24::i;:::-;5923:220;;;5966:19;5988:17;:30;6006:11;5988:30;;;;;;;;;;;;;;;:42;;;5966:64;;6052:17;:30;6070:11;6052:30;;;;;;;;;;;;;;;;6045:37:::0;::::1;;;;;;;;;;;;;6104:14;6119:11;6104:27;;;;;;;;:::i;:::-;;;;;;;;;;6097:34;;;;;;;;;;;5951:192;5923:220;6156:27;6171:11;6156:14;:27::i;:::-;6153:232;;;6199:19;6221:20;:33;6242:11;6221:33;;;;;;;;;;;;;;;:45;;;6199:67;;6288:20;:33;6309:11;6288:33;;;;;;;;;;;;;;;;6281:40:::0;::::1;;;;;;;;;;;;;6343:17;6361:11;6343:30;;;;;;;;:::i;:::-;;;;;;;;;;6336:37;;;;;;;;;;;6184:201;6153:232;6402:4;6395:11;;5657:757:::0;;;:::o;3582:170::-;3671:12;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3707:15:::1;3695:9;:27;;;;3740:4;3733:11;;3582:170:::0;;;:::o;687:32::-;;;;;;;;;;;;;:::o;7091:206::-;7169:7;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7197:16:::1;7209:3;7197:11;:16::i;:::-;7189:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;7256:17;:22;7274:3;7256:22;;;;;;;;;;;;;;;:33;;;7249:40;;7091:206:::0;;;:::o;8077:198::-;1413:10;1404:19;;:5;;;;;;;;;;:19;;;1396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8183:1:::1;8163:22;;:8;:22;;::::0;8155:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8239:28;8258:8;8239:18;:28::i;:::-;8077:198:::0;:::o;1594:303::-;1688:13;1751:1;1723:17;:24;;;;:29;1719:47;;1761:5;1754:12;;;;1719:47;1877:11;1785:103;;:17;1817:20;:33;1838:11;1817:33;;;;;;;;;;;;;;;:45;;;1785:88;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:103;;;1777:112;;1594:303;;;;:::o;1909:283::-;2001:13;2061:1;2036:14;:21;;;;:26;2032:44;;2071:5;2064:12;;;;2032:44;2171:12;2095:88;;:14;2110:17;:31;2128:12;2110:31;;;;;;;;;;;;;;;:43;;;2095:59;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:88;;;2087:97;;1909:283;;;;:::o;8433:180::-;8498:16;8517:5;;;;;;;;;;;8498:24;;8541:8;8533:5;;:16;;;;;;;;;;;;;;;;;;8596:8;8565:40;;8586:8;8565:40;;;;;;;;;;;;8487:126;8433:180;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310: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:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:77::-;1640:7;1669:5;1658:16;;1603:77;;;:::o;1686:122::-;1759:24;1777:5;1759:24;:::i;:::-;1752:5;1749:35;1739:63;;1798:1;1795;1788:12;1739:63;1686:122;:::o;1814:139::-;1860:5;1898:6;1885:20;1876:29;;1914:33;1941:5;1914:33;:::i;:::-;1814:139;;;;:::o;1959:329::-;2018:6;2067:2;2055:9;2046:7;2042:23;2038:32;2035:119;;;2073:79;;:::i;:::-;2035:119;2193:1;2218:53;2263:7;2254:6;2243:9;2239:22;2218:53;:::i;:::-;2208:63;;2164:117;1959:329;;;;:::o;2294:118::-;2381:24;2399:5;2381:24;:::i;:::-;2376:3;2369:37;2294:118;;:::o;2418:222::-;2511:4;2549:2;2538:9;2534:18;2526:26;;2562:71;2630:1;2619:9;2615:17;2606:6;2562:71;:::i;:::-;2418:222;;;;:::o;2646:114::-;2713:6;2747:5;2741:12;2731:22;;2646:114;;;:::o;2766:184::-;2865:11;2899:6;2894:3;2887:19;2939:4;2934:3;2930:14;2915:29;;2766:184;;;;:::o;2956:132::-;3023:4;3046:3;3038:11;;3076:4;3071:3;3067:14;3059:22;;2956:132;;;:::o;3094:108::-;3171:24;3189:5;3171:24;:::i;:::-;3166:3;3159:37;3094:108;;:::o;3208:179::-;3277:10;3298:46;3340:3;3332:6;3298:46;:::i;:::-;3376:4;3371:3;3367:14;3353:28;;3208:179;;;;:::o;3393:113::-;3463:4;3495;3490:3;3486:14;3478:22;;3393:113;;;:::o;3542:732::-;3661:3;3690:54;3738:5;3690:54;:::i;:::-;3760:86;3839:6;3834:3;3760:86;:::i;:::-;3753:93;;3870:56;3920:5;3870:56;:::i;:::-;3949:7;3980:1;3965:284;3990:6;3987:1;3984:13;3965:284;;;4066:6;4060:13;4093:63;4152:3;4137:13;4093:63;:::i;:::-;4086:70;;4179:60;4232:6;4179:60;:::i;:::-;4169:70;;4025:224;4012:1;4009;4005:9;4000:14;;3965:284;;;3969:14;4265:3;4258:10;;3666:608;;;3542:732;;;;:::o;4280:373::-;4423:4;4461:2;4450:9;4446:18;4438:26;;4510:9;4504:4;4500:20;4496:1;4485:9;4481:17;4474:47;4538:108;4641:4;4632:6;4538:108;:::i;:::-;4530:116;;4280:373;;;;:::o;4659:99::-;4711:6;4745:5;4739:12;4729:22;;4659:99;;;:::o;4764:169::-;4848:11;4882:6;4877:3;4870:19;4922:4;4917:3;4913:14;4898:29;;4764:169;;;;:::o;4939:307::-;5007:1;5017:113;5031:6;5028:1;5025:13;5017:113;;;5116:1;5111:3;5107:11;5101:18;5097:1;5092:3;5088:11;5081:39;5053:2;5050:1;5046:10;5041:15;;5017:113;;;5148:6;5145:1;5142:13;5139:101;;;5228:1;5219:6;5214:3;5210:16;5203:27;5139:101;4988:258;4939:307;;;:::o;5252:102::-;5293:6;5344:2;5340:7;5335:2;5328:5;5324:14;5320:28;5310:38;;5252:102;;;:::o;5360:364::-;5448:3;5476:39;5509:5;5476:39;:::i;:::-;5531:71;5595:6;5590:3;5531:71;:::i;:::-;5524:78;;5611:52;5656:6;5651:3;5644:4;5637:5;5633:16;5611:52;:::i;:::-;5688:29;5710:6;5688:29;:::i;:::-;5683:3;5679:39;5672:46;;5452:272;5360:364;;;;:::o;5730:313::-;5843:4;5881:2;5870:9;5866:18;5858:26;;5930:9;5924:4;5920:20;5916:1;5905:9;5901:17;5894:47;5958:78;6031:4;6022:6;5958:78;:::i;:::-;5950:86;;5730:313;;;;:::o;6049:117::-;6158:1;6155;6148:12;6172:117;6281:1;6278;6271:12;6295:117;6404:1;6401;6394:12;6432:553;6490:8;6500:6;6550:3;6543:4;6535:6;6531:17;6527:27;6517:122;;6558:79;;:::i;:::-;6517:122;6671:6;6658:20;6648:30;;6701:18;6693:6;6690:30;6687:117;;;6723:79;;:::i;:::-;6687:117;6837:4;6829:6;6825:17;6813:29;;6891:3;6883:4;6875:6;6871:17;6861:8;6857:32;6854:41;6851:128;;;6898:79;;:::i;:::-;6851:128;6432:553;;;;;:::o;6991:529::-;7062:6;7070;7119:2;7107:9;7098:7;7094:23;7090:32;7087:119;;;7125:79;;:::i;:::-;7087:119;7273:1;7262:9;7258:17;7245:31;7303:18;7295:6;7292:30;7289:117;;;7325:79;;:::i;:::-;7289:117;7438:65;7495:7;7486:6;7475:9;7471:22;7438:65;:::i;:::-;7420:83;;;;7216:297;6991:529;;;;;:::o;7526:162::-;7666:14;7662:1;7654:6;7650:14;7643:38;7526:162;:::o;7694:366::-;7836:3;7857:67;7921:2;7916:3;7857:67;:::i;:::-;7850:74;;7933:93;8022:3;7933:93;:::i;:::-;8051:2;8046:3;8042:12;8035:19;;7694:366;;;:::o;8066:419::-;8232:4;8270:2;8259:9;8255:18;8247:26;;8319:9;8313:4;8309:20;8305:1;8294:9;8290:17;8283:47;8347:131;8473:4;8347:131;:::i;:::-;8339:139;;8066:419;;;:::o;8491:180::-;8539:77;8536:1;8529:88;8636:4;8633:1;8626:15;8660:4;8657:1;8650:15;8677:191;8717:4;8737:20;8755:1;8737:20;:::i;:::-;8732:25;;8771:20;8789:1;8771:20;:::i;:::-;8766:25;;8810:1;8807;8804:8;8801:34;;;8815:18;;:::i;:::-;8801:34;8860:1;8857;8853:9;8845:17;;8677:191;;;;:::o;8874:170::-;9014:22;9010:1;9002:6;8998:14;8991:46;8874:170;:::o;9050:366::-;9192:3;9213:67;9277:2;9272:3;9213:67;:::i;:::-;9206:74;;9289:93;9378:3;9289:93;:::i;:::-;9407:2;9402:3;9398:12;9391:19;;9050:366;;;:::o;9422:419::-;9588:4;9626:2;9615:9;9611:18;9603:26;;9675:9;9669:4;9665:20;9661:1;9650:9;9646:17;9639:47;9703:131;9829:4;9703:131;:::i;:::-;9695:139;;9422:419;;;:::o;9847:180::-;9895:77;9892:1;9885:88;9992:4;9989:1;9982:15;10016:4;10013:1;10006:15;10033:228;10173:34;10169:1;10161:6;10157:14;10150:58;10242:11;10237:2;10229:6;10225:15;10218:36;10033:228;:::o;10267:366::-;10409:3;10430:67;10494:2;10489:3;10430:67;:::i;:::-;10423:74;;10506:93;10595:3;10506:93;:::i;:::-;10624:2;10619:3;10615:12;10608:19;;10267:366;;;:::o;10639:419::-;10805:4;10843:2;10832:9;10828:18;10820:26;;10892:9;10886:4;10882:20;10878:1;10867:9;10863:17;10856:47;10920:131;11046:4;10920:131;:::i;:::-;10912:139;;10639:419;;;:::o;11064:171::-;11204:23;11200:1;11192:6;11188:14;11181:47;11064:171;:::o;11241:366::-;11383:3;11404:67;11468:2;11463:3;11404:67;:::i;:::-;11397:74;;11480:93;11569:3;11480:93;:::i;:::-;11598:2;11593:3;11589:12;11582:19;;11241:366;;;:::o;11613:419::-;11779:4;11817:2;11806:9;11802:18;11794:26;;11866:9;11860:4;11856:20;11852:1;11841:9;11837:17;11830:47;11894:131;12020:4;11894:131;:::i;:::-;11886:139;;11613:419;;;:::o;12038:118::-;12125:24;12143:5;12125:24;:::i;:::-;12120:3;12113:37;12038:118;;:::o;12162:332::-;12283:4;12321:2;12310:9;12306:18;12298:26;;12334:71;12402:1;12391:9;12387:17;12378:6;12334:71;:::i;:::-;12415:72;12483:2;12472:9;12468:18;12459:6;12415:72;:::i;:::-;12162:332;;;;;:::o;12500:442::-;12649:4;12687:2;12676:9;12672:18;12664:26;;12700:71;12768:1;12757:9;12753:17;12744:6;12700:71;:::i;:::-;12781:72;12849:2;12838:9;12834:18;12825:6;12781:72;:::i;:::-;12863;12931:2;12920:9;12916:18;12907:6;12863:72;:::i;:::-;12500:442;;;;;;:::o;12948:170::-;13088:22;13084:1;13076:6;13072:14;13065:46;12948:170;:::o;13124:366::-;13266:3;13287:67;13351:2;13346:3;13287:67;:::i;:::-;13280:74;;13363:93;13452:3;13363:93;:::i;:::-;13481:2;13476:3;13472:12;13465:19;;13124:366;;;:::o;13496:419::-;13662:4;13700:2;13689:9;13685:18;13677:26;;13749:9;13743:4;13739:20;13735:1;13724:9;13720:17;13713:47;13777:131;13903:4;13777:131;:::i;:::-;13769:139;;13496:419;;;:::o;13921:305::-;13961:3;13980:20;13998:1;13980:20;:::i;:::-;13975:25;;14014:20;14032:1;14014:20;:::i;:::-;14009:25;;14168:1;14100:66;14096:74;14093:1;14090:81;14087:107;;;14174:18;;:::i;:::-;14087:107;14218:1;14215;14211:9;14204:16;;13921:305;;;;:::o;14232:177::-;14372:29;14368:1;14360:6;14356:14;14349:53;14232:177;:::o;14415:366::-;14557:3;14578:67;14642:2;14637:3;14578:67;:::i;:::-;14571:74;;14654:93;14743:3;14654:93;:::i;:::-;14772:2;14767:3;14763:12;14756:19;;14415:366;;;:::o;14787:419::-;14953:4;14991:2;14980:9;14976:18;14968:26;;15040:9;15034:4;15030:20;15026:1;15015:9;15011:17;15004:47;15068:131;15194:4;15068:131;:::i;:::-;15060:139;;14787:419;;;:::o;15212:167::-;15352:19;15348:1;15340:6;15336:14;15329:43;15212:167;:::o;15385:366::-;15527:3;15548:67;15612:2;15607:3;15548:67;:::i;:::-;15541:74;;15624:93;15713:3;15624:93;:::i;:::-;15742:2;15737:3;15733:12;15726:19;;15385:366;;;:::o;15757:419::-;15923:4;15961:2;15950:9;15946:18;15938:26;;16010:9;16004:4;16000:20;15996:1;15985:9;15981:17;15974:47;16038:131;16164:4;16038:131;:::i;:::-;16030:139;;15757:419;;;:::o;16182:231::-;16322:34;16318:1;16310:6;16306:14;16299:58;16391:14;16386:2;16378:6;16374:15;16367:39;16182:231;:::o;16419:366::-;16561:3;16582:67;16646:2;16641:3;16582:67;:::i;:::-;16575:74;;16658:93;16747:3;16658:93;:::i;:::-;16776:2;16771:3;16767:12;16760:19;;16419:366;;;:::o;16791:419::-;16957:4;16995:2;16984:9;16980:18;16972:26;;17044:9;17038:4;17034:20;17030:1;17019:9;17015:17;17008:47;17072:131;17198:4;17072:131;:::i;:::-;17064:139;;16791:419;;;:::o;17216:175::-;17356:27;17352:1;17344:6;17340:14;17333:51;17216:175;:::o;17397:366::-;17539:3;17560:67;17624:2;17619:3;17560:67;:::i;:::-;17553:74;;17636:93;17725:3;17636:93;:::i;:::-;17754:2;17749:3;17745:12;17738:19;;17397:366;;;:::o;17769:419::-;17935:4;17973:2;17962:9;17958:18;17950:26;;18022:9;18016:4;18012:20;18008:1;17997:9;17993:17;17986:47;18050:131;18176:4;18050:131;:::i;:::-;18042:139;;17769:419;;;:::o;18194:169::-;18334:21;18330:1;18322:6;18318:14;18311:45;18194:169;:::o;18369:366::-;18511:3;18532:67;18596:2;18591:3;18532:67;:::i;:::-;18525:74;;18608:93;18697:3;18608:93;:::i;:::-;18726:2;18721:3;18717:12;18710:19;;18369:366;;;:::o;18741:419::-;18907:4;18945:2;18934:9;18930:18;18922:26;;18994:9;18988:4;18984:20;18980:1;18969:9;18965:17;18958:47;19022:131;19148:4;19022:131;:::i;:::-;19014:139;;18741:419;;;:::o;19166:442::-;19315:4;19353:2;19342:9;19338:18;19330:26;;19366:71;19434:1;19423:9;19419:17;19410:6;19366:71;:::i;:::-;19447:72;19515:2;19504:9;19500:18;19491:6;19447:72;:::i;:::-;19529;19597:2;19586:9;19582:18;19573:6;19529:72;:::i;:::-;19166:442;;;;;;:::o;19614:147::-;19715:11;19752:3;19737:18;;19614:147;;;;:::o;19767:114::-;;:::o;19887:398::-;20046:3;20067:83;20148:1;20143:3;20067:83;:::i;:::-;20060:90;;20159:93;20248:3;20159:93;:::i;:::-;20277:1;20272:3;20268:11;20261:18;;19887:398;;;:::o;20291:379::-;20475:3;20497:147;20640:3;20497:147;:::i;:::-;20490:154;;20661:3;20654:10;;20291:379;;;:::o;20676:166::-;20816:18;20812:1;20804:6;20800:14;20793:42;20676:166;:::o;20848:366::-;20990:3;21011:67;21075:2;21070:3;21011:67;:::i;:::-;21004:74;;21087:93;21176:3;21087:93;:::i;:::-;21205:2;21200:3;21196:12;21189:19;;20848:366;;;:::o;21220:419::-;21386:4;21424:2;21413:9;21409:18;21401:26;;21473:9;21467:4;21463:20;21459:1;21448:9;21444:17;21437:47;21501:131;21627:4;21501:131;:::i;:::-;21493:139;;21220:419;;;:::o;21645:221::-;21785:34;21781:1;21773:6;21769:14;21762:58;21854:4;21849:2;21841:6;21837:15;21830:29;21645:221;:::o;21872:366::-;22014:3;22035:67;22099:2;22094:3;22035:67;:::i;:::-;22028:74;;22111:93;22200:3;22111:93;:::i;:::-;22229:2;22224:3;22220:12;22213:19;;21872:366;;;:::o;22244:419::-;22410:4;22448:2;22437:9;22433:18;22425:26;;22497:9;22491:4;22487:20;22483:1;22472:9;22468:17;22461:47;22525:131;22651:4;22525:131;:::i;:::-;22517:139;;22244:419;;;:::o;22669:169::-;22809:21;22805:1;22797:6;22793:14;22786:45;22669:169;:::o;22844:366::-;22986:3;23007:67;23071:2;23066:3;23007:67;:::i;:::-;23000:74;;23083:93;23172:3;23083:93;:::i;:::-;23201:2;23196:3;23192:12;23185:19;;22844:366;;;:::o;23216:419::-;23382:4;23420:2;23409:9;23405:18;23397:26;;23469:9;23463:4;23459:20;23455:1;23444:9;23440:17;23433:47;23497:131;23623:4;23497:131;:::i;:::-;23489:139;;23216:419;;;:::o;23641:180::-;23689:77;23686:1;23679:88;23786:4;23783:1;23776:15;23810:4;23807:1;23800:15;23827:320;23871:6;23908:1;23902:4;23898:12;23888:22;;23955:1;23949:4;23945:12;23976:18;23966:81;;24032:4;24024:6;24020:17;24010:27;;23966:81;24094:2;24086:6;24083:14;24063:18;24060:38;24057:84;;24113:18;;:::i;:::-;24057:84;23878:269;23827:320;;;:::o;24153:179::-;24293:31;24289:1;24281:6;24277:14;24270:55;24153:179;:::o;24338:366::-;24480:3;24501:67;24565:2;24560:3;24501:67;:::i;:::-;24494:74;;24577:93;24666:3;24577:93;:::i;:::-;24695:2;24690:3;24686:12;24679:19;;24338:366;;;:::o;24710:419::-;24876:4;24914:2;24903:9;24899:18;24891:26;;24963:9;24957:4;24953:20;24949:1;24938:9;24934:17;24927:47;24991:131;25117:4;24991:131;:::i;:::-;24983:139;;24710:419;;;:::o;25135:173::-;25275:25;25271:1;25263:6;25259:14;25252:49;25135:173;:::o;25314:366::-;25456:3;25477:67;25541:2;25536:3;25477:67;:::i;:::-;25470:74;;25553:93;25642:3;25553:93;:::i;:::-;25671:2;25666:3;25662:12;25655:19;;25314:366;;;:::o;25686:419::-;25852:4;25890:2;25879:9;25875:18;25867:26;;25939:9;25933:4;25929:20;25925:1;25914:9;25910:17;25903:47;25967:131;26093:4;25967:131;:::i;:::-;25959:139;;25686:419;;;:::o;26111:225::-;26251:34;26247:1;26239:6;26235:14;26228:58;26320:8;26315:2;26307:6;26303:15;26296:33;26111:225;:::o;26342:366::-;26484:3;26505:67;26569:2;26564:3;26505:67;:::i;:::-;26498:74;;26581:93;26670:3;26581:93;:::i;:::-;26699:2;26694:3;26690:12;26683:19;;26342:366;;;:::o;26714:419::-;26880:4;26918:2;26907:9;26903:18;26895:26;;26967:9;26961:4;26957:20;26953:1;26942:9;26938:17;26931:47;26995:131;27121:4;26995:131;:::i;:::-;26987:139;;26714:419;;;:::o

Swarm Source

ipfs://deb9a0c2d26be103108e624341ec5cdb02731fe50b2a1b96677d4b683b1d8b67

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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