ETH Price: $3,107.09 (+1.03%)
Gas: 8 Gwei

Token

InvisibleBear (InvisibleBear)
 

Overview

Max Total Supply

504 InvisibleBear

Holders

472

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
mirrorcult.eth
Balance
1 InvisibleBear
0x409f6883db7cd887bcf783c9628b2aa01dcf4591
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
InvisibleBear

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-19
*/

/**
 *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 = 1;

  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-1;
  } 
  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 InvisibleBear is Ownable, ERC721A, ReentrancyGuard {
    using Strings for uint256;


  uint256 public MAX_PER_Transtion = 10; // maximam amount that user can mint per transaction
  uint256 public MAX_PER_Address = 10; // maximam amount that user can mint

  uint256 public  PRICE = 0.06 ether; //0.06 during public sale 

  uint256 private constant TotalCollectionSize_ = 10000; // total number of nfts
  uint256 private constant MaxMintPerBatch_ = 10; //max mint per trx
 
  
  bool public _revelNFT = false;


  string private _baseTokenURI;
  string private _uriBeforeRevel;

  uint public status = 0; //0 - sale pause, 1 - free sale, 2- public sale

  constructor() ERC721A("InvisibleBear","InvisibleBear", MaxMintPerBatch_, TotalCollectionSize_) {
    _uriBeforeRevel = "https://gateway.pinata.cloud/ipfs/QmRMRwjq1mX8j9M3if51hWu56A83gPoGWNaFKXFfkKZchJ/";
    _baseTokenURI="https://gateway.pinata.cloud/ipfs/QmQYdDojBRbWgmcxEVKWhRs61v63sY2B2S4BWiuMQsSVx3/";
  }

  modifier callerIsUser() {
    require(tx.origin == msg.sender, "The caller is another contract");
    _;
  }
  
function mint(uint256 quantity) external payable callerIsUser {
    if(status == 1){
    require(totalSupply() < 500, "Free NFTs have been minted.");
    require(quantity == 1, "Only one free mint");
    require(numberMinted(msg.sender)< 1  , "Already minted free" );
    _safeMint(msg.sender, 1);
    } else{
    require(status == 2 , "Public Sale is not Active");
    require(quantity > 0,"Mint Quantity should be more than 0");
    require(totalSupply() + quantity <= collectionSize, "Reached max supply");
    require(numberMinted(msg.sender) + quantity <= MAX_PER_Address  , "Max can hold 10 NFTs" );
    require(quantity <= MAX_PER_Transtion,"Max can mint 10 per transaction");
    require(msg.value >= PRICE * quantity, "Not enough ETH in your wallet");
    _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(),".json"))
        : "";
    } else{
      return _uriBeforeRevel;
    }
  }
  
  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 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;
      if(s==1){
          PRICE=0 ether;
      }
      else if(s==2){
          PRICE=0.06 ether;
      }
      else{
          PRICE=0.06 ether;

      }
  }

  function getStatus()public view returns(uint){
      return status;
  }
  
}

library Base64 {
    bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    /// @notice Encodes some bytes to the base64 representation
    function encode(bytes memory data) internal pure returns (string memory) {
        uint256 len = data.length;
        if (len == 0) return "";

        // multiply by 4/3 rounded up
        uint256 encodedLen = 4 * ((len + 2) / 3);

        // Add some extra buffer at the end
        bytes memory result = new bytes(encodedLen + 32);

        bytes memory table = TABLE;

        assembly {
            let tablePtr := add(table, 1)
            let resultPtr := add(result, 32)

            for {
                let i := 0
            } lt(i, len) {

            } {
                i := add(i, 3)
                let input := and(mload(add(data, i)), 0xffffff)

                let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))
                out := shl(224, out)

                mstore(resultPtr, out)

                resultPtr := add(resultPtr, 4)
            }

            switch mod(len, 3)
            case 1 {
                mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
            }
            case 2 {
                mstore(sub(resultPtr, 1), shl(248, 0x3d))
            }

            mstore(result, encodedLen)
        }

        return string(result);
    }
}

Contract Security Audit

Contract ABI

[{"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":[{"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":"getStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":[{"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":"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"}]

60c0604052600180556000600855600a8055600a600b5566d529ae9e860000600c556000600d60006101000a81548160ff02191690831515021790555060006010553480156200004e57600080fd5b506040518060400160405280600d81526020017f496e76697369626c6542656172000000000000000000000000000000000000008152506040518060400160405280600d81526020017f496e76697369626c654265617200000000000000000000000000000000000000815250600a612710620000e0620000d46200022460201b60201c565b6200022c60201b60201c565b6000811162000126576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200011d9062000410565b60405180910390fd5b600082116200016c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200016390620003ee565b60405180910390fd5b836002908051906020019062000184929190620002f0565b5082600390805190602001906200019d929190620002f0565b508160a0818152505080608081815250505050505060016009819055506040518060800160405280605181526020016200564360519139600f9080519060200190620001eb929190620002f0565b50604051806080016040528060518152602001620055f260519139600e90805190602001906200021d929190620002f0565b5062000546565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002fe9062000443565b90600052602060002090601f0160209004810192826200032257600085556200036e565b82601f106200033d57805160ff19168380011785556200036e565b828001600101855582156200036e579182015b828111156200036d57825182559160200191906001019062000350565b5b5090506200037d919062000381565b5090565b5b808211156200039c57600081600090555060010162000382565b5090565b6000620003af60278362000432565b9150620003bc82620004a8565b604082019050919050565b6000620003d6602e8362000432565b9150620003e382620004f7565b604082019050919050565b600060208201905081810360008301526200040981620003a0565b9050919050565b600060208201905081810360008301526200042b81620003c7565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200045c57607f821691505b6020821081141562000473576200047262000479565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a0516150786200057a6000396000818161265e015281816126870152612e300152600061162c01526150786000f3fe60806040526004361061021a5760003560e01c806369ba1a7511610123578063ac446002116100ab578063d04950a11161006f578063d04950a1146107ae578063d7224ba0146107d9578063dc33e68114610804578063e985e9c514610841578063f2fde38b1461087e5761021a565b8063ac446002146106f1578063af7b26e914610708578063b88d4fde14610731578063bd0a84391461075a578063c87b56dd146107715761021a565b80638da5cb5b116100f25780638da5cb5b146106195780639231ab2a1461064457806395d89b4114610681578063a0712d68146106ac578063a22cb465146106c85761021a565b806369ba1a751461057157806370a082311461059a578063715018a6146105d75780638d859f3e146105ee5761021a565b80632f745c59116101a65780634f6ccce7116101755780634f6ccce71461047a57806355f804b3146104b75780635c37809d146104e057806362c6f7b9146105095780636352211e146105345761021a565b80632f745c59146103c05780633fd17366146103fd57806342842e0e146104265780634e69d5601461044f5761021a565b8063095ea7b3116101ed578063095ea7b3146102ed57806318160ddd14610316578063200d2ed21461034157806323b872dd1461036c5780632f2ffc57146103955761021a565b80630199e3471461021f57806301ffc9a71461024857806306fdde0314610285578063081812fc146102b0575b600080fd5b34801561022b57600080fd5b50610246600480360381019061024191906136ed565b6108a7565b005b34801561025457600080fd5b5061026f600480360381019061026a919061364a565b61092d565b60405161027c9190613dab565b60405180910390f35b34801561029157600080fd5b5061029a610a77565b6040516102a79190613dc6565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d291906136ed565b610b09565b6040516102e49190613d44565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f919061360a565b610b8e565b005b34801561032257600080fd5b5061032b610ca7565b6040516103389190614223565b60405180910390f35b34801561034d57600080fd5b50610356610cbc565b6040516103639190614223565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e91906134f4565b610cc2565b005b3480156103a157600080fd5b506103aa610cd2565b6040516103b79190614223565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e2919061360a565b610cd8565b6040516103f49190614223565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f91906136ed565b610ed6565b005b34801561043257600080fd5b5061044d600480360381019061044891906134f4565b610f5c565b005b34801561045b57600080fd5b50610464610f7c565b6040516104719190614223565b60405180910390f35b34801561048657600080fd5b506104a1600480360381019061049c91906136ed565b610f86565b6040516104ae9190614223565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d991906136a4565b610fd9565b005b3480156104ec57600080fd5b50610507600480360381019061050291906136a4565b61106f565b005b34801561051557600080fd5b5061051e611105565b60405161052b9190613dab565b60405180910390f35b34801561054057600080fd5b5061055b600480360381019061055691906136ed565b611118565b6040516105689190613d44565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906136ed565b61112e565b005b3480156105a657600080fd5b506105c160048036038101906105bc9190613487565b6111f6565b6040516105ce9190614223565b60405180910390f35b3480156105e357600080fd5b506105ec6112df565b005b3480156105fa57600080fd5b50610603611367565b6040516106109190614223565b60405180910390f35b34801561062557600080fd5b5061062e61136d565b60405161063b9190613d44565b60405180910390f35b34801561065057600080fd5b5061066b600480360381019061066691906136ed565b611396565b6040516106789190614208565b60405180910390f35b34801561068d57600080fd5b506106966113ae565b6040516106a39190613dc6565b60405180910390f35b6106c660048036038101906106c191906136ed565b611440565b005b3480156106d457600080fd5b506106ef60048036038101906106ea91906135ca565b61179a565b005b3480156106fd57600080fd5b5061070661191b565b005b34801561071457600080fd5b5061072f600480360381019061072a91906136ed565b611a9c565b005b34801561073d57600080fd5b5061075860048036038101906107539190613547565b611b22565b005b34801561076657600080fd5b5061076f611b7e565b005b34801561077d57600080fd5b50610798600480360381019061079391906136ed565b611c26565b6040516107a59190613dc6565b60405180910390f35b3480156107ba57600080fd5b506107c3611d75565b6040516107d09190614223565b60405180910390f35b3480156107e557600080fd5b506107ee611d7b565b6040516107fb9190614223565b60405180910390f35b34801561081057600080fd5b5061082b60048036038101906108269190613487565b611d81565b6040516108389190614223565b60405180910390f35b34801561084d57600080fd5b50610868600480360381019061086391906134b4565b611d93565b6040516108759190613dab565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190613487565b611e27565b005b6108af611f1f565b73ffffffffffffffffffffffffffffffffffffffff166108cd61136d565b73ffffffffffffffffffffffffffffffffffffffff1614610923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091a90614048565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109f857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a6057507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a705750610a6f82611f27565b5b9050919050565b606060028054610a86906145b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab2906145b2565b8015610aff5780601f10610ad457610100808354040283529160200191610aff565b820191906000526020600020905b815481529060010190602001808311610ae257829003601f168201915b5050505050905090565b6000610b1482611f91565b610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a906141c8565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b9982611118565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c01906140c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c29611f1f565b73ffffffffffffffffffffffffffffffffffffffff161480610c585750610c5781610c52611f1f565b611d93565b5b610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e90613f68565b60405180910390fd5b610ca2838383611f9f565b505050565b600060018054610cb7919061446e565b905090565b60105481565b610ccd838383612051565b505050565b600b5481565b6000610ce3836111f6565b8210610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90613de8565b60405180910390fd5b6000610d2e610ca7565b905060008060005b83811015610e94576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e2857806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e805786841415610e71578195505050505050610ed0565b8380610e7c90614615565b9450505b508080610e8c90614615565b915050610d36565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790614168565b60405180910390fd5b92915050565b610ede611f1f565b73ffffffffffffffffffffffffffffffffffffffff16610efc61136d565b73ffffffffffffffffffffffffffffffffffffffff1614610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990614048565b60405180910390fd5b80600c8190555050565b610f7783838360405180602001604052806000815250611b22565b505050565b6000601054905090565b6000610f90610ca7565b8210610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613ea8565b60405180910390fd5b819050919050565b610fe1611f1f565b73ffffffffffffffffffffffffffffffffffffffff16610fff61136d565b73ffffffffffffffffffffffffffffffffffffffff1614611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c90614048565b60405180910390fd5b80600e908051906020019061106b929190613261565b5050565b611077611f1f565b73ffffffffffffffffffffffffffffffffffffffff1661109561136d565b73ffffffffffffffffffffffffffffffffffffffff16146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290614048565b60405180910390fd5b80600f9080519060200190611101929190613261565b5050565b600d60009054906101000a900460ff1681565b60006111238261260a565b600001519050919050565b611136611f1f565b73ffffffffffffffffffffffffffffffffffffffff1661115461136d565b73ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190614048565b60405180910390fd5b8060108190555060018114156111c7576000600c819055506111f3565b60028114156111e35766d529ae9e860000600c819055506111f2565b66d529ae9e860000600c819055505b5b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613fa8565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6112e7611f1f565b73ffffffffffffffffffffffffffffffffffffffff1661130561136d565b73ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290614048565b60405180910390fd5b611365600061280d565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61139e6132e7565b6113a78261260a565b9050919050565b6060600380546113bd906145b2565b80601f01602080910402602001604051908101604052809291908181526020018280546113e9906145b2565b80156114365780601f1061140b57610100808354040283529160200191611436565b820191906000526020600020905b81548152906001019060200180831161141957829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590613f48565b60405180910390fd5b600160105414156115a2576101f46114c4610ca7565b10611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb90613e48565b60405180910390fd5b60018114611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e90613f28565b60405180910390fd5b600161155233611d81565b10611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990613fc8565b60405180910390fd5b61159d3360016128d1565b611797565b6002601054146115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90614028565b60405180910390fd5b6000811161162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190613e88565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081611654610ca7565b61165e9190614359565b111561169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613ec8565b60405180910390fd5b600b54816116ac33611d81565b6116b69190614359565b11156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613f88565b60405180910390fd5b600a5481111561173c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173390613e08565b60405180910390fd5b80600c5461174a91906143e0565b34101561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613fe8565b60405180910390fd5b61179633826128d1565b5b50565b6117a2611f1f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180790614088565b60405180910390fd5b806007600061181d611f1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118ca611f1f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161190f9190613dab565b60405180910390a35050565b611923611f1f565b73ffffffffffffffffffffffffffffffffffffffff1661194161136d565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e90614048565b60405180910390fd5b600260095414156119dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d490614188565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611a0b90613d2f565b60006040518083038185875af1925050503d8060008114611a48576040519150601f19603f3d011682016040523d82523d6000602084013e611a4d565b606091505b5050905080611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a88906140e8565b60405180910390fd5b506001600981905550565b611aa4611f1f565b73ffffffffffffffffffffffffffffffffffffffff16611ac261136d565b73ffffffffffffffffffffffffffffffffffffffff1614611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f90614048565b60405180910390fd5b80600a8190555050565b611b2d848484612051565b611b39848484846128ef565b611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f90614108565b60405180910390fd5b50505050565b611b86611f1f565b73ffffffffffffffffffffffffffffffffffffffff16611ba461136d565b73ffffffffffffffffffffffffffffffffffffffff1614611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf190614048565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b6060611c3182611f91565b611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790614068565b60405180910390fd5b600d60009054906101000a900460ff1615611ce2576000611c8f612a86565b90506000815111611caf5760405180602001604052806000815250611cda565b80611cb984612b18565b604051602001611cca929190613d00565b6040516020818303038152906040525b915050611d70565b600f8054611cef906145b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1b906145b2565b8015611d685780601f10611d3d57610100808354040283529160200191611d68565b820191906000526020600020905b815481529060010190602001808311611d4b57829003601f168201915b505050505090505b919050565b600a5481565b60085481565b6000611d8c82612c79565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e2f611f1f565b73ffffffffffffffffffffffffffffffffffffffff16611e4d61136d565b73ffffffffffffffffffffffffffffffffffffffff1614611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90614048565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90613e28565b60405180910390fd5b611f1c8161280d565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061205c8261260a565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612083611f1f565b73ffffffffffffffffffffffffffffffffffffffff1614806120df57506120a8611f1f565b73ffffffffffffffffffffffffffffffffffffffff166120c784610b09565b73ffffffffffffffffffffffffffffffffffffffff16145b806120fb57506120fa82600001516120f5611f1f565b611d93565b5b90508061213d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612134906140a8565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a690614008565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561221f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221690613ee8565b60405180910390fd5b61222c8585856001612d62565b61223c6000848460000151611f9f565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166122aa919061443a565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661234e9190614313565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846124549190614359565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561259a576124ca81611f91565b15612599576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126028686866001612d68565b505050505050565b6126126132e7565b61261b82611f91565b61265a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265190613e68565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106126be5760017f0000000000000000000000000000000000000000000000000000000000000000846126b1919061446e565b6126bb9190614359565b90505b60008390505b8181106127cc576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146127b857809350505050612808565b5080806127c490614588565b9150506126c4565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff906141a8565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128eb828260405180602001604052806000815250612d6e565b5050565b60006129108473ffffffffffffffffffffffffffffffffffffffff1661324e565b15612a79578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612939611f1f565b8786866040518563ffffffff1660e01b815260040161295b9493929190613d5f565b602060405180830381600087803b15801561297557600080fd5b505af19250505080156129a657506040513d601f19601f820116820180604052508101906129a39190613677565b60015b612a29573d80600081146129d6576040519150601f19603f3d011682016040523d82523d6000602084013e6129db565b606091505b50600081511415612a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1890614108565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612a7e565b600190505b949350505050565b6060600e8054612a95906145b2565b80601f0160208091040260200160405190810160405280929190818152602001828054612ac1906145b2565b8015612b0e5780601f10612ae357610100808354040283529160200191612b0e565b820191906000526020600020905b815481529060010190602001808311612af157829003601f168201915b5050505050905090565b60606000821415612b60576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c74565b600082905060005b60008214612b92578080612b7b90614615565b915050600a82612b8b91906143af565b9150612b68565b60008167ffffffffffffffff811115612bae57612bad61474b565b5b6040519080825280601f01601f191660200182016040528015612be05781602001600182028036833780820191505090505b5090505b60008514612c6d57600182612bf9919061446e565b9150600a85612c08919061465e565b6030612c149190614359565b60f81b818381518110612c2a57612c2961471c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c6691906143af565b9450612be4565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce190613f08565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddc90614148565b60405180910390fd5b612dee81611f91565b15612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2590614128565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e88906141e8565b60405180910390fd5b612e9e6000858386612d62565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612f9b9190614313565b6fffffffffffffffffffffffffffffffff168152602001858360200151612fc29190614313565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561323157818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46131d160008884886128ef565b613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790614108565b60405180910390fd5b818061321b90614615565b925050808061322990614615565b915050613160565b50806001819055506132466000878588612d68565b505050505050565b600080823b905060008111915050919050565b82805461326d906145b2565b90600052602060002090601f01602090048101928261328f57600085556132d6565b82601f106132a857805160ff19168380011785556132d6565b828001600101855582156132d6579182015b828111156132d55782518255916020019190600101906132ba565b5b5090506132e39190613321565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561333a576000816000905550600101613322565b5090565b600061335161334c84614263565b61423e565b90508281526020810184848401111561336d5761336c61477f565b5b613378848285614546565b509392505050565b600061339361338e84614294565b61423e565b9050828152602081018484840111156133af576133ae61477f565b5b6133ba848285614546565b509392505050565b6000813590506133d181614fe6565b92915050565b6000813590506133e681614ffd565b92915050565b6000813590506133fb81615014565b92915050565b60008151905061341081615014565b92915050565b600082601f83011261342b5761342a61477a565b5b813561343b84826020860161333e565b91505092915050565b600082601f8301126134595761345861477a565b5b8135613469848260208601613380565b91505092915050565b6000813590506134818161502b565b92915050565b60006020828403121561349d5761349c614789565b5b60006134ab848285016133c2565b91505092915050565b600080604083850312156134cb576134ca614789565b5b60006134d9858286016133c2565b92505060206134ea858286016133c2565b9150509250929050565b60008060006060848603121561350d5761350c614789565b5b600061351b868287016133c2565b935050602061352c868287016133c2565b925050604061353d86828701613472565b9150509250925092565b6000806000806080858703121561356157613560614789565b5b600061356f878288016133c2565b9450506020613580878288016133c2565b935050604061359187828801613472565b925050606085013567ffffffffffffffff8111156135b2576135b1614784565b5b6135be87828801613416565b91505092959194509250565b600080604083850312156135e1576135e0614789565b5b60006135ef858286016133c2565b9250506020613600858286016133d7565b9150509250929050565b6000806040838503121561362157613620614789565b5b600061362f858286016133c2565b925050602061364085828601613472565b9150509250929050565b6000602082840312156136605761365f614789565b5b600061366e848285016133ec565b91505092915050565b60006020828403121561368d5761368c614789565b5b600061369b84828501613401565b91505092915050565b6000602082840312156136ba576136b9614789565b5b600082013567ffffffffffffffff8111156136d8576136d7614784565b5b6136e484828501613444565b91505092915050565b60006020828403121561370357613702614789565b5b600061371184828501613472565b91505092915050565b613723816144a2565b82525050565b613732816144a2565b82525050565b613741816144b4565b82525050565b6000613752826142c5565b61375c81856142db565b935061376c818560208601614555565b6137758161478e565b840191505092915050565b600061378b826142d0565b61379581856142f7565b93506137a5818560208601614555565b6137ae8161478e565b840191505092915050565b60006137c4826142d0565b6137ce8185614308565b93506137de818560208601614555565b80840191505092915050565b60006137f76022836142f7565b91506138028261479f565b604082019050919050565b600061381a601f836142f7565b9150613825826147ee565b602082019050919050565b600061383d6026836142f7565b915061384882614817565b604082019050919050565b6000613860601b836142f7565b915061386b82614866565b602082019050919050565b6000613883602a836142f7565b915061388e8261488f565b604082019050919050565b60006138a66023836142f7565b91506138b1826148de565b604082019050919050565b60006138c96023836142f7565b91506138d48261492d565b604082019050919050565b60006138ec6012836142f7565b91506138f78261497c565b602082019050919050565b600061390f6025836142f7565b915061391a826149a5565b604082019050919050565b60006139326031836142f7565b915061393d826149f4565b604082019050919050565b60006139556012836142f7565b915061396082614a43565b602082019050919050565b6000613978601e836142f7565b915061398382614a6c565b602082019050919050565b600061399b6039836142f7565b91506139a682614a95565b604082019050919050565b60006139be6014836142f7565b91506139c982614ae4565b602082019050919050565b60006139e1602b836142f7565b91506139ec82614b0d565b604082019050919050565b6000613a046013836142f7565b9150613a0f82614b5c565b602082019050919050565b6000613a27601d836142f7565b9150613a3282614b85565b602082019050919050565b6000613a4a6026836142f7565b9150613a5582614bae565b604082019050919050565b6000613a6d600583614308565b9150613a7882614bfd565b600582019050919050565b6000613a906019836142f7565b9150613a9b82614c26565b602082019050919050565b6000613ab36020836142f7565b9150613abe82614c4f565b602082019050919050565b6000613ad6602f836142f7565b9150613ae182614c78565b604082019050919050565b6000613af9601a836142f7565b9150613b0482614cc7565b602082019050919050565b6000613b1c6032836142f7565b9150613b2782614cf0565b604082019050919050565b6000613b3f6022836142f7565b9150613b4a82614d3f565b604082019050919050565b6000613b626000836142ec565b9150613b6d82614d8e565b600082019050919050565b6000613b856010836142f7565b9150613b9082614d91565b602082019050919050565b6000613ba86033836142f7565b9150613bb382614dba565b604082019050919050565b6000613bcb601d836142f7565b9150613bd682614e09565b602082019050919050565b6000613bee6021836142f7565b9150613bf982614e32565b604082019050919050565b6000613c11602e836142f7565b9150613c1c82614e81565b604082019050919050565b6000613c34601f836142f7565b9150613c3f82614ed0565b602082019050919050565b6000613c57602f836142f7565b9150613c6282614ef9565b604082019050919050565b6000613c7a602d836142f7565b9150613c8582614f48565b604082019050919050565b6000613c9d6022836142f7565b9150613ca882614f97565b604082019050919050565b604082016000820151613cc9600085018261371a565b506020820151613cdc6020850182613cf1565b50505050565b613ceb81614528565b82525050565b613cfa81614532565b82525050565b6000613d0c82856137b9565b9150613d1882846137b9565b9150613d2382613a60565b91508190509392505050565b6000613d3a82613b55565b9150819050919050565b6000602082019050613d596000830184613729565b92915050565b6000608082019050613d746000830187613729565b613d816020830186613729565b613d8e6040830185613ce2565b8181036060830152613da08184613747565b905095945050505050565b6000602082019050613dc06000830184613738565b92915050565b60006020820190508181036000830152613de08184613780565b905092915050565b60006020820190508181036000830152613e01816137ea565b9050919050565b60006020820190508181036000830152613e218161380d565b9050919050565b60006020820190508181036000830152613e4181613830565b9050919050565b60006020820190508181036000830152613e6181613853565b9050919050565b60006020820190508181036000830152613e8181613876565b9050919050565b60006020820190508181036000830152613ea181613899565b9050919050565b60006020820190508181036000830152613ec1816138bc565b9050919050565b60006020820190508181036000830152613ee1816138df565b9050919050565b60006020820190508181036000830152613f0181613902565b9050919050565b60006020820190508181036000830152613f2181613925565b9050919050565b60006020820190508181036000830152613f4181613948565b9050919050565b60006020820190508181036000830152613f618161396b565b9050919050565b60006020820190508181036000830152613f818161398e565b9050919050565b60006020820190508181036000830152613fa1816139b1565b9050919050565b60006020820190508181036000830152613fc1816139d4565b9050919050565b60006020820190508181036000830152613fe1816139f7565b9050919050565b6000602082019050818103600083015261400181613a1a565b9050919050565b6000602082019050818103600083015261402181613a3d565b9050919050565b6000602082019050818103600083015261404181613a83565b9050919050565b6000602082019050818103600083015261406181613aa6565b9050919050565b6000602082019050818103600083015261408181613ac9565b9050919050565b600060208201905081810360008301526140a181613aec565b9050919050565b600060208201905081810360008301526140c181613b0f565b9050919050565b600060208201905081810360008301526140e181613b32565b9050919050565b6000602082019050818103600083015261410181613b78565b9050919050565b6000602082019050818103600083015261412181613b9b565b9050919050565b6000602082019050818103600083015261414181613bbe565b9050919050565b6000602082019050818103600083015261416181613be1565b9050919050565b6000602082019050818103600083015261418181613c04565b9050919050565b600060208201905081810360008301526141a181613c27565b9050919050565b600060208201905081810360008301526141c181613c4a565b9050919050565b600060208201905081810360008301526141e181613c6d565b9050919050565b6000602082019050818103600083015261420181613c90565b9050919050565b600060408201905061421d6000830184613cb3565b92915050565b60006020820190506142386000830184613ce2565b92915050565b6000614248614259565b905061425482826145e4565b919050565b6000604051905090565b600067ffffffffffffffff82111561427e5761427d61474b565b5b6142878261478e565b9050602081019050919050565b600067ffffffffffffffff8211156142af576142ae61474b565b5b6142b88261478e565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061431e826144ec565b9150614329836144ec565b9250826fffffffffffffffffffffffffffffffff0382111561434e5761434d61468f565b5b828201905092915050565b600061436482614528565b915061436f83614528565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143a4576143a361468f565b5b828201905092915050565b60006143ba82614528565b91506143c583614528565b9250826143d5576143d46146be565b5b828204905092915050565b60006143eb82614528565b91506143f683614528565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561442f5761442e61468f565b5b828202905092915050565b6000614445826144ec565b9150614450836144ec565b9250828210156144635761446261468f565b5b828203905092915050565b600061447982614528565b915061448483614528565b9250828210156144975761449661468f565b5b828203905092915050565b60006144ad82614508565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614573578082015181840152602081019050614558565b83811115614582576000848401525b50505050565b600061459382614528565b915060008214156145a7576145a661468f565b5b600182039050919050565b600060028204905060018216806145ca57607f821691505b602082108114156145de576145dd6146ed565b5b50919050565b6145ed8261478e565b810181811067ffffffffffffffff8211171561460c5761460b61474b565b5b80604052505050565b600061462082614528565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146535761465261468f565b5b600182019050919050565b600061466982614528565b915061467483614528565b925082614684576146836146be565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782063616e206d696e7420313020706572207472616e73616374696f6e00600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46726565204e4654732068617665206265656e206d696e7465642e0000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f4d696e74205175616e746974792073686f756c64206265206d6f72652074686160008201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f52656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f4f6e6c79206f6e652066726565206d696e740000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f4d61782063616e20686f6c64203130204e465473000000000000000000000000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f416c7265616479206d696e746564206672656500000000000000000000000000600082015250565b7f4e6f7420656e6f7567682045544820696e20796f75722077616c6c6574000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f5075626c69632053616c65206973206e6f742041637469766500000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614fef816144a2565b8114614ffa57600080fd5b50565b615006816144b4565b811461501157600080fd5b50565b61501d816144c0565b811461502857600080fd5b50565b61503481614528565b811461503f57600080fd5b5056fea2646970667358221220321f0f6466446899e098dfe14836f1376b58bd984c2b2234f33d683a3a585d6664736f6c6343000807003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d515964446f6a42526257676d637845564b57685273363176363373593242325334425769754d5173535678332f68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d524d52776a71316d58386a394d3369663531685775353641383367506f47574e61464b5846666b4b5a63684a2f

Deployed Bytecode

0x60806040526004361061021a5760003560e01c806369ba1a7511610123578063ac446002116100ab578063d04950a11161006f578063d04950a1146107ae578063d7224ba0146107d9578063dc33e68114610804578063e985e9c514610841578063f2fde38b1461087e5761021a565b8063ac446002146106f1578063af7b26e914610708578063b88d4fde14610731578063bd0a84391461075a578063c87b56dd146107715761021a565b80638da5cb5b116100f25780638da5cb5b146106195780639231ab2a1461064457806395d89b4114610681578063a0712d68146106ac578063a22cb465146106c85761021a565b806369ba1a751461057157806370a082311461059a578063715018a6146105d75780638d859f3e146105ee5761021a565b80632f745c59116101a65780634f6ccce7116101755780634f6ccce71461047a57806355f804b3146104b75780635c37809d146104e057806362c6f7b9146105095780636352211e146105345761021a565b80632f745c59146103c05780633fd17366146103fd57806342842e0e146104265780634e69d5601461044f5761021a565b8063095ea7b3116101ed578063095ea7b3146102ed57806318160ddd14610316578063200d2ed21461034157806323b872dd1461036c5780632f2ffc57146103955761021a565b80630199e3471461021f57806301ffc9a71461024857806306fdde0314610285578063081812fc146102b0575b600080fd5b34801561022b57600080fd5b50610246600480360381019061024191906136ed565b6108a7565b005b34801561025457600080fd5b5061026f600480360381019061026a919061364a565b61092d565b60405161027c9190613dab565b60405180910390f35b34801561029157600080fd5b5061029a610a77565b6040516102a79190613dc6565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d291906136ed565b610b09565b6040516102e49190613d44565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f919061360a565b610b8e565b005b34801561032257600080fd5b5061032b610ca7565b6040516103389190614223565b60405180910390f35b34801561034d57600080fd5b50610356610cbc565b6040516103639190614223565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e91906134f4565b610cc2565b005b3480156103a157600080fd5b506103aa610cd2565b6040516103b79190614223565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e2919061360a565b610cd8565b6040516103f49190614223565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f91906136ed565b610ed6565b005b34801561043257600080fd5b5061044d600480360381019061044891906134f4565b610f5c565b005b34801561045b57600080fd5b50610464610f7c565b6040516104719190614223565b60405180910390f35b34801561048657600080fd5b506104a1600480360381019061049c91906136ed565b610f86565b6040516104ae9190614223565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d991906136a4565b610fd9565b005b3480156104ec57600080fd5b50610507600480360381019061050291906136a4565b61106f565b005b34801561051557600080fd5b5061051e611105565b60405161052b9190613dab565b60405180910390f35b34801561054057600080fd5b5061055b600480360381019061055691906136ed565b611118565b6040516105689190613d44565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906136ed565b61112e565b005b3480156105a657600080fd5b506105c160048036038101906105bc9190613487565b6111f6565b6040516105ce9190614223565b60405180910390f35b3480156105e357600080fd5b506105ec6112df565b005b3480156105fa57600080fd5b50610603611367565b6040516106109190614223565b60405180910390f35b34801561062557600080fd5b5061062e61136d565b60405161063b9190613d44565b60405180910390f35b34801561065057600080fd5b5061066b600480360381019061066691906136ed565b611396565b6040516106789190614208565b60405180910390f35b34801561068d57600080fd5b506106966113ae565b6040516106a39190613dc6565b60405180910390f35b6106c660048036038101906106c191906136ed565b611440565b005b3480156106d457600080fd5b506106ef60048036038101906106ea91906135ca565b61179a565b005b3480156106fd57600080fd5b5061070661191b565b005b34801561071457600080fd5b5061072f600480360381019061072a91906136ed565b611a9c565b005b34801561073d57600080fd5b5061075860048036038101906107539190613547565b611b22565b005b34801561076657600080fd5b5061076f611b7e565b005b34801561077d57600080fd5b50610798600480360381019061079391906136ed565b611c26565b6040516107a59190613dc6565b60405180910390f35b3480156107ba57600080fd5b506107c3611d75565b6040516107d09190614223565b60405180910390f35b3480156107e557600080fd5b506107ee611d7b565b6040516107fb9190614223565b60405180910390f35b34801561081057600080fd5b5061082b60048036038101906108269190613487565b611d81565b6040516108389190614223565b60405180910390f35b34801561084d57600080fd5b50610868600480360381019061086391906134b4565b611d93565b6040516108759190613dab565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190613487565b611e27565b005b6108af611f1f565b73ffffffffffffffffffffffffffffffffffffffff166108cd61136d565b73ffffffffffffffffffffffffffffffffffffffff1614610923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091a90614048565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109f857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a6057507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a705750610a6f82611f27565b5b9050919050565b606060028054610a86906145b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab2906145b2565b8015610aff5780601f10610ad457610100808354040283529160200191610aff565b820191906000526020600020905b815481529060010190602001808311610ae257829003601f168201915b5050505050905090565b6000610b1482611f91565b610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a906141c8565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b9982611118565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c01906140c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c29611f1f565b73ffffffffffffffffffffffffffffffffffffffff161480610c585750610c5781610c52611f1f565b611d93565b5b610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e90613f68565b60405180910390fd5b610ca2838383611f9f565b505050565b600060018054610cb7919061446e565b905090565b60105481565b610ccd838383612051565b505050565b600b5481565b6000610ce3836111f6565b8210610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90613de8565b60405180910390fd5b6000610d2e610ca7565b905060008060005b83811015610e94576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e2857806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e805786841415610e71578195505050505050610ed0565b8380610e7c90614615565b9450505b508080610e8c90614615565b915050610d36565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790614168565b60405180910390fd5b92915050565b610ede611f1f565b73ffffffffffffffffffffffffffffffffffffffff16610efc61136d565b73ffffffffffffffffffffffffffffffffffffffff1614610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990614048565b60405180910390fd5b80600c8190555050565b610f7783838360405180602001604052806000815250611b22565b505050565b6000601054905090565b6000610f90610ca7565b8210610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613ea8565b60405180910390fd5b819050919050565b610fe1611f1f565b73ffffffffffffffffffffffffffffffffffffffff16610fff61136d565b73ffffffffffffffffffffffffffffffffffffffff1614611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c90614048565b60405180910390fd5b80600e908051906020019061106b929190613261565b5050565b611077611f1f565b73ffffffffffffffffffffffffffffffffffffffff1661109561136d565b73ffffffffffffffffffffffffffffffffffffffff16146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290614048565b60405180910390fd5b80600f9080519060200190611101929190613261565b5050565b600d60009054906101000a900460ff1681565b60006111238261260a565b600001519050919050565b611136611f1f565b73ffffffffffffffffffffffffffffffffffffffff1661115461136d565b73ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190614048565b60405180910390fd5b8060108190555060018114156111c7576000600c819055506111f3565b60028114156111e35766d529ae9e860000600c819055506111f2565b66d529ae9e860000600c819055505b5b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613fa8565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6112e7611f1f565b73ffffffffffffffffffffffffffffffffffffffff1661130561136d565b73ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290614048565b60405180910390fd5b611365600061280d565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61139e6132e7565b6113a78261260a565b9050919050565b6060600380546113bd906145b2565b80601f01602080910402602001604051908101604052809291908181526020018280546113e9906145b2565b80156114365780601f1061140b57610100808354040283529160200191611436565b820191906000526020600020905b81548152906001019060200180831161141957829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590613f48565b60405180910390fd5b600160105414156115a2576101f46114c4610ca7565b10611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb90613e48565b60405180910390fd5b60018114611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e90613f28565b60405180910390fd5b600161155233611d81565b10611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990613fc8565b60405180910390fd5b61159d3360016128d1565b611797565b6002601054146115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90614028565b60405180910390fd5b6000811161162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190613e88565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000271081611654610ca7565b61165e9190614359565b111561169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613ec8565b60405180910390fd5b600b54816116ac33611d81565b6116b69190614359565b11156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613f88565b60405180910390fd5b600a5481111561173c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173390613e08565b60405180910390fd5b80600c5461174a91906143e0565b34101561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613fe8565b60405180910390fd5b61179633826128d1565b5b50565b6117a2611f1f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180790614088565b60405180910390fd5b806007600061181d611f1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118ca611f1f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161190f9190613dab565b60405180910390a35050565b611923611f1f565b73ffffffffffffffffffffffffffffffffffffffff1661194161136d565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e90614048565b60405180910390fd5b600260095414156119dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d490614188565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611a0b90613d2f565b60006040518083038185875af1925050503d8060008114611a48576040519150601f19603f3d011682016040523d82523d6000602084013e611a4d565b606091505b5050905080611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a88906140e8565b60405180910390fd5b506001600981905550565b611aa4611f1f565b73ffffffffffffffffffffffffffffffffffffffff16611ac261136d565b73ffffffffffffffffffffffffffffffffffffffff1614611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f90614048565b60405180910390fd5b80600a8190555050565b611b2d848484612051565b611b39848484846128ef565b611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f90614108565b60405180910390fd5b50505050565b611b86611f1f565b73ffffffffffffffffffffffffffffffffffffffff16611ba461136d565b73ffffffffffffffffffffffffffffffffffffffff1614611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf190614048565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b6060611c3182611f91565b611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790614068565b60405180910390fd5b600d60009054906101000a900460ff1615611ce2576000611c8f612a86565b90506000815111611caf5760405180602001604052806000815250611cda565b80611cb984612b18565b604051602001611cca929190613d00565b6040516020818303038152906040525b915050611d70565b600f8054611cef906145b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1b906145b2565b8015611d685780601f10611d3d57610100808354040283529160200191611d68565b820191906000526020600020905b815481529060010190602001808311611d4b57829003601f168201915b505050505090505b919050565b600a5481565b60085481565b6000611d8c82612c79565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e2f611f1f565b73ffffffffffffffffffffffffffffffffffffffff16611e4d61136d565b73ffffffffffffffffffffffffffffffffffffffff1614611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90614048565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90613e28565b60405180910390fd5b611f1c8161280d565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061205c8261260a565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612083611f1f565b73ffffffffffffffffffffffffffffffffffffffff1614806120df57506120a8611f1f565b73ffffffffffffffffffffffffffffffffffffffff166120c784610b09565b73ffffffffffffffffffffffffffffffffffffffff16145b806120fb57506120fa82600001516120f5611f1f565b611d93565b5b90508061213d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612134906140a8565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a690614008565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561221f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221690613ee8565b60405180910390fd5b61222c8585856001612d62565b61223c6000848460000151611f9f565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166122aa919061443a565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661234e9190614313565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846124549190614359565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561259a576124ca81611f91565b15612599576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126028686866001612d68565b505050505050565b6126126132e7565b61261b82611f91565b61265a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265190613e68565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000a83106126be5760017f000000000000000000000000000000000000000000000000000000000000000a846126b1919061446e565b6126bb9190614359565b90505b60008390505b8181106127cc576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146127b857809350505050612808565b5080806127c490614588565b9150506126c4565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff906141a8565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128eb828260405180602001604052806000815250612d6e565b5050565b60006129108473ffffffffffffffffffffffffffffffffffffffff1661324e565b15612a79578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612939611f1f565b8786866040518563ffffffff1660e01b815260040161295b9493929190613d5f565b602060405180830381600087803b15801561297557600080fd5b505af19250505080156129a657506040513d601f19601f820116820180604052508101906129a39190613677565b60015b612a29573d80600081146129d6576040519150601f19603f3d011682016040523d82523d6000602084013e6129db565b606091505b50600081511415612a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1890614108565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612a7e565b600190505b949350505050565b6060600e8054612a95906145b2565b80601f0160208091040260200160405190810160405280929190818152602001828054612ac1906145b2565b8015612b0e5780601f10612ae357610100808354040283529160200191612b0e565b820191906000526020600020905b815481529060010190602001808311612af157829003601f168201915b5050505050905090565b60606000821415612b60576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c74565b600082905060005b60008214612b92578080612b7b90614615565b915050600a82612b8b91906143af565b9150612b68565b60008167ffffffffffffffff811115612bae57612bad61474b565b5b6040519080825280601f01601f191660200182016040528015612be05781602001600182028036833780820191505090505b5090505b60008514612c6d57600182612bf9919061446e565b9150600a85612c08919061465e565b6030612c149190614359565b60f81b818381518110612c2a57612c2961471c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c6691906143af565b9450612be4565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce190613f08565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddc90614148565b60405180910390fd5b612dee81611f91565b15612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2590614128565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000a831115612e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e88906141e8565b60405180910390fd5b612e9e6000858386612d62565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612f9b9190614313565b6fffffffffffffffffffffffffffffffff168152602001858360200151612fc29190614313565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561323157818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46131d160008884886128ef565b613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790614108565b60405180910390fd5b818061321b90614615565b925050808061322990614615565b915050613160565b50806001819055506132466000878588612d68565b505050505050565b600080823b905060008111915050919050565b82805461326d906145b2565b90600052602060002090601f01602090048101928261328f57600085556132d6565b82601f106132a857805160ff19168380011785556132d6565b828001600101855582156132d6579182015b828111156132d55782518255916020019190600101906132ba565b5b5090506132e39190613321565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561333a576000816000905550600101613322565b5090565b600061335161334c84614263565b61423e565b90508281526020810184848401111561336d5761336c61477f565b5b613378848285614546565b509392505050565b600061339361338e84614294565b61423e565b9050828152602081018484840111156133af576133ae61477f565b5b6133ba848285614546565b509392505050565b6000813590506133d181614fe6565b92915050565b6000813590506133e681614ffd565b92915050565b6000813590506133fb81615014565b92915050565b60008151905061341081615014565b92915050565b600082601f83011261342b5761342a61477a565b5b813561343b84826020860161333e565b91505092915050565b600082601f8301126134595761345861477a565b5b8135613469848260208601613380565b91505092915050565b6000813590506134818161502b565b92915050565b60006020828403121561349d5761349c614789565b5b60006134ab848285016133c2565b91505092915050565b600080604083850312156134cb576134ca614789565b5b60006134d9858286016133c2565b92505060206134ea858286016133c2565b9150509250929050565b60008060006060848603121561350d5761350c614789565b5b600061351b868287016133c2565b935050602061352c868287016133c2565b925050604061353d86828701613472565b9150509250925092565b6000806000806080858703121561356157613560614789565b5b600061356f878288016133c2565b9450506020613580878288016133c2565b935050604061359187828801613472565b925050606085013567ffffffffffffffff8111156135b2576135b1614784565b5b6135be87828801613416565b91505092959194509250565b600080604083850312156135e1576135e0614789565b5b60006135ef858286016133c2565b9250506020613600858286016133d7565b9150509250929050565b6000806040838503121561362157613620614789565b5b600061362f858286016133c2565b925050602061364085828601613472565b9150509250929050565b6000602082840312156136605761365f614789565b5b600061366e848285016133ec565b91505092915050565b60006020828403121561368d5761368c614789565b5b600061369b84828501613401565b91505092915050565b6000602082840312156136ba576136b9614789565b5b600082013567ffffffffffffffff8111156136d8576136d7614784565b5b6136e484828501613444565b91505092915050565b60006020828403121561370357613702614789565b5b600061371184828501613472565b91505092915050565b613723816144a2565b82525050565b613732816144a2565b82525050565b613741816144b4565b82525050565b6000613752826142c5565b61375c81856142db565b935061376c818560208601614555565b6137758161478e565b840191505092915050565b600061378b826142d0565b61379581856142f7565b93506137a5818560208601614555565b6137ae8161478e565b840191505092915050565b60006137c4826142d0565b6137ce8185614308565b93506137de818560208601614555565b80840191505092915050565b60006137f76022836142f7565b91506138028261479f565b604082019050919050565b600061381a601f836142f7565b9150613825826147ee565b602082019050919050565b600061383d6026836142f7565b915061384882614817565b604082019050919050565b6000613860601b836142f7565b915061386b82614866565b602082019050919050565b6000613883602a836142f7565b915061388e8261488f565b604082019050919050565b60006138a66023836142f7565b91506138b1826148de565b604082019050919050565b60006138c96023836142f7565b91506138d48261492d565b604082019050919050565b60006138ec6012836142f7565b91506138f78261497c565b602082019050919050565b600061390f6025836142f7565b915061391a826149a5565b604082019050919050565b60006139326031836142f7565b915061393d826149f4565b604082019050919050565b60006139556012836142f7565b915061396082614a43565b602082019050919050565b6000613978601e836142f7565b915061398382614a6c565b602082019050919050565b600061399b6039836142f7565b91506139a682614a95565b604082019050919050565b60006139be6014836142f7565b91506139c982614ae4565b602082019050919050565b60006139e1602b836142f7565b91506139ec82614b0d565b604082019050919050565b6000613a046013836142f7565b9150613a0f82614b5c565b602082019050919050565b6000613a27601d836142f7565b9150613a3282614b85565b602082019050919050565b6000613a4a6026836142f7565b9150613a5582614bae565b604082019050919050565b6000613a6d600583614308565b9150613a7882614bfd565b600582019050919050565b6000613a906019836142f7565b9150613a9b82614c26565b602082019050919050565b6000613ab36020836142f7565b9150613abe82614c4f565b602082019050919050565b6000613ad6602f836142f7565b9150613ae182614c78565b604082019050919050565b6000613af9601a836142f7565b9150613b0482614cc7565b602082019050919050565b6000613b1c6032836142f7565b9150613b2782614cf0565b604082019050919050565b6000613b3f6022836142f7565b9150613b4a82614d3f565b604082019050919050565b6000613b626000836142ec565b9150613b6d82614d8e565b600082019050919050565b6000613b856010836142f7565b9150613b9082614d91565b602082019050919050565b6000613ba86033836142f7565b9150613bb382614dba565b604082019050919050565b6000613bcb601d836142f7565b9150613bd682614e09565b602082019050919050565b6000613bee6021836142f7565b9150613bf982614e32565b604082019050919050565b6000613c11602e836142f7565b9150613c1c82614e81565b604082019050919050565b6000613c34601f836142f7565b9150613c3f82614ed0565b602082019050919050565b6000613c57602f836142f7565b9150613c6282614ef9565b604082019050919050565b6000613c7a602d836142f7565b9150613c8582614f48565b604082019050919050565b6000613c9d6022836142f7565b9150613ca882614f97565b604082019050919050565b604082016000820151613cc9600085018261371a565b506020820151613cdc6020850182613cf1565b50505050565b613ceb81614528565b82525050565b613cfa81614532565b82525050565b6000613d0c82856137b9565b9150613d1882846137b9565b9150613d2382613a60565b91508190509392505050565b6000613d3a82613b55565b9150819050919050565b6000602082019050613d596000830184613729565b92915050565b6000608082019050613d746000830187613729565b613d816020830186613729565b613d8e6040830185613ce2565b8181036060830152613da08184613747565b905095945050505050565b6000602082019050613dc06000830184613738565b92915050565b60006020820190508181036000830152613de08184613780565b905092915050565b60006020820190508181036000830152613e01816137ea565b9050919050565b60006020820190508181036000830152613e218161380d565b9050919050565b60006020820190508181036000830152613e4181613830565b9050919050565b60006020820190508181036000830152613e6181613853565b9050919050565b60006020820190508181036000830152613e8181613876565b9050919050565b60006020820190508181036000830152613ea181613899565b9050919050565b60006020820190508181036000830152613ec1816138bc565b9050919050565b60006020820190508181036000830152613ee1816138df565b9050919050565b60006020820190508181036000830152613f0181613902565b9050919050565b60006020820190508181036000830152613f2181613925565b9050919050565b60006020820190508181036000830152613f4181613948565b9050919050565b60006020820190508181036000830152613f618161396b565b9050919050565b60006020820190508181036000830152613f818161398e565b9050919050565b60006020820190508181036000830152613fa1816139b1565b9050919050565b60006020820190508181036000830152613fc1816139d4565b9050919050565b60006020820190508181036000830152613fe1816139f7565b9050919050565b6000602082019050818103600083015261400181613a1a565b9050919050565b6000602082019050818103600083015261402181613a3d565b9050919050565b6000602082019050818103600083015261404181613a83565b9050919050565b6000602082019050818103600083015261406181613aa6565b9050919050565b6000602082019050818103600083015261408181613ac9565b9050919050565b600060208201905081810360008301526140a181613aec565b9050919050565b600060208201905081810360008301526140c181613b0f565b9050919050565b600060208201905081810360008301526140e181613b32565b9050919050565b6000602082019050818103600083015261410181613b78565b9050919050565b6000602082019050818103600083015261412181613b9b565b9050919050565b6000602082019050818103600083015261414181613bbe565b9050919050565b6000602082019050818103600083015261416181613be1565b9050919050565b6000602082019050818103600083015261418181613c04565b9050919050565b600060208201905081810360008301526141a181613c27565b9050919050565b600060208201905081810360008301526141c181613c4a565b9050919050565b600060208201905081810360008301526141e181613c6d565b9050919050565b6000602082019050818103600083015261420181613c90565b9050919050565b600060408201905061421d6000830184613cb3565b92915050565b60006020820190506142386000830184613ce2565b92915050565b6000614248614259565b905061425482826145e4565b919050565b6000604051905090565b600067ffffffffffffffff82111561427e5761427d61474b565b5b6142878261478e565b9050602081019050919050565b600067ffffffffffffffff8211156142af576142ae61474b565b5b6142b88261478e565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061431e826144ec565b9150614329836144ec565b9250826fffffffffffffffffffffffffffffffff0382111561434e5761434d61468f565b5b828201905092915050565b600061436482614528565b915061436f83614528565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143a4576143a361468f565b5b828201905092915050565b60006143ba82614528565b91506143c583614528565b9250826143d5576143d46146be565b5b828204905092915050565b60006143eb82614528565b91506143f683614528565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561442f5761442e61468f565b5b828202905092915050565b6000614445826144ec565b9150614450836144ec565b9250828210156144635761446261468f565b5b828203905092915050565b600061447982614528565b915061448483614528565b9250828210156144975761449661468f565b5b828203905092915050565b60006144ad82614508565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614573578082015181840152602081019050614558565b83811115614582576000848401525b50505050565b600061459382614528565b915060008214156145a7576145a661468f565b5b600182039050919050565b600060028204905060018216806145ca57607f821691505b602082108114156145de576145dd6146ed565b5b50919050565b6145ed8261478e565b810181811067ffffffffffffffff8211171561460c5761460b61474b565b5b80604052505050565b600061462082614528565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146535761465261468f565b5b600182019050919050565b600061466982614528565b915061467483614528565b925082614684576146836146be565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782063616e206d696e7420313020706572207472616e73616374696f6e00600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46726565204e4654732068617665206265656e206d696e7465642e0000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f4d696e74205175616e746974792073686f756c64206265206d6f72652074686160008201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f52656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f4f6e6c79206f6e652066726565206d696e740000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f4d61782063616e20686f6c64203130204e465473000000000000000000000000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f416c7265616479206d696e746564206672656500000000000000000000000000600082015250565b7f4e6f7420656e6f7567682045544820696e20796f75722077616c6c6574000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f5075626c69632053616c65206973206e6f742041637469766500000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614fef816144a2565b8114614ffa57600080fd5b50565b615006816144b4565b811461501157600080fd5b50565b61501d816144c0565b811461502857600080fd5b50565b61503481614528565b811461503f57600080fd5b5056fea2646970667358221220321f0f6466446899e098dfe14836f1376b58bd984c2b2234f33d683a3a585d6664736f6c63430008070033

Deployed Bytecode Sourcemap

19923:3883:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23379:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11240:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12812:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14013:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13629:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10208:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20533:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14696:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20119:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10491:744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23167:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14843:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23726:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10309:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22413:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22308:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20425:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12689:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23483:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11615:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2697:103;;;;;;;;;;;;;:::i;:::-;;20198:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2474:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22738:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12911:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21046:826;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14222:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22891:181;;;;;;;;;;;;;:::i;:::-;;23271:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15005:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23078:83;;;;;;;;;;;;;:::i;:::-;;21879:421;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20024:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18135:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22627:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14503:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2809:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23379:98;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23470:1:::1;23452:15;:19;;;;23379:98:::0;:::o;11240:370::-;11367:4;11412:25;11397:40;;;:11;:40;;;;:99;;;;11463:33;11448:48;;;:11;:48;;;;11397:99;:160;;;;11522:35;11507:50;;;:11;:50;;;;11397:160;:207;;;;11568:36;11592:11;11568:23;:36::i;:::-;11397:207;11383:221;;11240:370;;;:::o;12812:94::-;12866:13;12895:5;12888:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12812:94;:::o;14013:204::-;14081:7;14105:16;14113:7;14105;:16::i;:::-;14097:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14187:15;:24;14203:7;14187:24;;;;;;;;;;;;;;;;;;;;;14180:31;;14013:204;;;:::o;13629:379::-;13698:13;13714:24;13730:7;13714:15;:24::i;:::-;13698:40;;13759:5;13753:11;;:2;:11;;;;13745:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13844:5;13828:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13853:37;13870:5;13877:12;:10;:12::i;:::-;13853:16;:37::i;:::-;13828:62;13812:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13974:28;13983:2;13987:7;13996:5;13974:8;:28::i;:::-;13691:317;13629:379;;:::o;10208:96::-;10261:7;10297:1;10284:12;;:14;;;;:::i;:::-;10277:21;;10208:96;:::o;20533:22::-;;;;:::o;14696:142::-;14804:28;14814:4;14820:2;14824:7;14804:9;:28::i;:::-;14696:142;;;:::o;20119:35::-;;;;:::o;10491:744::-;10600:7;10635:16;10645:5;10635:9;:16::i;:::-;10627:5;:24;10619:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10697:22;10722:13;:11;:13::i;:::-;10697:38;;10742:19;10772:25;10822:9;10817:350;10841:14;10837:1;:18;10817:350;;;10871:31;10905:11;:14;10917:1;10905:14;;;;;;;;;;;10871:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10958:1;10932:28;;:9;:14;;;:28;;;10928:89;;10993:9;:14;;;10973:34;;10928:89;11050:5;11029:26;;:17;:26;;;11025:135;;;11087:5;11072:11;:20;11068:59;;;11114:1;11107:8;;;;;;;;;11068:59;11137:13;;;;;:::i;:::-;;;;11025:135;10862:305;10857:3;;;;;:::i;:::-;;;;10817:350;;;;11173:56;;;;;;;;;;:::i;:::-;;;;;;;;10491:744;;;;;:::o;23167:98::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23250:9:::1;23242:5;:17;;;;23167:98:::0;:::o;14843:157::-;14955:39;14972:4;14978:2;14982:7;14955:39;;;;;;;;;;;;:16;:39::i;:::-;14843:157;;;:::o;23726:73::-;23766:4;23787:6;;23780:13;;23726:73;:::o;10309:177::-;10376:7;10408:13;:11;:13::i;:::-;10400:5;:21;10392:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10475:5;10468:12;;10309:177;;;:::o;22413:98::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22498:7:::1;22482:13;:23;;;;;;;;;;;;:::i;:::-;;22413:98:::0;:::o;22308:99::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22398:3:::1;22380:15;:21;;;;;;;;;;;;:::i;:::-;;22308:99:::0;:::o;20425:29::-;;;;;;;;;;;;;:::o;12689:118::-;12753:7;12776:20;12788:7;12776:11;:20::i;:::-;:25;;;12769:32;;12689:118;;;:::o;23483:237::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23548:1:::1;23539:6;:10;;;;23564:1;23561;:4;23558:157;;;23585:7;23579:5;:13;;;;23558:157;;;23621:1;23618;:4;23615:100;;;23642:10;23636:5;:16;;;;23615:100;;;23693:10;23687:5;:16;;;;23615:100;23558:157;23483:237:::0;:::o;11615:211::-;11679:7;11720:1;11703:19;;:5;:19;;;;11695:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11792:12;:19;11805:5;11792:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11784:36;;11777:43;;11615: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;20198:34::-;;;;:::o;2474:87::-;2520:7;2547:6;;;;;;;;;;;2540:13;;2474:87;:::o;22738:147::-;22819:21;;:::i;:::-;22859:20;22871:7;22859:11;:20::i;:::-;22852:27;;22738:147;;;:::o;12911:98::-;12967:13;12996:7;12989:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12911:98;:::o;21046:826::-;20981:10;20968:23;;:9;:23;;;20960:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21128:1:::1;21118:6;;:11;21115:750;;;21161:3;21145:13;:11;:13::i;:::-;:19;21137:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;21223:1;21211:8;:13;21203:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;21288:1;21262:24;21275:10;21262:12;:24::i;:::-;:27;21254:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21323:24;21333:10;21345:1;21323:9;:24::i;:::-;21115:750;;;21385:1;21375:6;;:11;21367:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;21443:1;21432:8;:12;21424:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;21526:14;21514:8;21498:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:42;;21490:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21617:15;;21605:8;21578:24;21591:10;21578:12;:24::i;:::-;:35;;;;:::i;:::-;:54;;21570:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;21687:17;;21675:8;:29;;21667:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21775:8;21767:5;;:16;;;;:::i;:::-;21754:9;:29;;21746:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21824:31;21834:10;21846:8;21824:9;:31::i;:::-;21115:750;21046:826:::0;:::o;14222:274::-;14325:12;:10;:12::i;:::-;14313:24;;:8;:24;;;;14305:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14422:8;14377:18;:32;14396:12;:10;:12::i;:::-;14377:32;;;;;;;;;;;;;;;:42;14410:8;14377:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14471:8;14442:48;;14457:12;:10;:12::i;:::-;14442:48;;;14481:8;14442:48;;;;;;:::i;:::-;;;;;;;;14222:274;;:::o;22891: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;;;;22956:12:::2;22974:10;:15;;22997:21;22974:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22955:68;;;23038:7;23030:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;22948:124;212:1:::1;506:7;:22;;;;22891:181::o:0;23271:102::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23366:1:::1;23346:17;:21;;;;23271:102:::0;:::o;15005:311::-;15142:28;15152:4;15158:2;15162:7;15142:9;:28::i;:::-;15193:48;15216:4;15222:2;15226:7;15235:5;15193:22;:48::i;:::-;15177:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;15005:311;;;;:::o;23078:83::-;2619:12;:10;:12::i;:::-;2608:23;;:7;:5;:7::i;:::-;:23;;;2600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23146:9:::1;;;;;;;;;;;23145:10;23133:9;;:22;;;;;;;;;;;;;;;;;;23078:83::o:0;21879:421::-;21952:13;21982:16;21990:7;21982;:16::i;:::-;21974:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22059:9;;;;;;;;;;;22056:239;;;22076:21;22100:10;:8;:10::i;:::-;22076:34;;22155:1;22137:7;22131:21;:25;:112;;;;;;;;;;;;;;;;;22192:7;22201:18;:7;:16;:18::i;:::-;22175:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22131:112;22117:126;;;;;22056:239;22272:15;22265:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21879:421;;;;:::o;20024:37::-;;;;:::o;18135:43::-;;;;:::o;22627:107::-;22685:7;22708:20;22722:5;22708:13;:20::i;:::-;22701:27;;22627:107;;;:::o;14503:186::-;14625:4;14648:18;:25;14667:5;14648:25;;;;;;;;;;;;;;;:35;14674:8;14648:35;;;;;;;;;;;;;;;;;;;;;;;;;14641:42;;14503: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;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;15321:105::-;15378:4;15408:12;;15398:7;:22;15391:29;;15321:105;;;:::o;17957:172::-;18081:2;18054:15;:24;18070:7;18054:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18115:7;18111:2;18095:28;;18104:5;18095:28;;;;;;;;;;;;17957:172;;;:::o;16692:1260::-;16789:35;16827:20;16839:7;16827:11;:20::i;:::-;16789:58;;16856:22;16898:13;:18;;;16882:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;16951:12;:10;:12::i;:::-;16927:36;;:20;16939:7;16927:11;:20::i;:::-;:36;;;16882:81;:142;;;;16974:50;16991:13;:18;;;17011:12;:10;:12::i;:::-;16974:16;:50::i;:::-;16882:142;16856:169;;17050:17;17034:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17182:4;17160:26;;:13;:18;;;:26;;;17144:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;17271:1;17257:16;;:2;:16;;;;17249:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17324:43;17346:4;17352:2;17356:7;17365:1;17324:21;:43::i;:::-;17375:49;17392:1;17396:7;17405:13;:18;;;17375:8;:49::i;:::-;17463:1;17433:12;:18;17446:4;17433:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17499:1;17471:12;:16;17484:2;17471:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17530:43;;;;;;;;17545:2;17530:43;;;;;;17556:15;17530:43;;;;;17507:11;:20;17519:7;17507:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17581:19;17613:1;17603:7;:11;;;;:::i;:::-;17581:33;;17666:1;17625:43;;:11;:24;17637:11;17625:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;17621:236;;;17683:20;17691:11;17683:7;:20::i;:::-;17679:171;;;17743:97;;;;;;;;17770:13;:18;;;17743:97;;;;;;17801:13;:28;;;17743:97;;;;;17716:11;:24;17728:11;17716:24;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17679:171;17621:236;17889:7;17885:2;17870:27;;17879:4;17870:27;;;;;;;;;;;;17904:42;17925:4;17931:2;17935:7;17944:1;17904:20;:42::i;:::-;16782:1170;;;16692:1260;;;:::o;12078:606::-;12154:21;;:::i;:::-;12195:16;12203:7;12195;:16::i;:::-;12187:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12267:26;12315:12;12304:7;:23;12300:93;;12384:1;12369:12;12359:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;12338:47;;12300:93;12406:12;12421:7;12406:22;;12401:212;12438:18;12430:4;:26;12401:212;;12475:31;12509:11;:17;12521:4;12509:17;;;;;;;;;;;12475:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12565:1;12539:28;;:9;:14;;;:28;;;12535:71;;12587:9;12580:16;;;;;;;12535:71;12466:147;12458:6;;;;;:::i;:::-;;;;12401:212;;;;12621:57;;;;;;;;;;:::i;:::-;;;;;;;;12078: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;15432:98::-;15497:27;15507:2;15511:8;15497:27;;;;;;;;;;;;:9;:27::i;:::-;15432:98;;:::o;18935:690::-;19072:4;19089:15;:2;:13;;;:15::i;:::-;19085:535;;;19144:2;19128:36;;;19165:12;:10;:12::i;:::-;19179:4;19185:7;19194:5;19128:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19115:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19376:1;19359:6;:13;:18;19355:215;;;19392:61;;;;;;;;;;:::i;:::-;;;;;;;;19355:215;19538:6;19532:13;19523:6;19519:2;19515:15;19508:38;19115:464;19260:45;;;19250:55;;;:6;:55;;;;19243:62;;;;;19085:535;19608:4;19601:11;;18935:690;;;;;;;:::o;22515:108::-;22575:13;22604;22597:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22515: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;11832:240::-;11893:7;11942:1;11925:19;;:5;:19;;;;11909:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12033:12;:19;12046:5;12033:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;12025:41;;12018:48;;11832:240;;;:::o;19630:141::-;;;;;:::o;19776:140::-;;;;;:::o;15535:1152::-;15640:20;15663:12;;15640:35;;15704:1;15690:16;;:2;:16;;;;15682:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15761:21;15769:12;15761:7;:21::i;:::-;15760:22;15752:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15843:12;15831:8;:24;;15823:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15903:61;15933:1;15937:2;15941:12;15955:8;15903:21;:61::i;:::-;15973:30;16006:12;:16;16019:2;16006:16;;;;;;;;;;;;;;;15973:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16048:119;;;;;;;;16098:8;16068:11;:19;;;:39;;;;:::i;:::-;16048:119;;;;;;16151:8;16116:11;:24;;;:44;;;;:::i;:::-;16048:119;;;;;16029:12;:16;16042:2;16029:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16202:43;;;;;;;;16217:2;16202:43;;;;;;16228:15;16202:43;;;;;16174:11;:25;16186:12;16174:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16254:20;16277:12;16254:35;;16303:9;16298:281;16322:8;16318:1;:12;16298:281;;;16376:12;16372:2;16351:38;;16368:1;16351:38;;;;;;;;;;;;16416:59;16447:1;16451:2;16455:12;16469:5;16416:22;:59::i;:::-;16398:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;16557:14;;;;;:::i;:::-;;;;16332:3;;;;;:::i;:::-;;;;16298:281;;;;16602:12;16587;:27;;;;16621:60;16650:1;16654:2;16658:12;16672:8;16621:20;:60::i;:::-;15633:1054;;;15535:1152;;;:::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:::-;15096:3;15117:67;15181:2;15176:3;15117:67;:::i;:::-;15110:74;;15193:93;15282:3;15193:93;:::i;:::-;15311:2;15306:3;15302:12;15295:19;;14954:366;;;:::o;15326:400::-;15486:3;15507:84;15589:1;15584:3;15507:84;:::i;:::-;15500:91;;15600:93;15689:3;15600:93;:::i;:::-;15718:1;15713:3;15709:11;15702:18;;15326:400;;;:::o;15732:366::-;15874:3;15895:67;15959:2;15954:3;15895:67;:::i;:::-;15888:74;;15971:93;16060:3;15971:93;:::i;:::-;16089:2;16084:3;16080:12;16073:19;;15732:366;;;:::o;16104:::-;16246:3;16267:67;16331:2;16326:3;16267:67;:::i;:::-;16260:74;;16343:93;16432:3;16343:93;:::i;:::-;16461:2;16456:3;16452:12;16445:19;;16104:366;;;:::o;16476:::-;16618:3;16639:67;16703:2;16698:3;16639:67;:::i;:::-;16632:74;;16715:93;16804:3;16715:93;:::i;:::-;16833:2;16828:3;16824:12;16817:19;;16476:366;;;:::o;16848:::-;16990:3;17011:67;17075:2;17070:3;17011:67;:::i;:::-;17004:74;;17087:93;17176:3;17087:93;:::i;:::-;17205:2;17200:3;17196:12;17189:19;;16848:366;;;:::o;17220:::-;17362:3;17383:67;17447:2;17442:3;17383:67;:::i;:::-;17376:74;;17459:93;17548:3;17459:93;:::i;:::-;17577:2;17572:3;17568:12;17561:19;;17220:366;;;:::o;17592:::-;17734:3;17755:67;17819:2;17814:3;17755:67;:::i;:::-;17748:74;;17831:93;17920:3;17831:93;:::i;:::-;17949:2;17944:3;17940:12;17933:19;;17592:366;;;:::o;17964:398::-;18123:3;18144:83;18225:1;18220:3;18144:83;:::i;:::-;18137:90;;18236:93;18325:3;18236:93;:::i;:::-;18354:1;18349:3;18345:11;18338:18;;17964:398;;;:::o;18368:366::-;18510:3;18531:67;18595:2;18590:3;18531:67;:::i;:::-;18524:74;;18607:93;18696:3;18607:93;:::i;:::-;18725:2;18720:3;18716:12;18709:19;;18368:366;;;:::o;18740:::-;18882:3;18903:67;18967:2;18962:3;18903:67;:::i;:::-;18896:74;;18979:93;19068:3;18979:93;:::i;:::-;19097:2;19092:3;19088:12;19081:19;;18740:366;;;:::o;19112:::-;19254:3;19275:67;19339:2;19334:3;19275:67;:::i;:::-;19268:74;;19351:93;19440:3;19351:93;:::i;:::-;19469:2;19464:3;19460:12;19453:19;;19112:366;;;:::o;19484:::-;19626:3;19647:67;19711:2;19706:3;19647:67;:::i;:::-;19640:74;;19723:93;19812:3;19723:93;:::i;:::-;19841:2;19836:3;19832:12;19825:19;;19484:366;;;:::o;19856:::-;19998:3;20019:67;20083:2;20078:3;20019:67;:::i;:::-;20012:74;;20095:93;20184:3;20095:93;:::i;:::-;20213:2;20208:3;20204:12;20197:19;;19856:366;;;:::o;20228:::-;20370:3;20391:67;20455:2;20450:3;20391:67;:::i;:::-;20384:74;;20467:93;20556:3;20467:93;:::i;:::-;20585:2;20580:3;20576:12;20569:19;;20228:366;;;:::o;20600:::-;20742:3;20763:67;20827:2;20822:3;20763:67;:::i;:::-;20756:74;;20839:93;20928:3;20839:93;:::i;:::-;20957:2;20952:3;20948:12;20941:19;;20600:366;;;:::o;20972:::-;21114:3;21135:67;21199:2;21194:3;21135:67;:::i;:::-;21128:74;;21211:93;21300:3;21211:93;:::i;:::-;21329:2;21324:3;21320:12;21313:19;;20972:366;;;:::o;21344:::-;21486:3;21507:67;21571:2;21566:3;21507:67;:::i;:::-;21500:74;;21583:93;21672:3;21583:93;:::i;:::-;21701:2;21696:3;21692:12;21685:19;;21344:366;;;:::o;21786:527::-;21945:4;21940:3;21936:14;22032:4;22025:5;22021:16;22015:23;22051:63;22108:4;22103:3;22099:14;22085:12;22051:63;:::i;:::-;21960:164;22216:4;22209:5;22205:16;22199:23;22235:61;22290:4;22285:3;22281:14;22267:12;22235:61;:::i;:::-;22134:172;21914:399;21786:527;;:::o;22319:118::-;22406:24;22424:5;22406:24;:::i;:::-;22401:3;22394:37;22319:118;;:::o;22443:105::-;22518:23;22535:5;22518:23;:::i;:::-;22513:3;22506:36;22443:105;;:::o;22554:701::-;22835:3;22857:95;22948:3;22939:6;22857:95;:::i;:::-;22850:102;;22969:95;23060:3;23051:6;22969:95;:::i;:::-;22962:102;;23081:148;23225:3;23081:148;:::i;:::-;23074:155;;23246:3;23239:10;;22554:701;;;;;:::o;23261:379::-;23445:3;23467:147;23610:3;23467:147;:::i;:::-;23460:154;;23631:3;23624:10;;23261:379;;;:::o;23646:222::-;23739:4;23777:2;23766:9;23762:18;23754:26;;23790:71;23858:1;23847:9;23843:17;23834:6;23790:71;:::i;:::-;23646:222;;;;:::o;23874:640::-;24069:4;24107:3;24096:9;24092:19;24084:27;;24121:71;24189:1;24178:9;24174:17;24165:6;24121:71;:::i;:::-;24202:72;24270:2;24259:9;24255:18;24246:6;24202:72;:::i;:::-;24284;24352:2;24341:9;24337:18;24328:6;24284:72;:::i;:::-;24403:9;24397:4;24393:20;24388:2;24377:9;24373:18;24366:48;24431:76;24502:4;24493:6;24431:76;:::i;:::-;24423:84;;23874:640;;;;;;;:::o;24520:210::-;24607:4;24645:2;24634:9;24630:18;24622:26;;24658:65;24720:1;24709:9;24705:17;24696:6;24658:65;:::i;:::-;24520:210;;;;:::o;24736:313::-;24849:4;24887:2;24876:9;24872:18;24864:26;;24936:9;24930:4;24926:20;24922:1;24911:9;24907:17;24900:47;24964:78;25037:4;25028:6;24964:78;:::i;:::-;24956:86;;24736:313;;;;:::o;25055:419::-;25221:4;25259:2;25248:9;25244:18;25236:26;;25308:9;25302:4;25298:20;25294:1;25283:9;25279:17;25272:47;25336:131;25462:4;25336:131;:::i;:::-;25328:139;;25055:419;;;:::o;25480:::-;25646:4;25684:2;25673:9;25669:18;25661:26;;25733:9;25727:4;25723:20;25719:1;25708:9;25704:17;25697:47;25761:131;25887:4;25761:131;:::i;:::-;25753:139;;25480:419;;;:::o;25905:::-;26071:4;26109:2;26098:9;26094:18;26086:26;;26158:9;26152:4;26148:20;26144:1;26133:9;26129:17;26122:47;26186:131;26312:4;26186:131;:::i;:::-;26178:139;;25905:419;;;:::o;26330:::-;26496:4;26534:2;26523:9;26519:18;26511:26;;26583:9;26577:4;26573:20;26569:1;26558:9;26554:17;26547:47;26611:131;26737:4;26611:131;:::i;:::-;26603:139;;26330:419;;;:::o;26755:::-;26921:4;26959:2;26948:9;26944:18;26936:26;;27008:9;27002:4;26998:20;26994:1;26983:9;26979:17;26972:47;27036:131;27162:4;27036:131;:::i;:::-;27028:139;;26755:419;;;:::o;27180:::-;27346:4;27384:2;27373:9;27369:18;27361:26;;27433:9;27427:4;27423:20;27419:1;27408:9;27404:17;27397:47;27461:131;27587:4;27461:131;:::i;:::-;27453:139;;27180:419;;;:::o;27605:::-;27771:4;27809:2;27798:9;27794:18;27786:26;;27858:9;27852:4;27848:20;27844:1;27833:9;27829:17;27822:47;27886:131;28012:4;27886:131;:::i;:::-;27878:139;;27605:419;;;:::o;28030:::-;28196:4;28234:2;28223:9;28219:18;28211:26;;28283:9;28277:4;28273:20;28269:1;28258:9;28254:17;28247:47;28311:131;28437:4;28311:131;:::i;:::-;28303:139;;28030:419;;;:::o;28455:::-;28621:4;28659:2;28648:9;28644:18;28636:26;;28708:9;28702:4;28698:20;28694:1;28683:9;28679:17;28672:47;28736:131;28862:4;28736:131;:::i;:::-;28728:139;;28455:419;;;:::o;28880:::-;29046:4;29084:2;29073:9;29069:18;29061:26;;29133:9;29127:4;29123:20;29119:1;29108:9;29104:17;29097:47;29161:131;29287:4;29161:131;:::i;:::-;29153:139;;28880:419;;;:::o;29305:::-;29471:4;29509:2;29498:9;29494:18;29486:26;;29558:9;29552:4;29548:20;29544:1;29533:9;29529:17;29522:47;29586:131;29712:4;29586:131;:::i;:::-;29578:139;;29305:419;;;:::o;29730:::-;29896:4;29934:2;29923:9;29919:18;29911:26;;29983:9;29977:4;29973:20;29969:1;29958:9;29954:17;29947:47;30011:131;30137:4;30011:131;:::i;:::-;30003:139;;29730:419;;;:::o;30155:::-;30321:4;30359:2;30348:9;30344:18;30336:26;;30408:9;30402:4;30398:20;30394:1;30383:9;30379:17;30372:47;30436:131;30562:4;30436:131;:::i;:::-;30428:139;;30155:419;;;:::o;30580:::-;30746:4;30784:2;30773:9;30769:18;30761:26;;30833:9;30827:4;30823:20;30819:1;30808:9;30804:17;30797:47;30861:131;30987:4;30861:131;:::i;:::-;30853:139;;30580:419;;;:::o;31005:::-;31171:4;31209:2;31198:9;31194:18;31186:26;;31258:9;31252:4;31248:20;31244:1;31233:9;31229:17;31222:47;31286:131;31412:4;31286:131;:::i;:::-;31278:139;;31005:419;;;:::o;31430:::-;31596:4;31634:2;31623:9;31619:18;31611:26;;31683:9;31677:4;31673:20;31669:1;31658:9;31654:17;31647:47;31711:131;31837:4;31711:131;:::i;:::-;31703:139;;31430:419;;;:::o;31855:::-;32021:4;32059:2;32048:9;32044:18;32036:26;;32108:9;32102:4;32098:20;32094:1;32083:9;32079:17;32072:47;32136:131;32262:4;32136:131;:::i;:::-;32128:139;;31855:419;;;:::o;32280:::-;32446:4;32484:2;32473:9;32469:18;32461:26;;32533:9;32527:4;32523:20;32519:1;32508:9;32504:17;32497:47;32561:131;32687:4;32561:131;:::i;:::-;32553:139;;32280:419;;;:::o;32705:::-;32871:4;32909:2;32898:9;32894:18;32886:26;;32958:9;32952:4;32948:20;32944:1;32933:9;32929:17;32922:47;32986:131;33112:4;32986:131;:::i;:::-;32978:139;;32705:419;;;:::o;33130:::-;33296:4;33334:2;33323:9;33319:18;33311:26;;33383:9;33377:4;33373:20;33369:1;33358:9;33354:17;33347:47;33411:131;33537:4;33411:131;:::i;:::-;33403:139;;33130:419;;;:::o;33555:::-;33721:4;33759:2;33748:9;33744:18;33736:26;;33808:9;33802:4;33798:20;33794:1;33783:9;33779:17;33772:47;33836:131;33962:4;33836:131;:::i;:::-;33828:139;;33555:419;;;:::o;33980:::-;34146:4;34184:2;34173:9;34169:18;34161:26;;34233:9;34227:4;34223:20;34219:1;34208:9;34204:17;34197:47;34261:131;34387:4;34261:131;:::i;:::-;34253:139;;33980:419;;;:::o;34405:::-;34571:4;34609:2;34598:9;34594:18;34586:26;;34658:9;34652:4;34648:20;34644:1;34633:9;34629:17;34622:47;34686:131;34812:4;34686:131;:::i;:::-;34678:139;;34405:419;;;:::o;34830:::-;34996:4;35034:2;35023:9;35019:18;35011:26;;35083:9;35077:4;35073:20;35069:1;35058:9;35054:17;35047:47;35111:131;35237:4;35111:131;:::i;:::-;35103:139;;34830:419;;;:::o;35255:::-;35421:4;35459:2;35448:9;35444:18;35436:26;;35508:9;35502:4;35498:20;35494:1;35483:9;35479:17;35472:47;35536:131;35662:4;35536:131;:::i;:::-;35528:139;;35255:419;;;:::o;35680:::-;35846:4;35884:2;35873:9;35869:18;35861:26;;35933:9;35927:4;35923:20;35919:1;35908:9;35904:17;35897:47;35961:131;36087:4;35961:131;:::i;:::-;35953:139;;35680:419;;;:::o;36105:::-;36271:4;36309:2;36298:9;36294:18;36286:26;;36358:9;36352:4;36348:20;36344:1;36333:9;36329:17;36322:47;36386:131;36512:4;36386:131;:::i;:::-;36378:139;;36105:419;;;:::o;36530:::-;36696:4;36734:2;36723:9;36719:18;36711:26;;36783:9;36777:4;36773:20;36769:1;36758:9;36754:17;36747:47;36811:131;36937:4;36811:131;:::i;:::-;36803:139;;36530:419;;;:::o;36955:::-;37121:4;37159:2;37148:9;37144:18;37136:26;;37208:9;37202:4;37198:20;37194:1;37183:9;37179:17;37172:47;37236:131;37362:4;37236:131;:::i;:::-;37228:139;;36955:419;;;:::o;37380:::-;37546:4;37584:2;37573:9;37569:18;37561:26;;37633:9;37627:4;37623:20;37619:1;37608:9;37604:17;37597:47;37661:131;37787:4;37661:131;:::i;:::-;37653:139;;37380:419;;;:::o;37805:::-;37971:4;38009:2;37998:9;37994:18;37986:26;;38058:9;38052:4;38048:20;38044:1;38033:9;38029:17;38022:47;38086:131;38212:4;38086:131;:::i;:::-;38078:139;;37805:419;;;:::o;38230:::-;38396:4;38434:2;38423:9;38419:18;38411:26;;38483:9;38477:4;38473:20;38469:1;38458:9;38454:17;38447:47;38511:131;38637:4;38511:131;:::i;:::-;38503:139;;38230:419;;;:::o;38655:::-;38821:4;38859:2;38848:9;38844:18;38836:26;;38908:9;38902:4;38898:20;38894:1;38883:9;38879:17;38872:47;38936:131;39062:4;38936:131;:::i;:::-;38928:139;;38655:419;;;:::o;39080:346::-;39235:4;39273:2;39262:9;39258:18;39250:26;;39286:133;39416:1;39405:9;39401:17;39392:6;39286:133;:::i;:::-;39080:346;;;;:::o;39432:222::-;39525:4;39563:2;39552:9;39548:18;39540:26;;39576:71;39644:1;39633:9;39629:17;39620:6;39576:71;:::i;:::-;39432:222;;;;:::o;39660:129::-;39694:6;39721:20;;:::i;:::-;39711:30;;39750:33;39778:4;39770:6;39750:33;:::i;:::-;39660:129;;;:::o;39795:75::-;39828:6;39861:2;39855:9;39845:19;;39795:75;:::o;39876:307::-;39937:4;40027:18;40019:6;40016:30;40013:56;;;40049:18;;:::i;:::-;40013:56;40087:29;40109:6;40087:29;:::i;:::-;40079:37;;40171:4;40165;40161:15;40153:23;;39876:307;;;:::o;40189:308::-;40251:4;40341:18;40333:6;40330:30;40327:56;;;40363:18;;:::i;:::-;40327:56;40401:29;40423:6;40401:29;:::i;:::-;40393:37;;40485:4;40479;40475:15;40467:23;;40189:308;;;:::o;40503:98::-;40554:6;40588:5;40582:12;40572:22;;40503:98;;;:::o;40607:99::-;40659:6;40693:5;40687:12;40677:22;;40607:99;;;:::o;40712:168::-;40795:11;40829:6;40824:3;40817:19;40869:4;40864:3;40860:14;40845:29;;40712:168;;;;:::o;40886:147::-;40987:11;41024:3;41009:18;;40886:147;;;;:::o;41039:169::-;41123:11;41157:6;41152:3;41145:19;41197:4;41192:3;41188:14;41173:29;;41039:169;;;;:::o;41214:148::-;41316:11;41353:3;41338:18;;41214:148;;;;:::o;41368:273::-;41408:3;41427:20;41445:1;41427:20;:::i;:::-;41422:25;;41461:20;41479:1;41461:20;:::i;:::-;41456:25;;41583:1;41547:34;41543:42;41540:1;41537:49;41534:75;;;41589:18;;:::i;:::-;41534:75;41633:1;41630;41626:9;41619:16;;41368:273;;;;:::o;41647:305::-;41687:3;41706:20;41724:1;41706:20;:::i;:::-;41701:25;;41740:20;41758:1;41740:20;:::i;:::-;41735:25;;41894:1;41826:66;41822:74;41819:1;41816:81;41813:107;;;41900:18;;:::i;:::-;41813:107;41944:1;41941;41937:9;41930:16;;41647:305;;;;:::o;41958:185::-;41998:1;42015:20;42033:1;42015:20;:::i;:::-;42010:25;;42049:20;42067:1;42049:20;:::i;:::-;42044:25;;42088:1;42078:35;;42093:18;;:::i;:::-;42078:35;42135:1;42132;42128:9;42123:14;;41958:185;;;;:::o;42149:348::-;42189:7;42212:20;42230:1;42212:20;:::i;:::-;42207:25;;42246:20;42264:1;42246:20;:::i;:::-;42241:25;;42434:1;42366:66;42362:74;42359:1;42356:81;42351:1;42344:9;42337:17;42333:105;42330:131;;;42441:18;;:::i;:::-;42330:131;42489:1;42486;42482:9;42471:20;;42149:348;;;;:::o;42503:191::-;42543:4;42563:20;42581:1;42563:20;:::i;:::-;42558:25;;42597:20;42615:1;42597:20;:::i;:::-;42592:25;;42636:1;42633;42630:8;42627:34;;;42641:18;;:::i;:::-;42627:34;42686:1;42683;42679:9;42671:17;;42503:191;;;;:::o;42700:::-;42740:4;42760:20;42778:1;42760:20;:::i;:::-;42755:25;;42794:20;42812:1;42794:20;:::i;:::-;42789:25;;42833:1;42830;42827:8;42824:34;;;42838:18;;:::i;:::-;42824:34;42883:1;42880;42876:9;42868:17;;42700:191;;;;:::o;42897:96::-;42934:7;42963:24;42981:5;42963:24;:::i;:::-;42952:35;;42897:96;;;:::o;42999:90::-;43033:7;43076:5;43069:13;43062:21;43051:32;;42999:90;;;:::o;43095:149::-;43131:7;43171:66;43164:5;43160:78;43149:89;;43095:149;;;:::o;43250:118::-;43287:7;43327:34;43320:5;43316:46;43305:57;;43250:118;;;:::o;43374:126::-;43411:7;43451:42;43444:5;43440:54;43429:65;;43374:126;;;:::o;43506:77::-;43543:7;43572:5;43561:16;;43506:77;;;:::o;43589:101::-;43625:7;43665:18;43658:5;43654:30;43643:41;;43589:101;;;:::o;43696:154::-;43780:6;43775:3;43770;43757:30;43842:1;43833:6;43828:3;43824:16;43817:27;43696:154;;;:::o;43856:307::-;43924:1;43934:113;43948:6;43945:1;43942:13;43934:113;;;44033:1;44028:3;44024:11;44018:18;44014:1;44009:3;44005:11;43998:39;43970:2;43967:1;43963:10;43958:15;;43934:113;;;44065:6;44062:1;44059:13;44056:101;;;44145:1;44136:6;44131:3;44127:16;44120:27;44056:101;43905:258;43856:307;;;:::o;44169:171::-;44208:3;44231:24;44249:5;44231:24;:::i;:::-;44222:33;;44277:4;44270:5;44267:15;44264:41;;;44285:18;;:::i;:::-;44264:41;44332:1;44325:5;44321:13;44314:20;;44169:171;;;:::o;44346:320::-;44390:6;44427:1;44421:4;44417:12;44407:22;;44474:1;44468:4;44464:12;44495:18;44485:81;;44551:4;44543:6;44539:17;44529:27;;44485:81;44613:2;44605:6;44602:14;44582:18;44579:38;44576:84;;;44632:18;;:::i;:::-;44576:84;44397:269;44346:320;;;:::o;44672:281::-;44755:27;44777:4;44755:27;:::i;:::-;44747:6;44743:40;44885:6;44873:10;44870:22;44849:18;44837:10;44834:34;44831:62;44828:88;;;44896:18;;:::i;:::-;44828:88;44936:10;44932:2;44925:22;44715:238;44672:281;;:::o;44959:233::-;44998:3;45021:24;45039:5;45021:24;:::i;:::-;45012:33;;45067:66;45060:5;45057:77;45054:103;;;45137:18;;:::i;:::-;45054:103;45184:1;45177:5;45173:13;45166:20;;44959:233;;;:::o;45198:176::-;45230:1;45247:20;45265:1;45247:20;:::i;:::-;45242:25;;45281:20;45299:1;45281:20;:::i;:::-;45276:25;;45320:1;45310:35;;45325:18;;:::i;:::-;45310:35;45366:1;45363;45359:9;45354:14;;45198:176;;;;:::o;45380:180::-;45428:77;45425:1;45418:88;45525:4;45522:1;45515:15;45549:4;45546:1;45539:15;45566:180;45614:77;45611:1;45604:88;45711:4;45708:1;45701:15;45735:4;45732:1;45725:15;45752:180;45800:77;45797:1;45790:88;45897:4;45894:1;45887:15;45921:4;45918:1;45911:15;45938:180;45986:77;45983:1;45976:88;46083:4;46080:1;46073:15;46107:4;46104:1;46097:15;46124:180;46172:77;46169:1;46162:88;46269:4;46266:1;46259:15;46293:4;46290:1;46283:15;46310:117;46419:1;46416;46409:12;46433:117;46542:1;46539;46532:12;46556:117;46665:1;46662;46655:12;46679:117;46788:1;46785;46778:12;46802:102;46843:6;46894:2;46890:7;46885:2;46878:5;46874:14;46870:28;46860:38;;46802:102;;;:::o;46910:221::-;47050:34;47046:1;47038:6;47034:14;47027:58;47119:4;47114:2;47106:6;47102:15;47095:29;46910:221;:::o;47137:181::-;47277:33;47273:1;47265:6;47261:14;47254:57;47137:181;:::o;47324:225::-;47464:34;47460:1;47452:6;47448:14;47441:58;47533:8;47528:2;47520:6;47516:15;47509:33;47324:225;:::o;47555:177::-;47695:29;47691:1;47683:6;47679:14;47672:53;47555:177;:::o;47738:229::-;47878:34;47874:1;47866:6;47862:14;47855:58;47947:12;47942:2;47934:6;47930:15;47923:37;47738:229;:::o;47973:222::-;48113:34;48109:1;48101:6;48097:14;48090:58;48182:5;48177:2;48169:6;48165:15;48158:30;47973:222;:::o;48201:::-;48341:34;48337:1;48329:6;48325:14;48318:58;48410:5;48405:2;48397:6;48393:15;48386:30;48201:222;:::o;48429:168::-;48569:20;48565:1;48557:6;48553:14;48546:44;48429:168;:::o;48603:224::-;48743:34;48739:1;48731:6;48727:14;48720:58;48812:7;48807:2;48799:6;48795:15;48788:32;48603:224;:::o;48833:236::-;48973:34;48969:1;48961:6;48957:14;48950:58;49042:19;49037:2;49029:6;49025:15;49018:44;48833:236;:::o;49075:168::-;49215:20;49211:1;49203:6;49199:14;49192:44;49075:168;:::o;49249:180::-;49389:32;49385:1;49377:6;49373:14;49366:56;49249:180;:::o;49435:244::-;49575:34;49571:1;49563:6;49559:14;49552:58;49644:27;49639:2;49631:6;49627:15;49620:52;49435:244;:::o;49685:170::-;49825:22;49821:1;49813:6;49809:14;49802:46;49685:170;:::o;49861:230::-;50001:34;49997:1;49989:6;49985:14;49978:58;50070:13;50065:2;50057:6;50053:15;50046:38;49861:230;:::o;50097:169::-;50237:21;50233:1;50225:6;50221:14;50214:45;50097:169;:::o;50272:179::-;50412:31;50408:1;50400:6;50396:14;50389:55;50272:179;:::o;50457:225::-;50597:34;50593:1;50585:6;50581:14;50574:58;50666:8;50661:2;50653:6;50649:15;50642:33;50457:225;:::o;50688:155::-;50828:7;50824:1;50816:6;50812:14;50805:31;50688:155;:::o;50849:175::-;50989:27;50985:1;50977:6;50973:14;50966:51;50849:175;:::o;51030:182::-;51170:34;51166:1;51158:6;51154:14;51147:58;51030:182;:::o;51218:234::-;51358:34;51354:1;51346:6;51342:14;51335:58;51427:17;51422:2;51414:6;51410:15;51403:42;51218:234;:::o;51458:176::-;51598:28;51594:1;51586:6;51582:14;51575:52;51458:176;:::o;51640:237::-;51780:34;51776:1;51768:6;51764:14;51757:58;51849:20;51844:2;51836:6;51832:15;51825:45;51640:237;:::o;51883:221::-;52023:34;52019:1;52011:6;52007:14;52000:58;52092:4;52087:2;52079:6;52075:15;52068:29;51883:221;:::o;52110:114::-;;:::o;52230:166::-;52370:18;52366:1;52358:6;52354:14;52347:42;52230:166;:::o;52402:238::-;52542:34;52538:1;52530:6;52526:14;52519:58;52611:21;52606:2;52598:6;52594:15;52587:46;52402:238;:::o;52646:179::-;52786:31;52782:1;52774:6;52770:14;52763:55;52646:179;:::o;52831:220::-;52971:34;52967:1;52959:6;52955:14;52948:58;53040:3;53035:2;53027:6;53023:15;53016:28;52831:220;:::o;53057:233::-;53197:34;53193:1;53185:6;53181:14;53174:58;53266:16;53261:2;53253:6;53249:15;53242:41;53057:233;:::o;53296:181::-;53436:33;53432:1;53424:6;53420:14;53413:57;53296:181;:::o;53483:234::-;53623:34;53619:1;53611:6;53607:14;53600:58;53692:17;53687:2;53679:6;53675:15;53668:42;53483:234;:::o;53723:232::-;53863:34;53859:1;53851:6;53847:14;53840:58;53932:15;53927:2;53919:6;53915:15;53908:40;53723:232;:::o;53961:221::-;54101:34;54097:1;54089:6;54085:14;54078:58;54170:4;54165:2;54157:6;54153:15;54146:29;53961:221;:::o;54188:122::-;54261:24;54279:5;54261:24;:::i;:::-;54254:5;54251:35;54241:63;;54300:1;54297;54290:12;54241:63;54188:122;:::o;54316:116::-;54386:21;54401:5;54386:21;:::i;:::-;54379:5;54376:32;54366:60;;54422:1;54419;54412:12;54366:60;54316:116;:::o;54438:120::-;54510:23;54527:5;54510:23;:::i;:::-;54503:5;54500:34;54490:62;;54548:1;54545;54538:12;54490:62;54438:120;:::o;54564:122::-;54637:24;54655:5;54637:24;:::i;:::-;54630:5;54627:35;54617:63;;54676:1;54673;54666:12;54617:63;54564:122;:::o

Swarm Source

ipfs://321f0f6466446899e098dfe14836f1376b58bd984c2b2234f33d683a3a585d66
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.