ETH Price: $3,118.45 (-0.83%)
 

Overview

ETH Balance

0.12 ETH

Eth Value

$374.21 (@ $3,118.45/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...168733622023-03-21 3:31:23994 days ago1679369483IN
0x9Ee62f67...4af03C17c
0 ETH0.0006984514.95395976
Set Approval For...165010762023-01-27 22:17:111046 days ago1674857831IN
0x9Ee62f67...4af03C17c
0 ETH0.0008214917.58836606
Mint152892092022-08-06 14:14:071220 days ago1659795247IN
0x9Ee62f67...4af03C17c
0.12 ETH0.0023817327.9313246
Withdraw Money151291542022-07-12 17:21:301245 days ago1657646490IN
0x9Ee62f67...4af03C17c
0 ETH0.0018580756.37366961
Transfer From150969942022-07-07 18:20:351250 days ago1657218035IN
0x9Ee62f67...4af03C17c
0 ETH0.01825716162.42882489
Transfer From150862692022-07-06 2:23:051252 days ago1657074185IN
0x9Ee62f67...4af03C17c
0 ETH0.0020889921.30949969
Transfer From150848532022-07-05 20:59:551252 days ago1657054795IN
0x9Ee62f67...4af03C17c
0 ETH0.0046355232.54530952
Transfer From150846402022-07-05 20:10:001252 days ago1657051800IN
0x9Ee62f67...4af03C17c
0 ETH0.0051554236.90277425
Transfer From150843212022-07-05 19:04:301252 days ago1657047870IN
0x9Ee62f67...4af03C17c
0 ETH0.0038406631.95199411
Mint150639702022-07-02 15:39:501255 days ago1656776390IN
0x9Ee62f67...4af03C17c
1.2 ETH0.0019164317.77061692
Set Base URI149996372022-06-21 0:55:271267 days ago1655772927IN
0x9Ee62f67...4af03C17c
0 ETH0.0006676616.12873481
Transfer From145944582022-04-16 5:29:221333 days ago1650086962IN
0x9Ee62f67...4af03C17c
0 ETH0.0024991136.22738623
Safe Transfer Fr...144384852022-03-22 21:13:381357 days ago1647983618IN
0x9Ee62f67...4af03C17c
0 ETH0.0061497350.98648114
Mint144383912022-03-22 20:54:551357 days ago1647982495IN
0x9Ee62f67...4af03C17c
0.12 ETH0.0029268642.93412913
Safe Transfer Fr...144067982022-03-17 22:56:431362 days ago1647557803IN
0x9Ee62f67...4af03C17c
0 ETH0.0034122437.00717665
Transfer From144005192022-03-16 23:30:371363 days ago1647473437IN
0x9Ee62f67...4af03C17c
0 ETH0.0049972543.4004006
Safe Transfer Fr...143993642022-03-16 18:58:041363 days ago1647457084IN
0x9Ee62f67...4af03C17c
0 ETH0.0048847343.44885089
Safe Transfer Fr...143989742022-03-16 17:26:521363 days ago1647451612IN
0x9Ee62f67...4af03C17c
0 ETH0.0045597938.80842028
Safe Transfer Fr...143820622022-03-14 2:29:161366 days ago1647224956IN
0x9Ee62f67...4af03C17c
0 ETH0.0031536127.47892493
Safe Transfer Fr...143675232022-03-11 19:57:061368 days ago1647028626IN
0x9Ee62f67...4af03C17c
0 ETH0.0033575521.50774949
Giveaway143669742022-03-11 18:01:201368 days ago1647021680IN
0x9Ee62f67...4af03C17c
0 ETH0.004516549.42666391
Giveaway143669602022-03-11 17:58:061368 days ago1647021486IN
0x9Ee62f67...4af03C17c
0 ETH0.0043282347.36629205
Giveaway143669592022-03-11 17:58:001368 days ago1647021480IN
0x9Ee62f67...4af03C17c
0 ETH0.0037691144.94849357
Giveaway143669592022-03-11 17:58:001368 days ago1647021480IN
0x9Ee62f67...4af03C17c
0 ETH0.0037691144.94849357
Giveaway143669592022-03-11 17:58:001368 days ago1647021480IN
0x9Ee62f67...4af03C17c
0 ETH0.0037691144.94849357
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer151291542022-07-12 17:21:301245 days ago1657646490
0x9Ee62f67...4af03C17c
3.54 ETH
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LazyPelicanSquad

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-03-02
*/

/**
 *Submitted for verification at Etherscan.io on 2022-02-09
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0; 
abstract contract ReentrancyGuard { 
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
   _status = _ENTERED;

        _;
        _status = _NOT_ENTERED;
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
 
    function toString(uint256 value) internal pure returns (string memory) { 
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
 
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
 
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor() {
        _transferOwnership(_msgSender());
    }
 
    function owner() public view virtual returns (address) {
        return _owner;
    } 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
 
library Address { 
    function isContract(address account) internal view returns (bool) { 
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    } 
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
 
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    } 
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
 
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
 
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    } 
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
 
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
 
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
 
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
 
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else { 
            if (returndata.length > 0) { 

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
 
interface IERC721Receiver { 
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
 
interface IERC165 { 
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
 
abstract contract ERC165 is IERC165 { 
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
} 
interface IERC721 is IERC165 { 
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); 
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); 
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved); 
    function balanceOf(address owner) external view returns (uint256 balance); 
    function ownerOf(uint256 tokenId) external view returns (address owner); 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external; 
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external; 
    function approve(address to, uint256 tokenId) external;
 
    function getApproved(uint256 tokenId) external view returns (address operator); 
    function setApprovalForAll(address operator, bool _approved) external; 
    function isApprovedForAll(address owner, address operator) external view returns (bool); 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
} 
interface IERC721Enumerable is IERC721 { 
    function totalSupply() external view returns (uint256); 
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); 
    function tokenByIndex(uint256 index) external view returns (uint256);
}  
interface IERC721Metadata is IERC721 { 
    function name() external view returns (string memory); 
    function symbol() external view returns (string memory); 
    function tokenURI(uint256 tokenId) external view returns (string memory);
} 
contract ERC721A is
  Context,
  ERC165,
  IERC721,
  IERC721Metadata,
  IERC721Enumerable
{
  using Address for address;
  using Strings for uint256;

  struct TokenOwnership {
    address addr;
    uint64 startTimestamp;
  }

  struct AddressData {
    uint128 balance;
    uint128 numberMinted;
  }

  uint256 private currentIndex = 0;

  uint256 internal immutable collectionSize;
  uint256 internal immutable maxBatchSize; 
  string private _name; 
  string private _symbol; 
  mapping(uint256 => TokenOwnership) private _ownerships; 
  mapping(address => AddressData) private _addressData; 
  mapping(uint256 => address) private _tokenApprovals; 
  mapping(address => mapping(address => bool)) private _operatorApprovals; 
  constructor(
    string memory name_,
    string memory symbol_,
    uint256 maxBatchSize_,
    uint256 collectionSize_
  ) {
    require(
      collectionSize_ > 0,
      "ERC721A: collection must have a nonzero supply"
    );
    require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
    _name = name_;
    _symbol = symbol_;
    maxBatchSize = maxBatchSize_;
    collectionSize = collectionSize_;
  } 
  function totalSupply() public view override returns (uint256) {
    return currentIndex;
  } 
  function tokenByIndex(uint256 index) public view override returns (uint256) {
    require(index < totalSupply(), "ERC721A: global index out of bounds");
    return index;
  } 
  function tokenOfOwnerByIndex(address owner, uint256 index)
    public
    view
    override
    returns (uint256)
  {
    require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
    uint256 numMintedSoFar = totalSupply();
    uint256 tokenIdsIdx = 0;
    address currOwnershipAddr = address(0);
    for (uint256 i = 0; i < numMintedSoFar; i++) {
      TokenOwnership memory ownership = _ownerships[i];
      if (ownership.addr != address(0)) {
        currOwnershipAddr = ownership.addr;
      }
      if (currOwnershipAddr == owner) {
        if (tokenIdsIdx == index) {
          return i;
        }
        tokenIdsIdx++;
      }
    }
    revert("ERC721A: unable to get token of owner by index");
  } 
  function supportsInterface(bytes4 interfaceId)
    public
    view
    virtual
    override(ERC165, IERC165)
    returns (bool)
  {
    return
      interfaceId == type(IERC721).interfaceId ||
      interfaceId == type(IERC721Metadata).interfaceId ||
      interfaceId == type(IERC721Enumerable).interfaceId ||
      super.supportsInterface(interfaceId);
  } 
  function balanceOf(address owner) public view override returns (uint256) {
    require(owner != address(0), "ERC721A: balance query for the zero address");
    return uint256(_addressData[owner].balance);
  }

  function _numberMinted(address owner) internal view returns (uint256) {
    require(
      owner != address(0),
      "ERC721A: number minted query for the zero address"
    );
    return uint256(_addressData[owner].numberMinted);
  }

  function ownershipOf(uint256 tokenId)
    internal
    view
    returns (TokenOwnership memory)
  {
    require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

    uint256 lowestTokenToCheck;
    if (tokenId >= maxBatchSize) {
      lowestTokenToCheck = tokenId - maxBatchSize + 1;
    }

    for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
      TokenOwnership memory ownership = _ownerships[curr];
      if (ownership.addr != address(0)) {
        return ownership;
      }
    }

    revert("ERC721A: unable to determine the owner of token");
  } 
  function ownerOf(uint256 tokenId) public view override returns (address) {
    return ownershipOf(tokenId).addr;
  } 
  function name() public view virtual override returns (string memory) {
    return _name;
  } 
  function symbol() public view virtual override returns (string memory) {
    return _symbol;
  } 
  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );

    string memory baseURI = _baseURI();
    return
      bytes(baseURI).length > 0
        ? string(abi.encodePacked(baseURI, tokenId.toString(),_getUriExtension()))
        : "";
  } 
  function _baseURI() internal view virtual returns (string memory) {
    return "";
  }

  function _getUriExtension() internal view virtual returns (string memory) {
    return "";
  }
 
  function approve(address to, uint256 tokenId) public override {
    address owner = ERC721A.ownerOf(tokenId);
    require(to != owner, "ERC721A: approval to current owner");

    require(
      _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
      "ERC721A: approve caller is not owner nor approved for all"
    );

    _approve(to, tokenId, owner);
  } 
  function getApproved(uint256 tokenId) public view override returns (address) {
    require(_exists(tokenId), "ERC721A: approved query for nonexistent token");

    return _tokenApprovals[tokenId];
  } 
  function setApprovalForAll(address operator, bool approved) public override {
    require(operator != _msgSender(), "ERC721A: approve to caller");

    _operatorApprovals[_msgSender()][operator] = approved;
    emit ApprovalForAll(_msgSender(), operator, approved);
  }
 
  function isApprovedForAll(address owner, address operator)
    public
    view
    virtual
    override
    returns (bool)
  {
    return _operatorApprovals[owner][operator];
  }
 
  function transferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    _transfer(from, to, tokenId);
  } 
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    safeTransferFrom(from, to, tokenId, "");
  } 
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) public override {
    _transfer(from, to, tokenId);
    require(
      _checkOnERC721Received(from, to, tokenId, _data),
      "ERC721A: transfer to non ERC721Receiver implementer"
    );
  } 
  function _exists(uint256 tokenId) internal view returns (bool) {
    return tokenId < currentIndex;
  }

  function _safeMint(address to, uint256 quantity) internal {
    _safeMint(to, quantity, "");
  } 
  function _safeMint(
    address to,
    uint256 quantity,
    bytes memory _data
  ) internal {
    uint256 startTokenId = currentIndex;
    require(to != address(0), "ERC721A: mint to the zero address"); 
    require(!_exists(startTokenId), "ERC721A: token already minted");
    require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

    _beforeTokenTransfers(address(0), to, startTokenId, quantity);

    AddressData memory addressData = _addressData[to];
    _addressData[to] = AddressData(
      addressData.balance + uint128(quantity),
      addressData.numberMinted + uint128(quantity)
    );
    _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

    uint256 updatedIndex = startTokenId;

    for (uint256 i = 0; i < quantity; i++) {
      emit Transfer(address(0), to, updatedIndex);
      require(
        _checkOnERC721Received(address(0), to, updatedIndex, _data),
        "ERC721A: transfer to non ERC721Receiver implementer"
      );
      updatedIndex++;
    }

    currentIndex = updatedIndex;
    _afterTokenTransfers(address(0), to, startTokenId, quantity);
  } 
  function _transfer(
    address from,
    address to,
    uint256 tokenId
  ) private {
    TokenOwnership memory prevOwnership = ownershipOf(tokenId);

    bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
      getApproved(tokenId) == _msgSender() ||
      isApprovedForAll(prevOwnership.addr, _msgSender()));

    require(
      isApprovedOrOwner,
      "ERC721A: transfer caller is not owner nor approved"
    );

    require(
      prevOwnership.addr == from,
      "ERC721A: transfer from incorrect owner"
    );
    require(to != address(0), "ERC721A: transfer to the zero address");

    _beforeTokenTransfers(from, to, tokenId, 1); 
    _approve(address(0), tokenId, prevOwnership.addr);

    _addressData[from].balance -= 1;
    _addressData[to].balance += 1;
    _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp)); 
    uint256 nextTokenId = tokenId + 1;
    if (_ownerships[nextTokenId].addr == address(0)) {
      if (_exists(nextTokenId)) {
        _ownerships[nextTokenId] = TokenOwnership(
          prevOwnership.addr,
          prevOwnership.startTimestamp
        );
      }
    }

    emit Transfer(from, to, tokenId);
    _afterTokenTransfers(from, to, tokenId, 1);
  } 
  function _approve(
    address to,
    uint256 tokenId,
    address owner
  ) private {
    _tokenApprovals[tokenId] = to;
    emit Approval(owner, to, tokenId);
  }

  uint256 public nextOwnerToExplicitlySet = 0; 
  function _setOwnersExplicit(uint256 quantity) internal {
    uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
    require(quantity > 0, "quantity must be nonzero");
    uint256 endIndex = oldNextOwnerToSet + quantity - 1;
    if (endIndex > collectionSize - 1) {
      endIndex = collectionSize - 1;
    } 
    require(_exists(endIndex), "not enough minted yet for this cleanup");
    for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
      if (_ownerships[i].addr == address(0)) {
        TokenOwnership memory ownership = ownershipOf(i);
        _ownerships[i] = TokenOwnership(
          ownership.addr,
          ownership.startTimestamp
        );
      }
    }
    nextOwnerToExplicitlySet = endIndex + 1;
  } 
  function _checkOnERC721Received(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) private returns (bool) {
    if (to.isContract()) {
      try
        IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data)
      returns (bytes4 retval) {
        return retval == IERC721Receiver(to).onERC721Received.selector;
      } catch (bytes memory reason) {
        if (reason.length == 0) {
          revert("ERC721A: transfer to non ERC721Receiver implementer");
        } else {
          assembly {
            revert(add(32, reason), mload(reason))
          }
        }
      }
    } else {
      return true;
    }
  } 
  function _beforeTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {} 
  function _afterTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}
}

contract LazyPelicanSquad is Ownable, ERC721A, ReentrancyGuard {
    using Strings for uint256;


  uint256 public MAX_PER_Transtion = 20; // maximam amount that user can mint
  uint256 public MAX_PER_Address = 5; // maximam amount that user can mint

  uint256 public  PRICE = 0.1 ether; //0.025 ether 
  uint256 public  reserved = 500;

  uint256 private constant TotalCollectionSize_ = 10000; // total number of nfts
  uint256 private constant MaxMintPerBatch_ = 50; //max mint per traction

  bool public _revelNFT = false;
  string private _baseTokenURI;
  string private _uriBeforeRevel;

  uint public status = 2; //0-pause 1-whitelist 2-public


  constructor() ERC721A("Lazy Pelican Squad","LPS", MaxMintPerBatch_, TotalCollectionSize_) {
    _uriBeforeRevel = "https://gateway.pinata.cloud/ipfs/QmZmj65vgGguz3uMeWwkc2cVPvPkpkMHkGcZSJtVeDAv1X";
  }

  modifier callerIsUser() {
    require(tx.origin == msg.sender, "The caller is another contract");
    _;
  }
 
  function mint(uint256 quantity) external payable callerIsUser {
    require( status == 2 , "Sale is not Active");
    require(totalSupply() + quantity <= TotalCollectionSize_ - reserved, "reached max supply");
    require(  quantity <= MAX_PER_Transtion,"can not mint this many");
    require(msg.value >= PRICE * quantity, "Need to send more ETH.");
    _safeMint(msg.sender, quantity);
  }

   function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
    require(_exists(tokenId),"ERC721Metadata: URI query for nonexistent token");
    if(_revelNFT){
    string memory baseURI = _baseURI();
    return
      bytes(baseURI).length > 0
        ? string(abi.encodePacked(baseURI, tokenId.toString()))
        : "";
    } else{
      return _uriBeforeRevel;
    }
  }

  function isWhitelisted(address _user) public view returns (bool) {
    return true;
  }

  function setURIbeforeRevel(string memory URI) external onlyOwner {
    _uriBeforeRevel = URI;
  }

  function setBaseURI(string memory baseURI) external onlyOwner {
    _baseTokenURI = baseURI;
  }
  function _baseURI() internal view virtual override returns (string memory) {
    return _baseTokenURI;
  }
  function numberMinted(address owner) public view returns (uint256) {
    return _numberMinted(owner);
  }
  function getOwnershipData(uint256 tokenId)
    external
    view
    returns (TokenOwnership memory)
  {
    return ownershipOf(tokenId);
  }
  function withdrawMoney() external onlyOwner nonReentrant {
    (bool success, ) = msg.sender.call{value: address(this).balance}("");
    require(success, "Transfer failed.");
  }
  function changeRevelStatus() external onlyOwner {
    _revelNFT = !_revelNFT;
  }
  function changeMintPrice(uint256 _newPrice) external onlyOwner
  {
      PRICE = _newPrice;
  }
  function getMintPrice() public view returns(uint256)
  {
      return PRICE;
  }
  function changeMAX_PER_Transtion(uint256 q) external onlyOwner
  {
      MAX_PER_Transtion = q;
  }
  function changeMAX_PER_Address(uint256 q) external onlyOwner
  {
      MAX_PER_Address = q;
  }

  function setStatus(uint256 s)external onlyOwner{
      status = s;
  }
  function setReserved(uint256 r)external onlyOwner{
      reserved = r;
  }
  function getReserved() public view returns(uint256){
      return reserved;
  }
  function getStatus()public view returns(uint){
      return status;
  }
  function giveaway(address a, uint q)public onlyOwner{
    _safeMint(a, q);
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PER_Address","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_Transtion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_revelNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"q","type":"uint256"}],"name":"changeMAX_PER_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"q","type":"uint256"}],"name":"changeMAX_PER_Transtion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changeRevelStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"uint256","name":"q","type":"uint256"}],"name":"giveaway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"r","type":"uint256"}],"name":"setReserved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"}],"name":"setStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setURIbeforeRevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMoney","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600060015560006008556014600a556005600b5567016345785d8a0000600c556101f4600d556000600e60006101000a81548160ff02191690831515021790555060026011553480156200005757600080fd5b506040518060400160405280601281526020017f4c617a792050656c6963616e20537175616400000000000000000000000000008152506040518060400160405280600381526020017f4c505300000000000000000000000000000000000000000000000000000000008152506032612710620000e9620000dd620001fb60201b60201c565b6200020360201b60201c565b600081116200012f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012690620003e7565b60405180910390fd5b6000821162000175576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200016c90620003c5565b60405180910390fd5b83600290805190602001906200018d929190620002c7565b508260039080519060200190620001a6929190620002c7565b508160a081815250508060808181525050505050506001600981905550604051806080016040528060508152602001620053c66050913960109080519060200190620001f4929190620002c7565b506200051d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002d5906200041a565b90600052602060002090601f016020900481019282620002f9576000855562000345565b82601f106200031457805160ff191683800117855562000345565b8280016001018555821562000345579182015b828111156200034457825182559160200191906001019062000327565b5b50905062000354919062000358565b5090565b5b808211156200037357600081600090555060010162000359565b5090565b60006200038660278362000409565b915062000393826200047f565b604082019050919050565b6000620003ad602e8362000409565b9150620003ba82620004ce565b604082019050919050565b60006020820190508181036000830152620003e08162000377565b9050919050565b6000602082019050818103600083015262000402816200039e565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200043357607f821691505b602082108114156200044a576200044962000450565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a051614e786200054e600039600081816127150152818161273e0152612ebd015260005050614e786000f3fe60806040526004361061025c5760003560e01c80636352211e11610144578063ac446002116100b6578063d04950a11161007a578063d04950a1146108d5578063d7224ba014610900578063dc33e6811461092b578063e985e9c514610968578063f2fde38b146109a5578063fe60d12c146109ce5761025c565b8063ac44600214610818578063af7b26e91461082f578063b88d4fde14610858578063bd0a843914610881578063c87b56dd146108985761025c565b80638da5cb5b116101085780638da5cb5b146107155780639231ab2a1461074057806395d89b411461077d578063a0712d68146107a8578063a22cb465146107c4578063a7f93ebd146107ed5761025c565b80636352211e1461063057806369ba1a751461066d57806370a0823114610696578063715018a6146106d35780638d859f3e146106ea5761025c565b80632d6e71b6116101dd57806342842e0e116101a157806342842e0e146105225780634e69d5601461054b5780634f6ccce71461057657806355f804b3146105b35780635c37809d146105dc57806362c6f7b9146106055761025c565b80632d6e71b61461042b5780632f2ffc57146104545780632f745c591461047f5780633af32abf146104bc5780633fd17366146104f95761025c565b8063095ea7b311610224578063095ea7b3146103585780630d9639ba1461038157806318160ddd146103ac578063200d2ed2146103d757806323b872dd146104025761025c565b80630199e3471461026157806301ffc9a71461028a578063050225ea146102c757806306fdde03146102f0578063081812fc1461031b575b600080fd5b34801561026d57600080fd5b5061028860048036038101906102839190613786565b6109f9565b005b34801561029657600080fd5b506102b160048036038101906102ac91906136e3565b610a7f565b6040516102be9190613d67565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906136a3565b610bc9565b005b3480156102fc57600080fd5b50610305610c53565b6040516103129190613d82565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613786565b610ce5565b60405161034f9190613d00565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a91906136a3565b610d6a565b005b34801561038d57600080fd5b50610396610e83565b6040516103a3919061413f565b60405180910390f35b3480156103b857600080fd5b506103c1610e8d565b6040516103ce919061413f565b60405180910390f35b3480156103e357600080fd5b506103ec610e97565b6040516103f9919061413f565b60405180910390f35b34801561040e57600080fd5b506104296004803603810190610424919061358d565b610e9d565b005b34801561043757600080fd5b50610452600480360381019061044d9190613786565b610ead565b005b34801561046057600080fd5b50610469610f33565b604051610476919061413f565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a191906136a3565b610f39565b6040516104b3919061413f565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de9190613520565b611137565b6040516104f09190613d67565b60405180910390f35b34801561050557600080fd5b50610520600480360381019061051b9190613786565b611142565b005b34801561052e57600080fd5b506105496004803603810190610544919061358d565b6111c8565b005b34801561055757600080fd5b506105606111e8565b60405161056d919061413f565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190613786565b6111f2565b6040516105aa919061413f565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d5919061373d565b611245565b005b3480156105e857600080fd5b5061060360048036038101906105fe919061373d565b6112db565b005b34801561061157600080fd5b5061061a611371565b6040516106279190613d67565b60405180910390f35b34801561063c57600080fd5b5061065760048036038101906106529190613786565b611384565b6040516106649190613d00565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f9190613786565b61139a565b005b3480156106a257600080fd5b506106bd60048036038101906106b89190613520565b611420565b6040516106ca919061413f565b60405180910390f35b3480156106df57600080fd5b506106e8611509565b005b3480156106f657600080fd5b506106ff611591565b60405161070c919061413f565b60405180910390f35b34801561072157600080fd5b5061072a611597565b6040516107379190613d00565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190613786565b6115c0565b6040516107749190614124565b60405180910390f35b34801561078957600080fd5b506107926115d8565b60405161079f9190613d82565b60405180910390f35b6107c260048036038101906107bd9190613786565b61166a565b005b3480156107d057600080fd5b506107eb60048036038101906107e69190613663565b611823565b005b3480156107f957600080fd5b506108026119a4565b60405161080f919061413f565b60405180910390f35b34801561082457600080fd5b5061082d6119ae565b005b34801561083b57600080fd5b5061085660048036038101906108519190613786565b611b2f565b005b34801561086457600080fd5b5061087f600480360381019061087a91906135e0565b611bb5565b005b34801561088d57600080fd5b50610896611c11565b005b3480156108a457600080fd5b506108bf60048036038101906108ba9190613786565b611cb9565b6040516108cc9190613d82565b60405180910390f35b3480156108e157600080fd5b506108ea611e08565b6040516108f7919061413f565b60405180910390f35b34801561090c57600080fd5b50610915611e0e565b604051610922919061413f565b60405180910390f35b34801561093757600080fd5b50610952600480360381019061094d9190613520565b611e14565b60405161095f919061413f565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a919061354d565b611e26565b60405161099c9190613d67565b60405180910390f35b3480156109b157600080fd5b506109cc60048036038101906109c79190613520565b611eba565b005b3480156109da57600080fd5b506109e3611fb2565b6040516109f0919061413f565b60405180910390f35b610a01611fb8565b73ffffffffffffffffffffffffffffffffffffffff16610a1f611597565b73ffffffffffffffffffffffffffffffffffffffff1614610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c90613f24565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b4a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bb257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bc25750610bc182611fc0565b5b9050919050565b610bd1611fb8565b73ffffffffffffffffffffffffffffffffffffffff16610bef611597565b73ffffffffffffffffffffffffffffffffffffffff1614610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90613f24565b60405180910390fd5b610c4f828261202a565b5050565b606060028054610c62906144ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e906144ce565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b5050505050905090565b6000610cf082612048565b610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d26906140e4565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d7582611384565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90613fa4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e05611fb8565b73ffffffffffffffffffffffffffffffffffffffff161480610e345750610e3381610e2e611fb8565b611e26565b5b610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90613ea4565b60405180910390fd5b610e7e838383612056565b505050565b6000600d54905090565b6000600154905090565b60115481565b610ea8838383612108565b505050565b610eb5611fb8565b73ffffffffffffffffffffffffffffffffffffffff16610ed3611597565b73ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090613f24565b60405180910390fd5b80600d8190555050565b600b5481565b6000610f4483611420565b8210610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613da4565b60405180910390fd5b6000610f8f610e8d565b905060008060005b838110156110f5576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461108957806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110e157868414156110d2578195505050505050611131565b83806110dd90614531565b9450505b5080806110ed90614531565b915050610f97565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890614084565b60405180910390fd5b92915050565b600060019050919050565b61114a611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611168611597565b73ffffffffffffffffffffffffffffffffffffffff16146111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590613f24565b60405180910390fd5b80600c8190555050565b6111e383838360405180602001604052806000815250611bb5565b505050565b6000601154905090565b60006111fc610e8d565b821061123d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123490613e04565b60405180910390fd5b819050919050565b61124d611fb8565b73ffffffffffffffffffffffffffffffffffffffff1661126b611597565b73ffffffffffffffffffffffffffffffffffffffff16146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b890613f24565b60405180910390fd5b80600f90805190602001906112d79291906132fa565b5050565b6112e3611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611301611597565b73ffffffffffffffffffffffffffffffffffffffff1614611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e90613f24565b60405180910390fd5b806010908051906020019061136d9291906132fa565b5050565b600e60009054906101000a900460ff1681565b600061138f826126c1565b600001519050919050565b6113a2611fb8565b73ffffffffffffffffffffffffffffffffffffffff166113c0611597565b73ffffffffffffffffffffffffffffffffffffffff1614611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90613f24565b60405180910390fd5b8060118190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890613ec4565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611511611fb8565b73ffffffffffffffffffffffffffffffffffffffff1661152f611597565b73ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90613f24565b60405180910390fd5b61158f60006128c4565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115c8613380565b6115d1826126c1565b9050919050565b6060600380546115e7906144ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611613906144ce565b80156116605780601f1061163557610100808354040283529160200191611660565b820191906000526020600020905b81548152906001019060200180831161164357829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90613e84565b60405180910390fd5b60026011541461171d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171490613e64565b60405180910390fd5b600d5461271061172d919061438a565b81611736610e8d565b6117409190614275565b1115611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890613ee4565b60405180910390fd5b600a548111156117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90614064565b60405180910390fd5b80600c546117d491906142fc565b341015611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90614004565b60405180910390fd5b611820338261202a565b50565b61182b611fb8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090613f64565b60405180910390fd5b80600760006118a6611fb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611953611fb8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119989190613d67565b60405180910390a35050565b6000600c54905090565b6119b6611fb8565b73ffffffffffffffffffffffffffffffffffffffff166119d4611597565b73ffffffffffffffffffffffffffffffffffffffff1614611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190613f24565b60405180910390fd5b60026009541415611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a67906140a4565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611a9e90613ceb565b60006040518083038185875af1925050503d8060008114611adb576040519150601f19603f3d011682016040523d82523d6000602084013e611ae0565b606091505b5050905080611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b90613fc4565b60405180910390fd5b506001600981905550565b611b37611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611b55611597565b73ffffffffffffffffffffffffffffffffffffffff1614611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613f24565b60405180910390fd5b80600a8190555050565b611bc0848484612108565b611bcc84848484612988565b611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290613fe4565b60405180910390fd5b50505050565b611c19611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611c37611597565b73ffffffffffffffffffffffffffffffffffffffff1614611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8490613f24565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b6060611cc482612048565b611d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfa90613f44565b60405180910390fd5b600e60009054906101000a900460ff1615611d75576000611d22612b1f565b90506000815111611d425760405180602001604052806000815250611d6d565b80611d4c84612bb1565b604051602001611d5d929190613cc7565b6040516020818303038152906040525b915050611e03565b60108054611d82906144ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611dae906144ce565b8015611dfb5780601f10611dd057610100808354040283529160200191611dfb565b820191906000526020600020905b815481529060010190602001808311611dde57829003601f168201915b505050505090505b919050565b600a5481565b60085481565b6000611e1f82612d12565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ec2611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611ee0611597565b73ffffffffffffffffffffffffffffffffffffffff1614611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d90613f24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d90613dc4565b60405180910390fd5b611faf816128c4565b50565b600d5481565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612044828260405180602001604052806000815250612dfb565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612113826126c1565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661213a611fb8565b73ffffffffffffffffffffffffffffffffffffffff161480612196575061215f611fb8565b73ffffffffffffffffffffffffffffffffffffffff1661217e84610ce5565b73ffffffffffffffffffffffffffffffffffffffff16145b806121b257506121b182600001516121ac611fb8565b611e26565b5b9050806121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90613f84565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225d90613f04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90613e24565b60405180910390fd5b6122e385858560016132db565b6122f36000848460000151612056565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166123619190614356565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff16612405919061422f565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461250b9190614275565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156126515761258181612048565b15612650576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126b986868660016132e1565b505050505050565b6126c9613380565b6126d282612048565b612711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270890613de4565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106127755760017f000000000000000000000000000000000000000000000000000000000000000084612768919061438a565b6127729190614275565b90505b60008390505b818110612883576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461286f578093505050506128bf565b50808061287b906144a4565b91505061277b565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b6906140c4565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006129a98473ffffffffffffffffffffffffffffffffffffffff166132e7565b15612b12578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129d2611fb8565b8786866040518563ffffffff1660e01b81526004016129f49493929190613d1b565b602060405180830381600087803b158015612a0e57600080fd5b505af1925050508015612a3f57506040513d601f19601f82011682018060405250810190612a3c9190613710565b60015b612ac2573d8060008114612a6f576040519150601f19603f3d011682016040523d82523d6000602084013e612a74565b606091505b50600081511415612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab190613fe4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612b17565b600190505b949350505050565b6060600f8054612b2e906144ce565b80601f0160208091040260200160405190810160405280929190818152602001828054612b5a906144ce565b8015612ba75780601f10612b7c57610100808354040283529160200191612ba7565b820191906000526020600020905b815481529060010190602001808311612b8a57829003601f168201915b5050505050905090565b60606000821415612bf9576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612d0d565b600082905060005b60008214612c2b578080612c1490614531565b915050600a82612c2491906142cb565b9150612c01565b60008167ffffffffffffffff811115612c4757612c46614667565b5b6040519080825280601f01601f191660200182016040528015612c795781602001600182028036833780820191505090505b5090505b60008514612d0657600182612c92919061438a565b9150600a85612ca1919061457a565b6030612cad9190614275565b60f81b818381518110612cc357612cc2614638565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612cff91906142cb565b9450612c7d565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7a90613e44565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6990614044565b60405180910390fd5b612e7b81612048565b15612ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb290614024565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1590614104565b60405180910390fd5b612f2b60008583866132db565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151613028919061422f565b6fffffffffffffffffffffffffffffffff16815260200185836020015161304f919061422f565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156132be57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461325e6000888488612988565b61329d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329490613fe4565b60405180910390fd5b81806132a890614531565b92505080806132b690614531565b9150506131ed565b50806001819055506132d360008785886132e1565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b828054613306906144ce565b90600052602060002090601f016020900481019282613328576000855561336f565b82601f1061334157805160ff191683800117855561336f565b8280016001018555821561336f579182015b8281111561336e578251825591602001919060010190613353565b5b50905061337c91906133ba565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156133d35760008160009055506001016133bb565b5090565b60006133ea6133e58461417f565b61415a565b9050828152602081018484840111156134065761340561469b565b5b613411848285614462565b509392505050565b600061342c613427846141b0565b61415a565b9050828152602081018484840111156134485761344761469b565b5b613453848285614462565b509392505050565b60008135905061346a81614de6565b92915050565b60008135905061347f81614dfd565b92915050565b60008135905061349481614e14565b92915050565b6000815190506134a981614e14565b92915050565b600082601f8301126134c4576134c3614696565b5b81356134d48482602086016133d7565b91505092915050565b600082601f8301126134f2576134f1614696565b5b8135613502848260208601613419565b91505092915050565b60008135905061351a81614e2b565b92915050565b600060208284031215613536576135356146a5565b5b60006135448482850161345b565b91505092915050565b60008060408385031215613564576135636146a5565b5b60006135728582860161345b565b92505060206135838582860161345b565b9150509250929050565b6000806000606084860312156135a6576135a56146a5565b5b60006135b48682870161345b565b93505060206135c58682870161345b565b92505060406135d68682870161350b565b9150509250925092565b600080600080608085870312156135fa576135f96146a5565b5b60006136088782880161345b565b94505060206136198782880161345b565b935050604061362a8782880161350b565b925050606085013567ffffffffffffffff81111561364b5761364a6146a0565b5b613657878288016134af565b91505092959194509250565b6000806040838503121561367a576136796146a5565b5b60006136888582860161345b565b925050602061369985828601613470565b9150509250929050565b600080604083850312156136ba576136b96146a5565b5b60006136c88582860161345b565b92505060206136d98582860161350b565b9150509250929050565b6000602082840312156136f9576136f86146a5565b5b600061370784828501613485565b91505092915050565b600060208284031215613726576137256146a5565b5b60006137348482850161349a565b91505092915050565b600060208284031215613753576137526146a5565b5b600082013567ffffffffffffffff811115613771576137706146a0565b5b61377d848285016134dd565b91505092915050565b60006020828403121561379c5761379b6146a5565b5b60006137aa8482850161350b565b91505092915050565b6137bc816143be565b82525050565b6137cb816143be565b82525050565b6137da816143d0565b82525050565b60006137eb826141e1565b6137f581856141f7565b9350613805818560208601614471565b61380e816146aa565b840191505092915050565b6000613824826141ec565b61382e8185614213565b935061383e818560208601614471565b613847816146aa565b840191505092915050565b600061385d826141ec565b6138678185614224565b9350613877818560208601614471565b80840191505092915050565b6000613890602283614213565b915061389b826146bb565b604082019050919050565b60006138b3602683614213565b91506138be8261470a565b604082019050919050565b60006138d6602a83614213565b91506138e182614759565b604082019050919050565b60006138f9602383614213565b9150613904826147a8565b604082019050919050565b600061391c602583614213565b9150613927826147f7565b604082019050919050565b600061393f603183614213565b915061394a82614846565b604082019050919050565b6000613962601283614213565b915061396d82614895565b602082019050919050565b6000613985601e83614213565b9150613990826148be565b602082019050919050565b60006139a8603983614213565b91506139b3826148e7565b604082019050919050565b60006139cb602b83614213565b91506139d682614936565b604082019050919050565b60006139ee601283614213565b91506139f982614985565b602082019050919050565b6000613a11602683614213565b9150613a1c826149ae565b604082019050919050565b6000613a34602083614213565b9150613a3f826149fd565b602082019050919050565b6000613a57602f83614213565b9150613a6282614a26565b604082019050919050565b6000613a7a601a83614213565b9150613a8582614a75565b602082019050919050565b6000613a9d603283614213565b9150613aa882614a9e565b604082019050919050565b6000613ac0602283614213565b9150613acb82614aed565b604082019050919050565b6000613ae3600083614208565b9150613aee82614b3c565b600082019050919050565b6000613b06601083614213565b9150613b1182614b3f565b602082019050919050565b6000613b29603383614213565b9150613b3482614b68565b604082019050919050565b6000613b4c601683614213565b9150613b5782614bb7565b602082019050919050565b6000613b6f601d83614213565b9150613b7a82614be0565b602082019050919050565b6000613b92602183614213565b9150613b9d82614c09565b604082019050919050565b6000613bb5601683614213565b9150613bc082614c58565b602082019050919050565b6000613bd8602e83614213565b9150613be382614c81565b604082019050919050565b6000613bfb601f83614213565b9150613c0682614cd0565b602082019050919050565b6000613c1e602f83614213565b9150613c2982614cf9565b604082019050919050565b6000613c41602d83614213565b9150613c4c82614d48565b604082019050919050565b6000613c64602283614213565b9150613c6f82614d97565b604082019050919050565b604082016000820151613c9060008501826137b3565b506020820151613ca36020850182613cb8565b50505050565b613cb281614444565b82525050565b613cc18161444e565b82525050565b6000613cd38285613852565b9150613cdf8284613852565b91508190509392505050565b6000613cf682613ad6565b9150819050919050565b6000602082019050613d1560008301846137c2565b92915050565b6000608082019050613d3060008301876137c2565b613d3d60208301866137c2565b613d4a6040830185613ca9565b8181036060830152613d5c81846137e0565b905095945050505050565b6000602082019050613d7c60008301846137d1565b92915050565b60006020820190508181036000830152613d9c8184613819565b905092915050565b60006020820190508181036000830152613dbd81613883565b9050919050565b60006020820190508181036000830152613ddd816138a6565b9050919050565b60006020820190508181036000830152613dfd816138c9565b9050919050565b60006020820190508181036000830152613e1d816138ec565b9050919050565b60006020820190508181036000830152613e3d8161390f565b9050919050565b60006020820190508181036000830152613e5d81613932565b9050919050565b60006020820190508181036000830152613e7d81613955565b9050919050565b60006020820190508181036000830152613e9d81613978565b9050919050565b60006020820190508181036000830152613ebd8161399b565b9050919050565b60006020820190508181036000830152613edd816139be565b9050919050565b60006020820190508181036000830152613efd816139e1565b9050919050565b60006020820190508181036000830152613f1d81613a04565b9050919050565b60006020820190508181036000830152613f3d81613a27565b9050919050565b60006020820190508181036000830152613f5d81613a4a565b9050919050565b60006020820190508181036000830152613f7d81613a6d565b9050919050565b60006020820190508181036000830152613f9d81613a90565b9050919050565b60006020820190508181036000830152613fbd81613ab3565b9050919050565b60006020820190508181036000830152613fdd81613af9565b9050919050565b60006020820190508181036000830152613ffd81613b1c565b9050919050565b6000602082019050818103600083015261401d81613b3f565b9050919050565b6000602082019050818103600083015261403d81613b62565b9050919050565b6000602082019050818103600083015261405d81613b85565b9050919050565b6000602082019050818103600083015261407d81613ba8565b9050919050565b6000602082019050818103600083015261409d81613bcb565b9050919050565b600060208201905081810360008301526140bd81613bee565b9050919050565b600060208201905081810360008301526140dd81613c11565b9050919050565b600060208201905081810360008301526140fd81613c34565b9050919050565b6000602082019050818103600083015261411d81613c57565b9050919050565b60006040820190506141396000830184613c7a565b92915050565b60006020820190506141546000830184613ca9565b92915050565b6000614164614175565b90506141708282614500565b919050565b6000604051905090565b600067ffffffffffffffff82111561419a57614199614667565b5b6141a3826146aa565b9050602081019050919050565b600067ffffffffffffffff8211156141cb576141ca614667565b5b6141d4826146aa565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061423a82614408565b915061424583614408565b9250826fffffffffffffffffffffffffffffffff0382111561426a576142696145ab565b5b828201905092915050565b600061428082614444565b915061428b83614444565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156142c0576142bf6145ab565b5b828201905092915050565b60006142d682614444565b91506142e183614444565b9250826142f1576142f06145da565b5b828204905092915050565b600061430782614444565b915061431283614444565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561434b5761434a6145ab565b5b828202905092915050565b600061436182614408565b915061436c83614408565b92508282101561437f5761437e6145ab565b5b828203905092915050565b600061439582614444565b91506143a083614444565b9250828210156143b3576143b26145ab565b5b828203905092915050565b60006143c982614424565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561448f578082015181840152602081019050614474565b8381111561449e576000848401525b50505050565b60006144af82614444565b915060008214156144c3576144c26145ab565b5b600182039050919050565b600060028204905060018216806144e657607f821691505b602082108114156144fa576144f9614609565b5b50919050565b614509826146aa565b810181811067ffffffffffffffff8211171561452857614527614667565b5b80604052505050565b600061453c82614444565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561456f5761456e6145ab565b5b600182019050919050565b600061458582614444565b915061459083614444565b9250826145a05761459f6145da565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614def816143be565b8114614dfa57600080fd5b50565b614e06816143d0565b8114614e1157600080fd5b50565b614e1d816143dc565b8114614e2857600080fd5b50565b614e3481614444565b8114614e3f57600080fd5b5056fea26469706673582212202f8aa975e272c6ac2ab2ee2ff2be31f691a4a7206949e19b1b5738ec3593ff6d64736f6c6343000807003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d5a6d6a363576674767757a33754d6557776b633263565076506b706b4d486b47635a534a7456654441763158

Deployed Bytecode

0x60806040526004361061025c5760003560e01c80636352211e11610144578063ac446002116100b6578063d04950a11161007a578063d04950a1146108d5578063d7224ba014610900578063dc33e6811461092b578063e985e9c514610968578063f2fde38b146109a5578063fe60d12c146109ce5761025c565b8063ac44600214610818578063af7b26e91461082f578063b88d4fde14610858578063bd0a843914610881578063c87b56dd146108985761025c565b80638da5cb5b116101085780638da5cb5b146107155780639231ab2a1461074057806395d89b411461077d578063a0712d68146107a8578063a22cb465146107c4578063a7f93ebd146107ed5761025c565b80636352211e1461063057806369ba1a751461066d57806370a0823114610696578063715018a6146106d35780638d859f3e146106ea5761025c565b80632d6e71b6116101dd57806342842e0e116101a157806342842e0e146105225780634e69d5601461054b5780634f6ccce71461057657806355f804b3146105b35780635c37809d146105dc57806362c6f7b9146106055761025c565b80632d6e71b61461042b5780632f2ffc57146104545780632f745c591461047f5780633af32abf146104bc5780633fd17366146104f95761025c565b8063095ea7b311610224578063095ea7b3146103585780630d9639ba1461038157806318160ddd146103ac578063200d2ed2146103d757806323b872dd146104025761025c565b80630199e3471461026157806301ffc9a71461028a578063050225ea146102c757806306fdde03146102f0578063081812fc1461031b575b600080fd5b34801561026d57600080fd5b5061028860048036038101906102839190613786565b6109f9565b005b34801561029657600080fd5b506102b160048036038101906102ac91906136e3565b610a7f565b6040516102be9190613d67565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906136a3565b610bc9565b005b3480156102fc57600080fd5b50610305610c53565b6040516103129190613d82565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613786565b610ce5565b60405161034f9190613d00565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a91906136a3565b610d6a565b005b34801561038d57600080fd5b50610396610e83565b6040516103a3919061413f565b60405180910390f35b3480156103b857600080fd5b506103c1610e8d565b6040516103ce919061413f565b60405180910390f35b3480156103e357600080fd5b506103ec610e97565b6040516103f9919061413f565b60405180910390f35b34801561040e57600080fd5b506104296004803603810190610424919061358d565b610e9d565b005b34801561043757600080fd5b50610452600480360381019061044d9190613786565b610ead565b005b34801561046057600080fd5b50610469610f33565b604051610476919061413f565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a191906136a3565b610f39565b6040516104b3919061413f565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de9190613520565b611137565b6040516104f09190613d67565b60405180910390f35b34801561050557600080fd5b50610520600480360381019061051b9190613786565b611142565b005b34801561052e57600080fd5b506105496004803603810190610544919061358d565b6111c8565b005b34801561055757600080fd5b506105606111e8565b60405161056d919061413f565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190613786565b6111f2565b6040516105aa919061413f565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d5919061373d565b611245565b005b3480156105e857600080fd5b5061060360048036038101906105fe919061373d565b6112db565b005b34801561061157600080fd5b5061061a611371565b6040516106279190613d67565b60405180910390f35b34801561063c57600080fd5b5061065760048036038101906106529190613786565b611384565b6040516106649190613d00565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f9190613786565b61139a565b005b3480156106a257600080fd5b506106bd60048036038101906106b89190613520565b611420565b6040516106ca919061413f565b60405180910390f35b3480156106df57600080fd5b506106e8611509565b005b3480156106f657600080fd5b506106ff611591565b60405161070c919061413f565b60405180910390f35b34801561072157600080fd5b5061072a611597565b6040516107379190613d00565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190613786565b6115c0565b6040516107749190614124565b60405180910390f35b34801561078957600080fd5b506107926115d8565b60405161079f9190613d82565b60405180910390f35b6107c260048036038101906107bd9190613786565b61166a565b005b3480156107d057600080fd5b506107eb60048036038101906107e69190613663565b611823565b005b3480156107f957600080fd5b506108026119a4565b60405161080f919061413f565b60405180910390f35b34801561082457600080fd5b5061082d6119ae565b005b34801561083b57600080fd5b5061085660048036038101906108519190613786565b611b2f565b005b34801561086457600080fd5b5061087f600480360381019061087a91906135e0565b611bb5565b005b34801561088d57600080fd5b50610896611c11565b005b3480156108a457600080fd5b506108bf60048036038101906108ba9190613786565b611cb9565b6040516108cc9190613d82565b60405180910390f35b3480156108e157600080fd5b506108ea611e08565b6040516108f7919061413f565b60405180910390f35b34801561090c57600080fd5b50610915611e0e565b604051610922919061413f565b60405180910390f35b34801561093757600080fd5b50610952600480360381019061094d9190613520565b611e14565b60405161095f919061413f565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a919061354d565b611e26565b60405161099c9190613d67565b60405180910390f35b3480156109b157600080fd5b506109cc60048036038101906109c79190613520565b611eba565b005b3480156109da57600080fd5b506109e3611fb2565b6040516109f0919061413f565b60405180910390f35b610a01611fb8565b73ffffffffffffffffffffffffffffffffffffffff16610a1f611597565b73ffffffffffffffffffffffffffffffffffffffff1614610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c90613f24565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b4a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bb257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bc25750610bc182611fc0565b5b9050919050565b610bd1611fb8565b73ffffffffffffffffffffffffffffffffffffffff16610bef611597565b73ffffffffffffffffffffffffffffffffffffffff1614610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90613f24565b60405180910390fd5b610c4f828261202a565b5050565b606060028054610c62906144ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e906144ce565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b5050505050905090565b6000610cf082612048565b610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d26906140e4565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d7582611384565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90613fa4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e05611fb8565b73ffffffffffffffffffffffffffffffffffffffff161480610e345750610e3381610e2e611fb8565b611e26565b5b610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90613ea4565b60405180910390fd5b610e7e838383612056565b505050565b6000600d54905090565b6000600154905090565b60115481565b610ea8838383612108565b505050565b610eb5611fb8565b73ffffffffffffffffffffffffffffffffffffffff16610ed3611597565b73ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090613f24565b60405180910390fd5b80600d8190555050565b600b5481565b6000610f4483611420565b8210610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613da4565b60405180910390fd5b6000610f8f610e8d565b905060008060005b838110156110f5576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461108957806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110e157868414156110d2578195505050505050611131565b83806110dd90614531565b9450505b5080806110ed90614531565b915050610f97565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890614084565b60405180910390fd5b92915050565b600060019050919050565b61114a611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611168611597565b73ffffffffffffffffffffffffffffffffffffffff16146111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590613f24565b60405180910390fd5b80600c8190555050565b6111e383838360405180602001604052806000815250611bb5565b505050565b6000601154905090565b60006111fc610e8d565b821061123d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123490613e04565b60405180910390fd5b819050919050565b61124d611fb8565b73ffffffffffffffffffffffffffffffffffffffff1661126b611597565b73ffffffffffffffffffffffffffffffffffffffff16146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b890613f24565b60405180910390fd5b80600f90805190602001906112d79291906132fa565b5050565b6112e3611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611301611597565b73ffffffffffffffffffffffffffffffffffffffff1614611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e90613f24565b60405180910390fd5b806010908051906020019061136d9291906132fa565b5050565b600e60009054906101000a900460ff1681565b600061138f826126c1565b600001519050919050565b6113a2611fb8565b73ffffffffffffffffffffffffffffffffffffffff166113c0611597565b73ffffffffffffffffffffffffffffffffffffffff1614611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90613f24565b60405180910390fd5b8060118190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890613ec4565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611511611fb8565b73ffffffffffffffffffffffffffffffffffffffff1661152f611597565b73ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90613f24565b60405180910390fd5b61158f60006128c4565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115c8613380565b6115d1826126c1565b9050919050565b6060600380546115e7906144ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611613906144ce565b80156116605780601f1061163557610100808354040283529160200191611660565b820191906000526020600020905b81548152906001019060200180831161164357829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90613e84565b60405180910390fd5b60026011541461171d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171490613e64565b60405180910390fd5b600d5461271061172d919061438a565b81611736610e8d565b6117409190614275565b1115611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890613ee4565b60405180910390fd5b600a548111156117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90614064565b60405180910390fd5b80600c546117d491906142fc565b341015611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90614004565b60405180910390fd5b611820338261202a565b50565b61182b611fb8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090613f64565b60405180910390fd5b80600760006118a6611fb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611953611fb8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119989190613d67565b60405180910390a35050565b6000600c54905090565b6119b6611fb8565b73ffffffffffffffffffffffffffffffffffffffff166119d4611597565b73ffffffffffffffffffffffffffffffffffffffff1614611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190613f24565b60405180910390fd5b60026009541415611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a67906140a4565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611a9e90613ceb565b60006040518083038185875af1925050503d8060008114611adb576040519150601f19603f3d011682016040523d82523d6000602084013e611ae0565b606091505b5050905080611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b90613fc4565b60405180910390fd5b506001600981905550565b611b37611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611b55611597565b73ffffffffffffffffffffffffffffffffffffffff1614611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613f24565b60405180910390fd5b80600a8190555050565b611bc0848484612108565b611bcc84848484612988565b611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290613fe4565b60405180910390fd5b50505050565b611c19611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611c37611597565b73ffffffffffffffffffffffffffffffffffffffff1614611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8490613f24565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b6060611cc482612048565b611d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfa90613f44565b60405180910390fd5b600e60009054906101000a900460ff1615611d75576000611d22612b1f565b90506000815111611d425760405180602001604052806000815250611d6d565b80611d4c84612bb1565b604051602001611d5d929190613cc7565b6040516020818303038152906040525b915050611e03565b60108054611d82906144ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611dae906144ce565b8015611dfb5780601f10611dd057610100808354040283529160200191611dfb565b820191906000526020600020905b815481529060010190602001808311611dde57829003601f168201915b505050505090505b919050565b600a5481565b60085481565b6000611e1f82612d12565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ec2611fb8565b73ffffffffffffffffffffffffffffffffffffffff16611ee0611597565b73ffffffffffffffffffffffffffffffffffffffff1614611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d90613f24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d90613dc4565b60405180910390fd5b611faf816128c4565b50565b600d5481565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612044828260405180602001604052806000815250612dfb565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612113826126c1565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661213a611fb8565b73ffffffffffffffffffffffffffffffffffffffff161480612196575061215f611fb8565b73ffffffffffffffffffffffffffffffffffffffff1661217e84610ce5565b73ffffffffffffffffffffffffffffffffffffffff16145b806121b257506121b182600001516121ac611fb8565b611e26565b5b9050806121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90613f84565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225d90613f04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90613e24565b60405180910390fd5b6122e385858560016132db565b6122f36000848460000151612056565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166123619190614356565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff16612405919061422f565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461250b9190614275565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156126515761258181612048565b15612650576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126b986868660016132e1565b505050505050565b6126c9613380565b6126d282612048565b612711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270890613de4565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000003283106127755760017f000000000000000000000000000000000000000000000000000000000000003284612768919061438a565b6127729190614275565b90505b60008390505b818110612883576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461286f578093505050506128bf565b50808061287b906144a4565b91505061277b565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b6906140c4565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006129a98473ffffffffffffffffffffffffffffffffffffffff166132e7565b15612b12578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129d2611fb8565b8786866040518563ffffffff1660e01b81526004016129f49493929190613d1b565b602060405180830381600087803b158015612a0e57600080fd5b505af1925050508015612a3f57506040513d601f19601f82011682018060405250810190612a3c9190613710565b60015b612ac2573d8060008114612a6f576040519150601f19603f3d011682016040523d82523d6000602084013e612a74565b606091505b50600081511415612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab190613fe4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612b17565b600190505b949350505050565b6060600f8054612b2e906144ce565b80601f0160208091040260200160405190810160405280929190818152602001828054612b5a906144ce565b8015612ba75780601f10612b7c57610100808354040283529160200191612ba7565b820191906000526020600020905b815481529060010190602001808311612b8a57829003601f168201915b5050505050905090565b60606000821415612bf9576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612d0d565b600082905060005b60008214612c2b578080612c1490614531565b915050600a82612c2491906142cb565b9150612c01565b60008167ffffffffffffffff811115612c4757612c46614667565b5b6040519080825280601f01601f191660200182016040528015612c795781602001600182028036833780820191505090505b5090505b60008514612d0657600182612c92919061438a565b9150600a85612ca1919061457a565b6030612cad9190614275565b60f81b818381518110612cc357612cc2614638565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612cff91906142cb565b9450612c7d565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7a90613e44565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6990614044565b60405180910390fd5b612e7b81612048565b15612ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb290614024565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000032831115612f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1590614104565b60405180910390fd5b612f2b60008583866132db565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151613028919061422f565b6fffffffffffffffffffffffffffffffff16815260200185836020015161304f919061422f565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156132be57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461325e6000888488612988565b61329d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329490613fe4565b60405180910390fd5b81806132a890614531565b92505080806132b690614531565b9150506131ed565b50806001819055506132d360008785886132e1565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b828054613306906144ce565b90600052602060002090601f016020900481019282613328576000855561336f565b82601f1061334157805160ff191683800117855561336f565b8280016001018555821561336f579182015b8281111561336e578251825591602001919060010190613353565b5b50905061337c91906133ba565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156133d35760008160009055506001016133bb565b5090565b60006133ea6133e58461417f565b61415a565b9050828152602081018484840111156134065761340561469b565b5b613411848285614462565b509392505050565b600061342c613427846141b0565b61415a565b9050828152602081018484840111156134485761344761469b565b5b613453848285614462565b509392505050565b60008135905061346a81614de6565b92915050565b60008135905061347f81614dfd565b92915050565b60008135905061349481614e14565b92915050565b6000815190506134a981614e14565b92915050565b600082601f8301126134c4576134c3614696565b5b81356134d48482602086016133d7565b91505092915050565b600082601f8301126134f2576134f1614696565b5b8135613502848260208601613419565b91505092915050565b60008135905061351a81614e2b565b92915050565b600060208284031215613536576135356146a5565b5b60006135448482850161345b565b91505092915050565b60008060408385031215613564576135636146a5565b5b60006135728582860161345b565b92505060206135838582860161345b565b9150509250929050565b6000806000606084860312156135a6576135a56146a5565b5b60006135b48682870161345b565b93505060206135c58682870161345b565b92505060406135d68682870161350b565b9150509250925092565b600080600080608085870312156135fa576135f96146a5565b5b60006136088782880161345b565b94505060206136198782880161345b565b935050604061362a8782880161350b565b925050606085013567ffffffffffffffff81111561364b5761364a6146a0565b5b613657878288016134af565b91505092959194509250565b6000806040838503121561367a576136796146a5565b5b60006136888582860161345b565b925050602061369985828601613470565b9150509250929050565b600080604083850312156136ba576136b96146a5565b5b60006136c88582860161345b565b92505060206136d98582860161350b565b9150509250929050565b6000602082840312156136f9576136f86146a5565b5b600061370784828501613485565b91505092915050565b600060208284031215613726576137256146a5565b5b60006137348482850161349a565b91505092915050565b600060208284031215613753576137526146a5565b5b600082013567ffffffffffffffff811115613771576137706146a0565b5b61377d848285016134dd565b91505092915050565b60006020828403121561379c5761379b6146a5565b5b60006137aa8482850161350b565b91505092915050565b6137bc816143be565b82525050565b6137cb816143be565b82525050565b6137da816143d0565b82525050565b60006137eb826141e1565b6137f581856141f7565b9350613805818560208601614471565b61380e816146aa565b840191505092915050565b6000613824826141ec565b61382e8185614213565b935061383e818560208601614471565b613847816146aa565b840191505092915050565b600061385d826141ec565b6138678185614224565b9350613877818560208601614471565b80840191505092915050565b6000613890602283614213565b915061389b826146bb565b604082019050919050565b60006138b3602683614213565b91506138be8261470a565b604082019050919050565b60006138d6602a83614213565b91506138e182614759565b604082019050919050565b60006138f9602383614213565b9150613904826147a8565b604082019050919050565b600061391c602583614213565b9150613927826147f7565b604082019050919050565b600061393f603183614213565b915061394a82614846565b604082019050919050565b6000613962601283614213565b915061396d82614895565b602082019050919050565b6000613985601e83614213565b9150613990826148be565b602082019050919050565b60006139a8603983614213565b91506139b3826148e7565b604082019050919050565b60006139cb602b83614213565b91506139d682614936565b604082019050919050565b60006139ee601283614213565b91506139f982614985565b602082019050919050565b6000613a11602683614213565b9150613a1c826149ae565b604082019050919050565b6000613a34602083614213565b9150613a3f826149fd565b602082019050919050565b6000613a57602f83614213565b9150613a6282614a26565b604082019050919050565b6000613a7a601a83614213565b9150613a8582614a75565b602082019050919050565b6000613a9d603283614213565b9150613aa882614a9e565b604082019050919050565b6000613ac0602283614213565b9150613acb82614aed565b604082019050919050565b6000613ae3600083614208565b9150613aee82614b3c565b600082019050919050565b6000613b06601083614213565b9150613b1182614b3f565b602082019050919050565b6000613b29603383614213565b9150613b3482614b68565b604082019050919050565b6000613b4c601683614213565b9150613b5782614bb7565b602082019050919050565b6000613b6f601d83614213565b9150613b7a82614be0565b602082019050919050565b6000613b92602183614213565b9150613b9d82614c09565b604082019050919050565b6000613bb5601683614213565b9150613bc082614c58565b602082019050919050565b6000613bd8602e83614213565b9150613be382614c81565b604082019050919050565b6000613bfb601f83614213565b9150613c0682614cd0565b602082019050919050565b6000613c1e602f83614213565b9150613c2982614cf9565b604082019050919050565b6000613c41602d83614213565b9150613c4c82614d48565b604082019050919050565b6000613c64602283614213565b9150613c6f82614d97565b604082019050919050565b604082016000820151613c9060008501826137b3565b506020820151613ca36020850182613cb8565b50505050565b613cb281614444565b82525050565b613cc18161444e565b82525050565b6000613cd38285613852565b9150613cdf8284613852565b91508190509392505050565b6000613cf682613ad6565b9150819050919050565b6000602082019050613d1560008301846137c2565b92915050565b6000608082019050613d3060008301876137c2565b613d3d60208301866137c2565b613d4a6040830185613ca9565b8181036060830152613d5c81846137e0565b905095945050505050565b6000602082019050613d7c60008301846137d1565b92915050565b60006020820190508181036000830152613d9c8184613819565b905092915050565b60006020820190508181036000830152613dbd81613883565b9050919050565b60006020820190508181036000830152613ddd816138a6565b9050919050565b60006020820190508181036000830152613dfd816138c9565b9050919050565b60006020820190508181036000830152613e1d816138ec565b9050919050565b60006020820190508181036000830152613e3d8161390f565b9050919050565b60006020820190508181036000830152613e5d81613932565b9050919050565b60006020820190508181036000830152613e7d81613955565b9050919050565b60006020820190508181036000830152613e9d81613978565b9050919050565b60006020820190508181036000830152613ebd8161399b565b9050919050565b60006020820190508181036000830152613edd816139be565b9050919050565b60006020820190508181036000830152613efd816139e1565b9050919050565b60006020820190508181036000830152613f1d81613a04565b9050919050565b60006020820190508181036000830152613f3d81613a27565b9050919050565b60006020820190508181036000830152613f5d81613a4a565b9050919050565b60006020820190508181036000830152613f7d81613a6d565b9050919050565b60006020820190508181036000830152613f9d81613a90565b9050919050565b60006020820190508181036000830152613fbd81613ab3565b9050919050565b60006020820190508181036000830152613fdd81613af9565b9050919050565b60006020820190508181036000830152613ffd81613b1c565b9050919050565b6000602082019050818103600083015261401d81613b3f565b9050919050565b6000602082019050818103600083015261403d81613b62565b9050919050565b6000602082019050818103600083015261405d81613b85565b9050919050565b6000602082019050818103600083015261407d81613ba8565b9050919050565b6000602082019050818103600083015261409d81613bcb565b9050919050565b600060208201905081810360008301526140bd81613bee565b9050919050565b600060208201905081810360008301526140dd81613c11565b9050919050565b600060208201905081810360008301526140fd81613c34565b9050919050565b6000602082019050818103600083015261411d81613c57565b9050919050565b60006040820190506141396000830184613c7a565b92915050565b60006020820190506141546000830184613ca9565b92915050565b6000614164614175565b90506141708282614500565b919050565b6000604051905090565b600067ffffffffffffffff82111561419a57614199614667565b5b6141a3826146aa565b9050602081019050919050565b600067ffffffffffffffff8211156141cb576141ca614667565b5b6141d4826146aa565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061423a82614408565b915061424583614408565b9250826fffffffffffffffffffffffffffffffff0382111561426a576142696145ab565b5b828201905092915050565b600061428082614444565b915061428b83614444565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156142c0576142bf6145ab565b5b828201905092915050565b60006142d682614444565b91506142e183614444565b9250826142f1576142f06145da565b5b828204905092915050565b600061430782614444565b915061431283614444565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561434b5761434a6145ab565b5b828202905092915050565b600061436182614408565b915061436c83614408565b92508282101561437f5761437e6145ab565b5b828203905092915050565b600061439582614444565b91506143a083614444565b9250828210156143b3576143b26145ab565b5b828203905092915050565b60006143c982614424565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561448f578082015181840152602081019050614474565b8381111561449e576000848401525b50505050565b60006144af82614444565b915060008214156144c3576144c26145ab565b5b600182039050919050565b600060028204905060018216806144e657607f821691505b602082108114156144fa576144f9614609565b5b50919050565b614509826146aa565b810181811067ffffffffffffffff8211171561452857614527614667565b5b80604052505050565b600061453c82614444565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561456f5761456e6145ab565b5b600182019050919050565b600061458582614444565b915061459083614444565b9250826145a05761459f6145da565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614def816143be565b8114614dfa57600080fd5b50565b614e06816143d0565b8114614e1157600080fd5b50565b614e1d816143dc565b8114614e2857600080fd5b50565b614e3481614444565b8114614e3f57600080fd5b5056fea26469706673582212202f8aa975e272c6ac2ab2ee2ff2be31f691a4a7206949e19b1b5738ec3593ff6d64736f6c63430008070033

Deployed Bytecode Sourcemap

19921:3574:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22990:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11238:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23412:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12810:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14011:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13627:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23250:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10208:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20535:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14694:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23170:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20104:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10489:744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21747:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22695:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14841:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23335:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10307:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21947:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21842:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20431:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12687:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23094:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11613:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2697:103;;;;;;;;;;;;;:::i;:::-;;20182:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2474:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22272:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12909:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20924:397;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14220:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22797:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22423:181;;;;;;;;;;;;;:::i;:::-;;22884:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15003:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22608:83;;;;;;;;;;;;;:::i;:::-;;21328:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20025:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18133:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22161:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14501:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2809:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20235:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22990:98;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23081:1:::1;23063:15;:19;;;;22990:98:::0;:::o;11238:370::-;11365:4;11410:25;11395:40;;;:11;:40;;;;:99;;;;11461:33;11446:48;;;:11;:48;;;;11395:99;:160;;;;11520:35;11505:50;;;:11;:50;;;;11395:160;:207;;;;11566:36;11590:11;11566:23;:36::i;:::-;11395:207;11381:221;;11238:370;;;:::o;23412:80::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23471:15:::1;23481:1;23484;23471:9;:15::i;:::-;23412:80:::0;;:::o;12810:94::-;12864:13;12893:5;12886:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12810:94;:::o;14011:204::-;14079:7;14103:16;14111:7;14103;:16::i;:::-;14095:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14185:15;:24;14201:7;14185:24;;;;;;;;;;;;;;;;;;;;;14178:31;;14011:204;;;:::o;13627:379::-;13696:13;13712:24;13728:7;13712:15;:24::i;:::-;13696:40;;13757:5;13751:11;;:2;:11;;;;13743:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13842:5;13826:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13851:37;13868:5;13875:12;:10;:12::i;:::-;13851:16;:37::i;:::-;13826:62;13810:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13972:28;13981:2;13985:7;13994:5;13972:8;:28::i;:::-;13689:317;13627:379;;:::o;23250:81::-;23293:7;23317:8;;23310:15;;23250:81;:::o;10208:94::-;10261:7;10284:12;;10277:19;;10208:94;:::o;20535:22::-;;;;:::o;14694:142::-;14802:28;14812:4;14818:2;14822:7;14802:9;:28::i;:::-;14694:142;;;:::o;23170:76::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23239:1:::1;23228:8;:12;;;;23170:76:::0;:::o;20104:34::-;;;;:::o;10489:744::-;10598:7;10633:16;10643:5;10633:9;:16::i;:::-;10625:5;:24;10617:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10695:22;10720:13;:11;:13::i;:::-;10695:38;;10740:19;10770:25;10820:9;10815:350;10839:14;10835:1;:18;10815:350;;;10869:31;10903:11;:14;10915:1;10903:14;;;;;;;;;;;10869:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10956:1;10930:28;;:9;:14;;;:28;;;10926:89;;10991:9;:14;;;10971:34;;10926:89;11048:5;11027:26;;:17;:26;;;11023:135;;;11085:5;11070:11;:20;11066:59;;;11112:1;11105:8;;;;;;;;;11066:59;11135:13;;;;;:::i;:::-;;;;11023:135;10860:305;10855:3;;;;;:::i;:::-;;;;10815:350;;;;11171:56;;;;;;;;;;:::i;:::-;;;;;;;;10489:744;;;;;:::o;21747:89::-;21806:4;21826;21819:11;;21747:89;;;:::o;22695:98::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22778:9:::1;22770:5;:17;;;;22695:98:::0;:::o;14841:157::-;14953:39;14970:4;14976:2;14980:7;14953:39;;;;;;;;;;;;:16;:39::i;:::-;14841:157;;;:::o;23335:73::-;23375:4;23396:6;;23389:13;;23335:73;:::o;10307:177::-;10374:7;10406:13;:11;:13::i;:::-;10398:5;:21;10390:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10473:5;10466:12;;10307:177;;;:::o;21947:98::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22032:7:::1;22016:13;:23;;;;;;;;;;;;:::i;:::-;;21947:98:::0;:::o;21842:99::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21932:3:::1;21914:15;:21;;;;;;;;;;;;:::i;:::-;;21842:99:::0;:::o;20431:29::-;;;;;;;;;;;;;:::o;12687:118::-;12751:7;12774:20;12786:7;12774:11;:20::i;:::-;:25;;;12767:32;;12687:118;;;:::o;23094:72::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23159:1:::1;23150:6;:10;;;;23094:72:::0;:::o;11613:211::-;11677:7;11718:1;11701:19;;:5;:19;;;;11693:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11790:12;:19;11803:5;11790:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11782:36;;11775:43;;11613:211;;;:::o;2697:103::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2762:30:::1;2789:1;2762:18;:30::i;:::-;2697:103::o:0;20182:33::-;;;;:::o;2474:87::-;2520:7;2547:6;;;;;;;;;;;2540:13;;2474:87;:::o;22272:147::-;22353:21;;:::i;:::-;22393:20;22405:7;22393:11;:20::i;:::-;22386:27;;22272:147;;;:::o;12909:98::-;12965:13;12994:7;12987:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12909:98;:::o;20924:397::-;20858:10;20845:23;;:9;:23;;;20837:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21012:1:::1;21002:6;;:11;20993:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;21103:8;;20320:5;21080:31;;;;:::i;:::-;21068:8;21052:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:59;;21044:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;21163:17;;21151:8;:29;;21141:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21242:8;21234:5;;:16;;;;:::i;:::-;21221:9;:29;;21213:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21284:31;21294:10;21306:8;21284:9;:31::i;:::-;20924:397:::0;:::o;14220:274::-;14323:12;:10;:12::i;:::-;14311:24;;:8;:24;;;;14303:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14420:8;14375:18;:32;14394:12;:10;:12::i;:::-;14375:32;;;;;;;;;;;;;;;:42;14408:8;14375:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14469:8;14440:48;;14455:12;:10;:12::i;:::-;14440:48;;;14479:8;14440:48;;;;;;:::i;:::-;;;;;;;;14220:274;;:::o;22797:83::-;22841:7;22869:5;;22862:12;;22797:83;:::o;22423:181::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;256:1:::1;402:7;;:19;;394:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;256:1;463:7;:18;;;;22488:12:::2;22506:10;:15;;22529:21;22506:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22487:68;;;22570:7;22562:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;22480:124;212:1:::1;506:7;:22;;;;22423:181::o:0;22884:102::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22979:1:::1;22959:17;:21;;;;22884:102:::0;:::o;15003:311::-;15140:28;15150:4;15156:2;15160:7;15140:9;:28::i;:::-;15191:48;15214:4;15220:2;15224:7;15233:5;15191:22;:48::i;:::-;15175:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;15003:311;;;;:::o;22608:83::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22676:9:::1;;;;;;;;;;;22675:10;22663:9;;:22;;;;;;;;;;;;;;;;;;22608:83::o:0;21328:413::-;21401:13;21431:16;21439:7;21431;:16::i;:::-;21423:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21508:9;;;;;;;;;;;21505:231;;;21525:21;21549:10;:8;:10::i;:::-;21525:34;;21604:1;21586:7;21580:21;:25;:104;;;;;;;;;;;;;;;;;21641:7;21650:18;:7;:16;:18::i;:::-;21624:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21580:104;21566:118;;;;;21505:231;21713:15;21706:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21328:413;;;;:::o;20025:37::-;;;;:::o;18133:43::-;;;;:::o;22161:107::-;22219:7;22242:20;22256:5;22242:13;:20::i;:::-;22235:27;;22161:107;;;:::o;14501:186::-;14623:4;14646:18;:25;14665:5;14646:25;;;;;;;;;;;;;;;:35;14672:8;14646:35;;;;;;;;;;;;;;;;;;;;;;;;;14639:42;;14501:186;;;;:::o;2809:201::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2918:1:::1;2898:22;;:8;:22;;;;2890:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2974:28;2993:8;2974:18;:28::i;:::-;2809:201:::0;:::o;20235:30::-;;;;:::o;2017:98::-;2070:7;2097:10;2090:17;;2017:98;:::o;7127:157::-;7212:4;7251:25;7236:40;;;:11;:40;;;;7229:47;;7127:157;;;:::o;15430:98::-;15495:27;15505:2;15509:8;15495:27;;;;;;;;;;;;:9;:27::i;:::-;15430:98;;:::o;15319:105::-;15376:4;15406:12;;15396:7;:22;15389:29;;15319:105;;;:::o;17955:172::-;18079:2;18052:15;:24;18068:7;18052:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18113:7;18109:2;18093:28;;18102:5;18093:28;;;;;;;;;;;;17955:172;;;:::o;16690:1260::-;16787:35;16825:20;16837:7;16825:11;:20::i;:::-;16787:58;;16854:22;16896:13;:18;;;16880:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;16949:12;:10;:12::i;:::-;16925:36;;:20;16937:7;16925:11;:20::i;:::-;:36;;;16880:81;:142;;;;16972:50;16989:13;:18;;;17009:12;:10;:12::i;:::-;16972:16;:50::i;:::-;16880:142;16854:169;;17048:17;17032:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17180:4;17158:26;;:13;:18;;;:26;;;17142:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;17269:1;17255:16;;:2;:16;;;;17247:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17322:43;17344:4;17350:2;17354:7;17363:1;17322:21;:43::i;:::-;17373:49;17390:1;17394:7;17403:13;:18;;;17373:8;:49::i;:::-;17461:1;17431:12;:18;17444:4;17431:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17497:1;17469:12;:16;17482:2;17469:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17528:43;;;;;;;;17543:2;17528:43;;;;;;17554:15;17528:43;;;;;17505:11;:20;17517:7;17505:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17579:19;17611:1;17601:7;:11;;;;:::i;:::-;17579:33;;17664:1;17623:43;;:11;:24;17635:11;17623:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;17619:236;;;17681:20;17689:11;17681:7;:20::i;:::-;17677:171;;;17741:97;;;;;;;;17768:13;:18;;;17741:97;;;;;;17799:13;:28;;;17741:97;;;;;17714:11;:24;17726:11;17714:24;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17677:171;17619:236;17887:7;17883:2;17868:27;;17877:4;17868:27;;;;;;;;;;;;17902:42;17923:4;17929:2;17933:7;17942:1;17902:20;:42::i;:::-;16780:1170;;;16690:1260;;;:::o;12076:606::-;12152:21;;:::i;:::-;12193:16;12201:7;12193;:16::i;:::-;12185:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12265:26;12313:12;12302:7;:23;12298:93;;12382:1;12367:12;12357:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;12336:47;;12298:93;12404:12;12419:7;12404:22;;12399:212;12436:18;12428:4;:26;12399:212;;12473:31;12507:11;:17;12519:4;12507:17;;;;;;;;;;;12473:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12563:1;12537:28;;:9;:14;;;:28;;;12533:71;;12585:9;12578:16;;;;;;;12533:71;12464:147;12456:6;;;;;:::i;:::-;;;;12399:212;;;;12619:57;;;;;;;;;;:::i;:::-;;;;;;;;12076:606;;;;:::o;3019:191::-;3093:16;3112:6;;;;;;;;;;;3093:25;;3138:8;3129:6;;:17;;;;;;;;;;;;;;;;;;3193:8;3162:40;;3183:8;3162:40;;;;;;;;;;;;3082:128;3019:191;:::o;18933:690::-;19070:4;19087:15;:2;:13;;;:15::i;:::-;19083:535;;;19142:2;19126:36;;;19163:12;:10;:12::i;:::-;19177:4;19183:7;19192:5;19126:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19113:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19374:1;19357:6;:13;:18;19353:215;;;19390:61;;;;;;;;;;:::i;:::-;;;;;;;;19353:215;19536:6;19530:13;19521:6;19517:2;19513:15;19506:38;19113:464;19258:45;;;19248:55;;;:6;:55;;;;19241:62;;;;;19083:535;19606:4;19599:11;;18933:690;;;;;;;:::o;22049:108::-;22109:13;22138;22131:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22049:108;:::o;634:533::-;690:13;730:1;721:5;:10;717:53;;;748:10;;;;;;;;;;;;;;;;;;;;;717:53;780:12;795:5;780:20;;811:14;836:78;851:1;843:4;:9;836:78;;869:8;;;;;:::i;:::-;;;;900:2;892:10;;;;;:::i;:::-;;;836:78;;;924:19;956:6;946:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:39;;974:154;990:1;981:5;:10;974:154;;1018:1;1008:11;;;;;:::i;:::-;;;1085:2;1077:5;:10;;;;:::i;:::-;1064:2;:24;;;;:::i;:::-;1051:39;;1034:6;1041;1034:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1114:2;1105:11;;;;;:::i;:::-;;;974:154;;;1152:6;1138:21;;;;;634:533;;;;:::o;11830:240::-;11891:7;11940:1;11923:19;;:5;:19;;;;11907:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12031:12;:19;12044:5;12031:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;12023:41;;12016:48;;11830:240;;;:::o;15533:1152::-;15638:20;15661:12;;15638:35;;15702:1;15688:16;;:2;:16;;;;15680:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15759:21;15767:12;15759:7;:21::i;:::-;15758:22;15750:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15841:12;15829:8;:24;;15821:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15901:61;15931:1;15935:2;15939:12;15953:8;15901:21;:61::i;:::-;15971:30;16004:12;:16;16017:2;16004:16;;;;;;;;;;;;;;;15971:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16046:119;;;;;;;;16096:8;16066:11;:19;;;:39;;;;:::i;:::-;16046:119;;;;;;16149:8;16114:11;:24;;;:44;;;;:::i;:::-;16046:119;;;;;16027:12;:16;16040:2;16027:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16200:43;;;;;;;;16215:2;16200:43;;;;;;16226:15;16200:43;;;;;16172:11;:25;16184:12;16172:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16252:20;16275:12;16252:35;;16301:9;16296:281;16320:8;16316:1;:12;16296:281;;;16374:12;16370:2;16349:38;;16366:1;16349:38;;;;;;;;;;;;16414:59;16445:1;16449:2;16453:12;16467:5;16414:22;:59::i;:::-;16396:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;16555:14;;;;;:::i;:::-;;;;16330:3;;;;;:::i;:::-;;;;16296:281;;;;16600:12;16585;:27;;;;16619:60;16648:1;16652:2;16656:12;16670:8;16619:20;:60::i;:::-;15631:1054;;;15533:1152;;;:::o;19628:141::-;;;;;:::o;19774:140::-;;;;;:::o;3242:197::-;3302:4;3320:12;3387:7;3375:20;3367:28;;3430:1;3423:4;:8;3416:15;;;3242:197;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:327::-;5678:6;5727:2;5715:9;5706:7;5702:23;5698:32;5695:119;;;5733:79;;:::i;:::-;5695:119;5853:1;5878:52;5922:7;5913:6;5902:9;5898:22;5878:52;:::i;:::-;5868:62;;5824:116;5620:327;;;;:::o;5953:349::-;6022:6;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:63;6277:7;6268:6;6257:9;6253:22;6222:63;:::i;:::-;6212:73;;6168:127;5953:349;;;;:::o;6308:509::-;6377:6;6426:2;6414:9;6405:7;6401:23;6397:32;6394:119;;;6432:79;;:::i;:::-;6394:119;6580:1;6569:9;6565:17;6552:31;6610:18;6602:6;6599:30;6596:117;;;6632:79;;:::i;:::-;6596:117;6737:63;6792:7;6783:6;6772:9;6768:22;6737:63;:::i;:::-;6727:73;;6523:287;6308:509;;;;:::o;6823:329::-;6882:6;6931:2;6919:9;6910:7;6906:23;6902:32;6899:119;;;6937:79;;:::i;:::-;6899:119;7057:1;7082:53;7127:7;7118:6;7107:9;7103:22;7082:53;:::i;:::-;7072:63;;7028:117;6823:329;;;;:::o;7158:108::-;7235:24;7253:5;7235:24;:::i;:::-;7230:3;7223:37;7158:108;;:::o;7272:118::-;7359:24;7377:5;7359:24;:::i;:::-;7354:3;7347:37;7272:118;;:::o;7396:109::-;7477:21;7492:5;7477:21;:::i;:::-;7472:3;7465:34;7396:109;;:::o;7511:360::-;7597:3;7625:38;7657:5;7625:38;:::i;:::-;7679:70;7742:6;7737:3;7679:70;:::i;:::-;7672:77;;7758:52;7803:6;7798:3;7791:4;7784:5;7780:16;7758:52;:::i;:::-;7835:29;7857:6;7835:29;:::i;:::-;7830:3;7826:39;7819:46;;7601:270;7511:360;;;;:::o;7877:364::-;7965:3;7993:39;8026:5;7993:39;:::i;:::-;8048:71;8112:6;8107:3;8048:71;:::i;:::-;8041:78;;8128:52;8173:6;8168:3;8161:4;8154:5;8150:16;8128:52;:::i;:::-;8205:29;8227:6;8205:29;:::i;:::-;8200:3;8196:39;8189:46;;7969:272;7877:364;;;;:::o;8247:377::-;8353:3;8381:39;8414:5;8381:39;:::i;:::-;8436:89;8518:6;8513:3;8436:89;:::i;:::-;8429:96;;8534:52;8579:6;8574:3;8567:4;8560:5;8556:16;8534:52;:::i;:::-;8611:6;8606:3;8602:16;8595:23;;8357:267;8247:377;;;;:::o;8630:366::-;8772:3;8793:67;8857:2;8852:3;8793:67;:::i;:::-;8786:74;;8869:93;8958:3;8869:93;:::i;:::-;8987:2;8982:3;8978:12;8971:19;;8630:366;;;:::o;9002:::-;9144:3;9165:67;9229:2;9224:3;9165:67;:::i;:::-;9158:74;;9241:93;9330:3;9241:93;:::i;:::-;9359:2;9354:3;9350:12;9343:19;;9002:366;;;:::o;9374:::-;9516:3;9537:67;9601:2;9596:3;9537:67;:::i;:::-;9530:74;;9613:93;9702:3;9613:93;:::i;:::-;9731:2;9726:3;9722:12;9715:19;;9374:366;;;:::o;9746:::-;9888:3;9909:67;9973:2;9968:3;9909:67;:::i;:::-;9902:74;;9985:93;10074:3;9985:93;:::i;:::-;10103:2;10098:3;10094:12;10087:19;;9746:366;;;:::o;10118:::-;10260:3;10281:67;10345:2;10340:3;10281:67;:::i;:::-;10274:74;;10357:93;10446:3;10357:93;:::i;:::-;10475:2;10470:3;10466:12;10459:19;;10118:366;;;:::o;10490:::-;10632:3;10653:67;10717:2;10712:3;10653:67;:::i;:::-;10646:74;;10729:93;10818:3;10729:93;:::i;:::-;10847:2;10842:3;10838:12;10831:19;;10490:366;;;:::o;10862:::-;11004:3;11025:67;11089:2;11084:3;11025:67;:::i;:::-;11018:74;;11101:93;11190:3;11101:93;:::i;:::-;11219:2;11214:3;11210:12;11203:19;;10862:366;;;:::o;11234:::-;11376:3;11397:67;11461:2;11456:3;11397:67;:::i;:::-;11390:74;;11473:93;11562:3;11473:93;:::i;:::-;11591:2;11586:3;11582:12;11575:19;;11234:366;;;:::o;11606:::-;11748:3;11769:67;11833:2;11828:3;11769:67;:::i;:::-;11762:74;;11845:93;11934:3;11845:93;:::i;:::-;11963:2;11958:3;11954:12;11947:19;;11606:366;;;:::o;11978:::-;12120:3;12141:67;12205:2;12200:3;12141:67;:::i;:::-;12134:74;;12217:93;12306:3;12217:93;:::i;:::-;12335:2;12330:3;12326:12;12319:19;;11978:366;;;:::o;12350:::-;12492:3;12513:67;12577:2;12572:3;12513:67;:::i;:::-;12506:74;;12589:93;12678:3;12589:93;:::i;:::-;12707:2;12702:3;12698:12;12691:19;;12350:366;;;:::o;12722:::-;12864:3;12885:67;12949:2;12944:3;12885:67;:::i;:::-;12878:74;;12961:93;13050:3;12961:93;:::i;:::-;13079:2;13074:3;13070:12;13063:19;;12722:366;;;:::o;13094:::-;13236:3;13257:67;13321:2;13316:3;13257:67;:::i;:::-;13250:74;;13333:93;13422:3;13333:93;:::i;:::-;13451:2;13446:3;13442:12;13435:19;;13094:366;;;:::o;13466:::-;13608:3;13629:67;13693:2;13688:3;13629:67;:::i;:::-;13622:74;;13705:93;13794:3;13705:93;:::i;:::-;13823:2;13818:3;13814:12;13807:19;;13466:366;;;:::o;13838:::-;13980:3;14001:67;14065:2;14060:3;14001:67;:::i;:::-;13994:74;;14077:93;14166:3;14077:93;:::i;:::-;14195:2;14190:3;14186:12;14179:19;;13838:366;;;:::o;14210:::-;14352:3;14373:67;14437:2;14432:3;14373:67;:::i;:::-;14366:74;;14449:93;14538:3;14449:93;:::i;:::-;14567:2;14562:3;14558:12;14551:19;;14210:366;;;:::o;14582:::-;14724:3;14745:67;14809:2;14804:3;14745:67;:::i;:::-;14738:74;;14821:93;14910:3;14821:93;:::i;:::-;14939:2;14934:3;14930:12;14923:19;;14582:366;;;:::o;14954:398::-;15113:3;15134:83;15215:1;15210:3;15134:83;:::i;:::-;15127:90;;15226:93;15315:3;15226:93;:::i;:::-;15344:1;15339:3;15335:11;15328:18;;14954:398;;;:::o;15358:366::-;15500:3;15521:67;15585:2;15580:3;15521:67;:::i;:::-;15514:74;;15597:93;15686:3;15597:93;:::i;:::-;15715:2;15710:3;15706:12;15699:19;;15358:366;;;:::o;15730:::-;15872:3;15893:67;15957:2;15952:3;15893:67;:::i;:::-;15886:74;;15969:93;16058:3;15969:93;:::i;:::-;16087:2;16082:3;16078:12;16071:19;;15730:366;;;:::o;16102:::-;16244:3;16265:67;16329:2;16324:3;16265:67;:::i;:::-;16258:74;;16341:93;16430:3;16341:93;:::i;:::-;16459:2;16454:3;16450:12;16443:19;;16102:366;;;:::o;16474:::-;16616:3;16637:67;16701:2;16696:3;16637:67;:::i;:::-;16630:74;;16713:93;16802:3;16713:93;:::i;:::-;16831:2;16826:3;16822:12;16815:19;;16474:366;;;:::o;16846:::-;16988:3;17009:67;17073:2;17068:3;17009:67;:::i;:::-;17002:74;;17085:93;17174:3;17085:93;:::i;:::-;17203:2;17198:3;17194:12;17187:19;;16846:366;;;:::o;17218:::-;17360:3;17381:67;17445:2;17440:3;17381:67;:::i;:::-;17374:74;;17457:93;17546:3;17457:93;:::i;:::-;17575:2;17570:3;17566:12;17559:19;;17218:366;;;:::o;17590:::-;17732:3;17753:67;17817:2;17812:3;17753:67;:::i;:::-;17746:74;;17829:93;17918:3;17829:93;:::i;:::-;17947:2;17942:3;17938:12;17931:19;;17590:366;;;:::o;17962:::-;18104:3;18125:67;18189:2;18184:3;18125:67;:::i;:::-;18118:74;;18201:93;18290:3;18201:93;:::i;:::-;18319:2;18314:3;18310:12;18303:19;;17962:366;;;:::o;18334:::-;18476:3;18497:67;18561:2;18556:3;18497:67;:::i;:::-;18490:74;;18573:93;18662:3;18573:93;:::i;:::-;18691:2;18686:3;18682:12;18675:19;;18334:366;;;:::o;18706:::-;18848:3;18869:67;18933:2;18928:3;18869:67;:::i;:::-;18862:74;;18945:93;19034:3;18945:93;:::i;:::-;19063:2;19058:3;19054:12;19047:19;;18706:366;;;:::o;19078:::-;19220:3;19241:67;19305:2;19300:3;19241:67;:::i;:::-;19234:74;;19317:93;19406:3;19317:93;:::i;:::-;19435:2;19430:3;19426:12;19419:19;;19078:366;;;:::o;19520:527::-;19679:4;19674:3;19670:14;19766:4;19759:5;19755:16;19749:23;19785:63;19842:4;19837:3;19833:14;19819:12;19785:63;:::i;:::-;19694:164;19950:4;19943:5;19939:16;19933:23;19969:61;20024:4;20019:3;20015:14;20001:12;19969:61;:::i;:::-;19868:172;19648:399;19520:527;;:::o;20053:118::-;20140:24;20158:5;20140:24;:::i;:::-;20135:3;20128:37;20053:118;;:::o;20177:105::-;20252:23;20269:5;20252:23;:::i;:::-;20247:3;20240:36;20177:105;;:::o;20288:435::-;20468:3;20490:95;20581:3;20572:6;20490:95;:::i;:::-;20483:102;;20602:95;20693:3;20684:6;20602:95;:::i;:::-;20595:102;;20714:3;20707:10;;20288:435;;;;;:::o;20729:379::-;20913:3;20935:147;21078:3;20935:147;:::i;:::-;20928:154;;21099:3;21092:10;;20729:379;;;:::o;21114:222::-;21207:4;21245:2;21234:9;21230:18;21222:26;;21258:71;21326:1;21315:9;21311:17;21302:6;21258:71;:::i;:::-;21114:222;;;;:::o;21342:640::-;21537:4;21575:3;21564:9;21560:19;21552:27;;21589:71;21657:1;21646:9;21642:17;21633:6;21589:71;:::i;:::-;21670:72;21738:2;21727:9;21723:18;21714:6;21670:72;:::i;:::-;21752;21820:2;21809:9;21805:18;21796:6;21752:72;:::i;:::-;21871:9;21865:4;21861:20;21856:2;21845:9;21841:18;21834:48;21899:76;21970:4;21961:6;21899:76;:::i;:::-;21891:84;;21342:640;;;;;;;:::o;21988:210::-;22075:4;22113:2;22102:9;22098:18;22090:26;;22126:65;22188:1;22177:9;22173:17;22164:6;22126:65;:::i;:::-;21988:210;;;;:::o;22204:313::-;22317:4;22355:2;22344:9;22340:18;22332:26;;22404:9;22398:4;22394:20;22390:1;22379:9;22375:17;22368:47;22432:78;22505:4;22496:6;22432:78;:::i;:::-;22424:86;;22204:313;;;;:::o;22523:419::-;22689:4;22727:2;22716:9;22712:18;22704:26;;22776:9;22770:4;22766:20;22762:1;22751:9;22747:17;22740:47;22804:131;22930:4;22804:131;:::i;:::-;22796:139;;22523:419;;;:::o;22948:::-;23114:4;23152:2;23141:9;23137:18;23129:26;;23201:9;23195:4;23191:20;23187:1;23176:9;23172:17;23165:47;23229:131;23355:4;23229:131;:::i;:::-;23221:139;;22948:419;;;:::o;23373:::-;23539:4;23577:2;23566:9;23562:18;23554:26;;23626:9;23620:4;23616:20;23612:1;23601:9;23597:17;23590:47;23654:131;23780:4;23654:131;:::i;:::-;23646:139;;23373:419;;;:::o;23798:::-;23964:4;24002:2;23991:9;23987:18;23979:26;;24051:9;24045:4;24041:20;24037:1;24026:9;24022:17;24015:47;24079:131;24205:4;24079:131;:::i;:::-;24071:139;;23798:419;;;:::o;24223:::-;24389:4;24427:2;24416:9;24412:18;24404:26;;24476:9;24470:4;24466:20;24462:1;24451:9;24447:17;24440:47;24504:131;24630:4;24504:131;:::i;:::-;24496:139;;24223:419;;;:::o;24648:::-;24814:4;24852:2;24841:9;24837:18;24829:26;;24901:9;24895:4;24891:20;24887:1;24876:9;24872:17;24865:47;24929:131;25055:4;24929:131;:::i;:::-;24921:139;;24648:419;;;:::o;25073:::-;25239:4;25277:2;25266:9;25262:18;25254:26;;25326:9;25320:4;25316:20;25312:1;25301:9;25297:17;25290:47;25354:131;25480:4;25354:131;:::i;:::-;25346:139;;25073:419;;;:::o;25498:::-;25664:4;25702:2;25691:9;25687:18;25679:26;;25751:9;25745:4;25741:20;25737:1;25726:9;25722:17;25715:47;25779:131;25905:4;25779:131;:::i;:::-;25771:139;;25498:419;;;:::o;25923:::-;26089:4;26127:2;26116:9;26112:18;26104:26;;26176:9;26170:4;26166:20;26162:1;26151:9;26147:17;26140:47;26204:131;26330:4;26204:131;:::i;:::-;26196:139;;25923:419;;;:::o;26348:::-;26514:4;26552:2;26541:9;26537:18;26529:26;;26601:9;26595:4;26591:20;26587:1;26576:9;26572:17;26565:47;26629:131;26755:4;26629:131;:::i;:::-;26621:139;;26348:419;;;:::o;26773:::-;26939:4;26977:2;26966:9;26962:18;26954:26;;27026:9;27020:4;27016:20;27012:1;27001:9;26997:17;26990:47;27054:131;27180:4;27054:131;:::i;:::-;27046:139;;26773:419;;;:::o;27198:::-;27364:4;27402:2;27391:9;27387:18;27379:26;;27451:9;27445:4;27441:20;27437:1;27426:9;27422:17;27415:47;27479:131;27605:4;27479:131;:::i;:::-;27471:139;;27198:419;;;:::o;27623:::-;27789:4;27827:2;27816:9;27812:18;27804:26;;27876:9;27870:4;27866:20;27862:1;27851:9;27847:17;27840:47;27904:131;28030:4;27904:131;:::i;:::-;27896:139;;27623:419;;;:::o;28048:::-;28214:4;28252:2;28241:9;28237:18;28229:26;;28301:9;28295:4;28291:20;28287:1;28276:9;28272:17;28265:47;28329:131;28455:4;28329:131;:::i;:::-;28321:139;;28048:419;;;:::o;28473:::-;28639:4;28677:2;28666:9;28662:18;28654:26;;28726:9;28720:4;28716:20;28712:1;28701:9;28697:17;28690:47;28754:131;28880:4;28754:131;:::i;:::-;28746:139;;28473:419;;;:::o;28898:::-;29064:4;29102:2;29091:9;29087:18;29079:26;;29151:9;29145:4;29141:20;29137:1;29126:9;29122:17;29115:47;29179:131;29305:4;29179:131;:::i;:::-;29171:139;;28898:419;;;:::o;29323:::-;29489:4;29527:2;29516:9;29512:18;29504:26;;29576:9;29570:4;29566:20;29562:1;29551:9;29547:17;29540:47;29604:131;29730:4;29604:131;:::i;:::-;29596:139;;29323:419;;;:::o;29748:::-;29914:4;29952:2;29941:9;29937:18;29929:26;;30001:9;29995:4;29991:20;29987:1;29976:9;29972:17;29965:47;30029:131;30155:4;30029:131;:::i;:::-;30021:139;;29748:419;;;:::o;30173:::-;30339:4;30377:2;30366:9;30362:18;30354:26;;30426:9;30420:4;30416:20;30412:1;30401:9;30397:17;30390:47;30454:131;30580:4;30454:131;:::i;:::-;30446:139;;30173:419;;;:::o;30598:::-;30764:4;30802:2;30791:9;30787:18;30779:26;;30851:9;30845:4;30841:20;30837:1;30826:9;30822:17;30815:47;30879:131;31005:4;30879:131;:::i;:::-;30871:139;;30598:419;;;:::o;31023:::-;31189:4;31227:2;31216:9;31212:18;31204:26;;31276:9;31270:4;31266:20;31262:1;31251:9;31247:17;31240:47;31304:131;31430:4;31304:131;:::i;:::-;31296:139;;31023:419;;;:::o;31448:::-;31614:4;31652:2;31641:9;31637:18;31629:26;;31701:9;31695:4;31691:20;31687:1;31676:9;31672:17;31665:47;31729:131;31855:4;31729:131;:::i;:::-;31721:139;;31448:419;;;:::o;31873:::-;32039:4;32077:2;32066:9;32062:18;32054:26;;32126:9;32120:4;32116:20;32112:1;32101:9;32097:17;32090:47;32154:131;32280:4;32154:131;:::i;:::-;32146:139;;31873:419;;;:::o;32298:::-;32464:4;32502:2;32491:9;32487:18;32479:26;;32551:9;32545:4;32541:20;32537:1;32526:9;32522:17;32515:47;32579:131;32705:4;32579:131;:::i;:::-;32571:139;;32298:419;;;:::o;32723:::-;32889:4;32927:2;32916:9;32912:18;32904:26;;32976:9;32970:4;32966:20;32962:1;32951:9;32947:17;32940:47;33004:131;33130:4;33004:131;:::i;:::-;32996:139;;32723:419;;;:::o;33148:::-;33314:4;33352:2;33341:9;33337:18;33329:26;;33401:9;33395:4;33391:20;33387:1;33376:9;33372:17;33365:47;33429:131;33555:4;33429:131;:::i;:::-;33421:139;;33148:419;;;:::o;33573:::-;33739:4;33777:2;33766:9;33762:18;33754:26;;33826:9;33820:4;33816:20;33812:1;33801:9;33797:17;33790:47;33854:131;33980:4;33854:131;:::i;:::-;33846:139;;33573:419;;;:::o;33998:::-;34164:4;34202:2;34191:9;34187:18;34179:26;;34251:9;34245:4;34241:20;34237:1;34226:9;34222:17;34215:47;34279:131;34405:4;34279:131;:::i;:::-;34271:139;;33998:419;;;:::o;34423:346::-;34578:4;34616:2;34605:9;34601:18;34593:26;;34629:133;34759:1;34748:9;34744:17;34735:6;34629:133;:::i;:::-;34423:346;;;;:::o;34775:222::-;34868:4;34906:2;34895:9;34891:18;34883:26;;34919:71;34987:1;34976:9;34972:17;34963:6;34919:71;:::i;:::-;34775:222;;;;:::o;35003:129::-;35037:6;35064:20;;:::i;:::-;35054:30;;35093:33;35121:4;35113:6;35093:33;:::i;:::-;35003:129;;;:::o;35138:75::-;35171:6;35204:2;35198:9;35188:19;;35138:75;:::o;35219:307::-;35280:4;35370:18;35362:6;35359:30;35356:56;;;35392:18;;:::i;:::-;35356:56;35430:29;35452:6;35430:29;:::i;:::-;35422:37;;35514:4;35508;35504:15;35496:23;;35219:307;;;:::o;35532:308::-;35594:4;35684:18;35676:6;35673:30;35670:56;;;35706:18;;:::i;:::-;35670:56;35744:29;35766:6;35744:29;:::i;:::-;35736:37;;35828:4;35822;35818:15;35810:23;;35532:308;;;:::o;35846:98::-;35897:6;35931:5;35925:12;35915:22;;35846:98;;;:::o;35950:99::-;36002:6;36036:5;36030:12;36020:22;;35950:99;;;:::o;36055:168::-;36138:11;36172:6;36167:3;36160:19;36212:4;36207:3;36203:14;36188:29;;36055:168;;;;:::o;36229:147::-;36330:11;36367:3;36352:18;;36229:147;;;;:::o;36382:169::-;36466:11;36500:6;36495:3;36488:19;36540:4;36535:3;36531:14;36516:29;;36382:169;;;;:::o;36557:148::-;36659:11;36696:3;36681:18;;36557:148;;;;:::o;36711:273::-;36751:3;36770:20;36788:1;36770:20;:::i;:::-;36765:25;;36804:20;36822:1;36804:20;:::i;:::-;36799:25;;36926:1;36890:34;36886:42;36883:1;36880:49;36877:75;;;36932:18;;:::i;:::-;36877:75;36976:1;36973;36969:9;36962:16;;36711:273;;;;:::o;36990:305::-;37030:3;37049:20;37067:1;37049:20;:::i;:::-;37044:25;;37083:20;37101:1;37083:20;:::i;:::-;37078:25;;37237:1;37169:66;37165:74;37162:1;37159:81;37156:107;;;37243:18;;:::i;:::-;37156:107;37287:1;37284;37280:9;37273:16;;36990:305;;;;:::o;37301:185::-;37341:1;37358:20;37376:1;37358:20;:::i;:::-;37353:25;;37392:20;37410:1;37392:20;:::i;:::-;37387:25;;37431:1;37421:35;;37436:18;;:::i;:::-;37421:35;37478:1;37475;37471:9;37466:14;;37301:185;;;;:::o;37492:348::-;37532:7;37555:20;37573:1;37555:20;:::i;:::-;37550:25;;37589:20;37607:1;37589:20;:::i;:::-;37584:25;;37777:1;37709:66;37705:74;37702:1;37699:81;37694:1;37687:9;37680:17;37676:105;37673:131;;;37784:18;;:::i;:::-;37673:131;37832:1;37829;37825:9;37814:20;;37492:348;;;;:::o;37846:191::-;37886:4;37906:20;37924:1;37906:20;:::i;:::-;37901:25;;37940:20;37958:1;37940:20;:::i;:::-;37935:25;;37979:1;37976;37973:8;37970:34;;;37984:18;;:::i;:::-;37970:34;38029:1;38026;38022:9;38014:17;;37846:191;;;;:::o;38043:::-;38083:4;38103:20;38121:1;38103:20;:::i;:::-;38098:25;;38137:20;38155:1;38137:20;:::i;:::-;38132:25;;38176:1;38173;38170:8;38167:34;;;38181:18;;:::i;:::-;38167:34;38226:1;38223;38219:9;38211:17;;38043:191;;;;:::o;38240:96::-;38277:7;38306:24;38324:5;38306:24;:::i;:::-;38295:35;;38240:96;;;:::o;38342:90::-;38376:7;38419:5;38412:13;38405:21;38394:32;;38342:90;;;:::o;38438:149::-;38474:7;38514:66;38507:5;38503:78;38492:89;;38438:149;;;:::o;38593:118::-;38630:7;38670:34;38663:5;38659:46;38648:57;;38593:118;;;:::o;38717:126::-;38754:7;38794:42;38787:5;38783:54;38772:65;;38717:126;;;:::o;38849:77::-;38886:7;38915:5;38904:16;;38849:77;;;:::o;38932:101::-;38968:7;39008:18;39001:5;38997:30;38986:41;;38932:101;;;:::o;39039:154::-;39123:6;39118:3;39113;39100:30;39185:1;39176:6;39171:3;39167:16;39160:27;39039:154;;;:::o;39199:307::-;39267:1;39277:113;39291:6;39288:1;39285:13;39277:113;;;39376:1;39371:3;39367:11;39361:18;39357:1;39352:3;39348:11;39341:39;39313:2;39310:1;39306:10;39301:15;;39277:113;;;39408:6;39405:1;39402:13;39399:101;;;39488:1;39479:6;39474:3;39470:16;39463:27;39399:101;39248:258;39199:307;;;:::o;39512:171::-;39551:3;39574:24;39592:5;39574:24;:::i;:::-;39565:33;;39620:4;39613:5;39610:15;39607:41;;;39628:18;;:::i;:::-;39607:41;39675:1;39668:5;39664:13;39657:20;;39512:171;;;:::o;39689:320::-;39733:6;39770:1;39764:4;39760:12;39750:22;;39817:1;39811:4;39807:12;39838:18;39828:81;;39894:4;39886:6;39882:17;39872:27;;39828:81;39956:2;39948:6;39945:14;39925:18;39922:38;39919:84;;;39975:18;;:::i;:::-;39919:84;39740:269;39689:320;;;:::o;40015:281::-;40098:27;40120:4;40098:27;:::i;:::-;40090:6;40086:40;40228:6;40216:10;40213:22;40192:18;40180:10;40177:34;40174:62;40171:88;;;40239:18;;:::i;:::-;40171:88;40279:10;40275:2;40268:22;40058:238;40015:281;;:::o;40302:233::-;40341:3;40364:24;40382:5;40364:24;:::i;:::-;40355:33;;40410:66;40403:5;40400:77;40397:103;;;40480:18;;:::i;:::-;40397:103;40527:1;40520:5;40516:13;40509:20;;40302:233;;;:::o;40541:176::-;40573:1;40590:20;40608:1;40590:20;:::i;:::-;40585:25;;40624:20;40642:1;40624:20;:::i;:::-;40619:25;;40663:1;40653:35;;40668:18;;:::i;:::-;40653:35;40709:1;40706;40702:9;40697:14;;40541:176;;;;:::o;40723:180::-;40771:77;40768:1;40761:88;40868:4;40865:1;40858:15;40892:4;40889:1;40882:15;40909:180;40957:77;40954:1;40947:88;41054:4;41051:1;41044:15;41078:4;41075:1;41068:15;41095:180;41143:77;41140:1;41133:88;41240:4;41237:1;41230:15;41264:4;41261:1;41254:15;41281:180;41329:77;41326:1;41319:88;41426:4;41423:1;41416:15;41450:4;41447:1;41440:15;41467:180;41515:77;41512:1;41505:88;41612:4;41609:1;41602:15;41636:4;41633:1;41626:15;41653:117;41762:1;41759;41752:12;41776:117;41885:1;41882;41875:12;41899:117;42008:1;42005;41998:12;42022:117;42131:1;42128;42121:12;42145:102;42186:6;42237:2;42233:7;42228:2;42221:5;42217:14;42213:28;42203:38;;42145:102;;;:::o;42253:221::-;42393:34;42389:1;42381:6;42377:14;42370:58;42462:4;42457:2;42449:6;42445:15;42438:29;42253:221;:::o;42480:225::-;42620:34;42616:1;42608:6;42604:14;42597:58;42689:8;42684:2;42676:6;42672:15;42665:33;42480:225;:::o;42711:229::-;42851:34;42847:1;42839:6;42835:14;42828:58;42920:12;42915:2;42907:6;42903:15;42896:37;42711:229;:::o;42946:222::-;43086:34;43082:1;43074:6;43070:14;43063:58;43155:5;43150:2;43142:6;43138:15;43131:30;42946:222;:::o;43174:224::-;43314:34;43310:1;43302:6;43298:14;43291:58;43383:7;43378:2;43370:6;43366:15;43359:32;43174:224;:::o;43404:236::-;43544:34;43540:1;43532:6;43528:14;43521:58;43613:19;43608:2;43600:6;43596:15;43589:44;43404:236;:::o;43646:168::-;43786:20;43782:1;43774:6;43770:14;43763:44;43646:168;:::o;43820:180::-;43960:32;43956:1;43948:6;43944:14;43937:56;43820:180;:::o;44006:244::-;44146:34;44142:1;44134:6;44130:14;44123:58;44215:27;44210:2;44202:6;44198:15;44191:52;44006:244;:::o;44256:230::-;44396:34;44392:1;44384:6;44380:14;44373:58;44465:13;44460:2;44452:6;44448:15;44441:38;44256:230;:::o;44492:168::-;44632:20;44628:1;44620:6;44616:14;44609:44;44492:168;:::o;44666:225::-;44806:34;44802:1;44794:6;44790:14;44783:58;44875:8;44870:2;44862:6;44858:15;44851:33;44666:225;:::o;44897:182::-;45037:34;45033:1;45025:6;45021:14;45014:58;44897:182;:::o;45085:234::-;45225:34;45221:1;45213:6;45209:14;45202:58;45294:17;45289:2;45281:6;45277:15;45270:42;45085:234;:::o;45325:176::-;45465:28;45461:1;45453:6;45449:14;45442:52;45325:176;:::o;45507:237::-;45647:34;45643:1;45635:6;45631:14;45624:58;45716:20;45711:2;45703:6;45699:15;45692:45;45507:237;:::o;45750:221::-;45890:34;45886:1;45878:6;45874:14;45867:58;45959:4;45954:2;45946:6;45942:15;45935:29;45750:221;:::o;45977:114::-;;:::o;46097:166::-;46237:18;46233:1;46225:6;46221:14;46214:42;46097:166;:::o;46269:238::-;46409:34;46405:1;46397:6;46393:14;46386:58;46478:21;46473:2;46465:6;46461:15;46454:46;46269:238;:::o;46513:172::-;46653:24;46649:1;46641:6;46637:14;46630:48;46513:172;:::o;46691:179::-;46831:31;46827:1;46819:6;46815:14;46808:55;46691:179;:::o;46876:220::-;47016:34;47012:1;47004:6;47000:14;46993:58;47085:3;47080:2;47072:6;47068:15;47061:28;46876:220;:::o;47102:172::-;47242:24;47238:1;47230:6;47226:14;47219:48;47102:172;:::o;47280:233::-;47420:34;47416:1;47408:6;47404:14;47397:58;47489:16;47484:2;47476:6;47472:15;47465:41;47280:233;:::o;47519:181::-;47659:33;47655:1;47647:6;47643:14;47636:57;47519:181;:::o;47706:234::-;47846:34;47842:1;47834:6;47830:14;47823:58;47915:17;47910:2;47902:6;47898:15;47891:42;47706:234;:::o;47946:232::-;48086:34;48082:1;48074:6;48070:14;48063:58;48155:15;48150:2;48142:6;48138:15;48131:40;47946:232;:::o;48184:221::-;48324:34;48320:1;48312:6;48308:14;48301:58;48393:4;48388:2;48380:6;48376:15;48369:29;48184:221;:::o;48411:122::-;48484:24;48502:5;48484:24;:::i;:::-;48477:5;48474:35;48464:63;;48523:1;48520;48513:12;48464:63;48411:122;:::o;48539:116::-;48609:21;48624:5;48609:21;:::i;:::-;48602:5;48599:32;48589:60;;48645:1;48642;48635:12;48589:60;48539:116;:::o;48661:120::-;48733:23;48750:5;48733:23;:::i;:::-;48726:5;48723:34;48713:62;;48771:1;48768;48761:12;48713:62;48661:120;:::o;48787:122::-;48860:24;48878:5;48860:24;:::i;:::-;48853:5;48850:35;48840:63;;48899:1;48896;48889:12;48840:63;48787:122;:::o

Swarm Source

ipfs://2f8aa975e272c6ac2ab2ee2ff2be31f691a4a7206949e19b1b5738ec3593ff6d

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.