ETH Price: $3,487.36 (+3.60%)
Gas: 2 Gwei

Token

CrazyYugoCarClub (CYCC)
 

Overview

Max Total Supply

483 CYCC

Holders

82

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
yucai-.eth
Balance
1 CYCC
0xaa6f81a48768f1eb8c6c63dd349aa115e08b117b
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:
CrazyYugoCarClub

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-03-11
*/

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

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

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

    uint256 private _status;

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

        _;
        _status = _NOT_ENTERED;
    }
}

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

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

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

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

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

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

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

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

  struct TokenOwnership {
    address addr;
    uint64 startTimestamp;
  }

  struct AddressData {
    uint128 balance;
    uint128 numberMinted;
  }

  uint256 private currentIndex = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    uint256 updatedIndex = startTokenId;

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

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

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

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

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

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

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

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

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

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


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

  uint256 public  PRICE = 0.0399 ether;

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

  bool public _revelNFT = false;
  string private _baseTokenURI;
  string private _uriBeforeRevel;
  uint private stopat = 14165;
  uint private reserve = 333;

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

  mapping(address => bool) private whitelistedAddresses;

  constructor() ERC721A("CrazyYugoCarClub","CYCC", MaxMintPerBatch_, TotalCollectionSize_) {
    _uriBeforeRevel = "https://gateway.pinata.cloud/ipfs/QmZjRccf64XESkv65Gy3oXoXPWuUhvRsuC9Rgf6JsBFwaT";
  }

  modifier callerIsUser() {
    require(tx.origin == msg.sender, "The caller is another contract");
    _;
  }
 
  function mint(uint256 quantity) external payable callerIsUser {
    require(status == 1 && whitelistedAddresses[msg.sender] || status == 2 , "Sale is not Active");
    require(totalSupply() + quantity <= collectionSize - reserve, "reached max supply");
    require( ( status == 1 && numberMinted(msg.sender) + quantity <= MAX_PER_Address ) || status == 2 , "Quantity exceeds allowed Mints" );
    require(  quantity <= MAX_PER_Transtion,"can not mint this many");
    require(msg.value >= PRICE * quantity, "Need to send more ETH.");
    _safeMint(msg.sender, quantity);   
    if(totalSupply() >= stopat) {status = 0;}
  }

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

  function isWhitelisted(address _user) public view returns (bool) {
    return whitelistedAddresses[_user];
  }

  
  function addNewWhitelistUsers(address[] calldata _users) public onlyOwner {
    // ["","",""]
    for(uint i=0;i<_users.length;i++)
        whitelistedAddresses[_users[i]] = true;
  }

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

  function setBaseURI(string memory baseURI) external onlyOwner {
    _baseTokenURI = baseURI;
  }
  function _baseURI() internal view virtual override returns (string memory) {
    return _baseTokenURI;
  }
  function numberMinted(address owner) public view returns (uint256) {
    return _numberMinted(owner);
  }
  function getOwnershipData(uint256 tokenId)
    external
    view
    returns (TokenOwnership memory)
  {
    return ownershipOf(tokenId);
  }
  function withdrawMoney() external onlyOwner nonReentrant {
    (bool success, ) = msg.sender.call{value: address(this).balance}("");
    require(success, "Transfer failed.");
  }
  function changeRevelStatus() external onlyOwner {
    _revelNFT = !_revelNFT;
  }
  function changeMintPrice(uint256 _newPrice) external onlyOwner
  {
      PRICE = _newPrice;
  }
  function changeMAX_PER_Transtion(uint256 q) external onlyOwner
  {
      MAX_PER_Transtion = q;
  }
  function changeMAX_PER_Address(uint256 q) external onlyOwner
  {
      MAX_PER_Address = q;
  }
  function setStatus(uint256 s)external onlyOwner{
      status = s;
  }
  function getStatus()public view returns(uint){
      return status;
  }
  function getPrice()public view returns(uint){
      return PRICE;
  }
  function giveaway(address a, uint q)public onlyOwner{
    _safeMint(a, q);
  }
    function setStop(uint256 s)external onlyOwner{
      stopat = s;
  }
  function setReserve(uint256 r)external onlyOwner{
      reserve = r;
  }
}

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":"_users","type":"address[]"}],"name":"addNewWhitelistUsers","outputs":[],"stateMutability":"nonpayable","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":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"uint256","name":"q","type":"uint256"}],"name":"giveaway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"r","type":"uint256"}],"name":"setReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"}],"name":"setStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"}],"name":"setStop","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"}]

60c0604052600060015560006008556014600a556005600b55668dc0d6ae89c000600c556000600d60006101000a81548160ff02191690831515021790555061375560105561014d60115560006012553480156200005c57600080fd5b506040518060400160405280601081526020017f4372617a795975676f436172436c7562000000000000000000000000000000008152506040518060400160405280600481526020017f43594343000000000000000000000000000000000000000000000000000000008152506032613755620000ee620000e26200020060201b60201c565b6200020860201b60201c565b6000811162000134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012b90620003ec565b60405180910390fd5b600082116200017a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017190620003ca565b60405180910390fd5b836002908051906020019062000192929190620002cc565b508260039080519060200190620001ab929190620002cc565b508160a081815250508060808181525050505050506001600981905550604051806080016040528060508152602001620057d160509139600f9080519060200190620001f9929190620002cc565b5062000522565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002da906200041f565b90600052602060002090601f016020900481019282620002fe57600085556200034a565b82601f106200031957805160ff19168380011785556200034a565b828001600101855582156200034a579182015b82811115620003495782518255916020019190600101906200032c565b5b5090506200035991906200035d565b5090565b5b80821115620003785760008160009055506001016200035e565b5090565b60006200038b6027836200040e565b9150620003988262000484565b604082019050919050565b6000620003b2602e836200040e565b9150620003bf82620004d3565b604082019050919050565b60006020820190508181036000830152620003e5816200037c565b9050919050565b600060208201905081810360008301526200040781620003a3565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200043857607f821691505b602082108114156200044f576200044e62000455565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a05161527b62000556600039600081816129ff01528181612a2801526131a7015260006118ec015261527b6000f3fe60806040526004361061025c5760003560e01c80636352211e11610144578063ac446002116100b6578063c87b56dd1161007a578063c87b56dd146108bf578063d04950a1146108fc578063d7224ba014610927578063dc33e68114610952578063e985e9c51461098f578063f2fde38b146109cc5761025c565b8063ac44600214610816578063af7b26e91461082d578063b88d4fde14610856578063bd0a84391461087f578063c1f127e2146108965761025c565b80638da5cb5b116101085780638da5cb5b146107135780639231ab2a1461073e57806395d89b411461077b57806398d5fdca146107a6578063a0712d68146107d1578063a22cb465146107ed5761025c565b80636352211e1461062e57806369ba1a751461066b57806370a0823114610694578063715018a6146106d15780638d859f3e146106e85761025c565b80632f2ffc57116101dd57806342842e0e116101a157806342842e0e146105205780634e69d560146105495780634f6ccce71461057457806355f804b3146105b15780635c37809d146105da57806362c6f7b9146106035761025c565b80632f2ffc57146104295780632f745c59146104545780633af32abf146104915780633fd17366146104ce5780634256dbe3146104f75761025c565b8063095ea7b311610224578063095ea7b31461035857806318160ddd146103815780631d428c12146103ac578063200d2ed2146103d557806323b872dd146104005761025c565b80630199e3471461026157806301ffc9a71461028a578063050225ea146102c757806306fdde03146102f0578063081812fc1461031b575b600080fd5b34801561026d57600080fd5b5061028860048036038101906102839190613b13565b6109f5565b005b34801561029657600080fd5b506102b160048036038101906102ac9190613a70565b610a7b565b6040516102be9190614117565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906139e3565b610bc5565b005b3480156102fc57600080fd5b50610305610c4f565b6040516103129190614132565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613b13565b610ce1565b60405161034f91906140b0565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a91906139e3565b610d66565b005b34801561038d57600080fd5b50610396610e7f565b6040516103a3919061450f565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613a23565b610e89565b005b3480156103e157600080fd5b506103ea610faa565b6040516103f7919061450f565b60405180910390f35b34801561040c57600080fd5b50610427600480360381019061042291906138cd565b610fb0565b005b34801561043557600080fd5b5061043e610fc0565b60405161044b919061450f565b60405180910390f35b34801561046057600080fd5b5061047b600480360381019061047691906139e3565b610fc6565b604051610488919061450f565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613860565b6111c4565b6040516104c59190614117565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613b13565b61121a565b005b34801561050357600080fd5b5061051e60048036038101906105199190613b13565b6112a0565b005b34801561052c57600080fd5b50610547600480360381019061054291906138cd565b611326565b005b34801561055557600080fd5b5061055e611346565b60405161056b919061450f565b60405180910390f35b34801561058057600080fd5b5061059b60048036038101906105969190613b13565b611350565b6040516105a8919061450f565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190613aca565b6113a3565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190613aca565b611439565b005b34801561060f57600080fd5b506106186114cf565b6040516106259190614117565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190613b13565b6114e2565b60405161066291906140b0565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613b13565b6114f8565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190613860565b61157e565b6040516106c8919061450f565b60405180910390f35b3480156106dd57600080fd5b506106e6611667565b005b3480156106f457600080fd5b506106fd6116ef565b60405161070a919061450f565b60405180910390f35b34801561071f57600080fd5b506107286116f5565b60405161073591906140b0565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190613b13565b61171e565b60405161077291906144f4565b60405180910390f35b34801561078757600080fd5b50610790611736565b60405161079d9190614132565b60405180910390f35b3480156107b257600080fd5b506107bb6117c8565b6040516107c8919061450f565b60405180910390f35b6107eb60048036038101906107e69190613b13565b6117d2565b005b3480156107f957600080fd5b50610814600480360381019061080f91906139a3565b611a97565b005b34801561082257600080fd5b5061082b611c18565b005b34801561083957600080fd5b50610854600480360381019061084f9190613b13565b611d99565b005b34801561086257600080fd5b5061087d60048036038101906108789190613920565b611e1f565b005b34801561088b57600080fd5b50610894611e7b565b005b3480156108a257600080fd5b506108bd60048036038101906108b89190613b13565b611f23565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190613b13565b611fa9565b6040516108f39190614132565b60405180910390f35b34801561090857600080fd5b506109116120f8565b60405161091e919061450f565b60405180910390f35b34801561093357600080fd5b5061093c6120fe565b604051610949919061450f565b60405180910390f35b34801561095e57600080fd5b5061097960048036038101906109749190613860565b612104565b604051610986919061450f565b60405180910390f35b34801561099b57600080fd5b506109b660048036038101906109b1919061388d565b612116565b6040516109c39190614117565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613860565b6121aa565b005b6109fd6122a2565b73ffffffffffffffffffffffffffffffffffffffff16610a1b6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a68906142f4565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b4657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bae57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bbe5750610bbd826122aa565b5b9050919050565b610bcd6122a2565b73ffffffffffffffffffffffffffffffffffffffff16610beb6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c38906142f4565b60405180910390fd5b610c4b8282612314565b5050565b606060028054610c5e9061489e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8a9061489e565b8015610cd75780601f10610cac57610100808354040283529160200191610cd7565b820191906000526020600020905b815481529060010190602001808311610cba57829003601f168201915b5050505050905090565b6000610cec82612332565b610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d22906144b4565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d71826114e2565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990614374565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e016122a2565b73ffffffffffffffffffffffffffffffffffffffff161480610e305750610e2f81610e2a6122a2565b612116565b5b610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690614254565b60405180910390fd5b610e7a838383612340565b505050565b6000600154905090565b610e916122a2565b73ffffffffffffffffffffffffffffffffffffffff16610eaf6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc906142f4565b60405180910390fd5b60005b82829050811015610fa557600160136000858585818110610f2c57610f2b614a08565b5b9050602002016020810190610f419190613860565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f9d90614901565b915050610f08565b505050565b60125481565b610fbb8383836123f2565b505050565b600b5481565b6000610fd18361157e565b8210611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990614154565b60405180910390fd5b600061101c610e7f565b905060008060005b83811015611182576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461111657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116e578684141561115f5781955050505050506111be565b838061116a90614901565b9450505b50808061117a90614901565b915050611024565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590614454565b60405180910390fd5b92915050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6112226122a2565b73ffffffffffffffffffffffffffffffffffffffff166112406116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906142f4565b60405180910390fd5b80600c8190555050565b6112a86122a2565b73ffffffffffffffffffffffffffffffffffffffff166112c66116f5565b73ffffffffffffffffffffffffffffffffffffffff161461131c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611313906142f4565b60405180910390fd5b8060118190555050565b61134183838360405180602001604052806000815250611e1f565b505050565b6000601254905090565b600061135a610e7f565b821061139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611392906141b4565b60405180910390fd5b819050919050565b6113ab6122a2565b73ffffffffffffffffffffffffffffffffffffffff166113c96116f5565b73ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611416906142f4565b60405180910390fd5b80600e90805190602001906114359291906135e4565b5050565b6114416122a2565b73ffffffffffffffffffffffffffffffffffffffff1661145f6116f5565b73ffffffffffffffffffffffffffffffffffffffff16146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906142f4565b60405180910390fd5b80600f90805190602001906114cb9291906135e4565b5050565b600d60009054906101000a900460ff1681565b60006114ed826129ab565b600001519050919050565b6115006122a2565b73ffffffffffffffffffffffffffffffffffffffff1661151e6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b906142f4565b60405180910390fd5b8060128190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e690614294565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61166f6122a2565b73ffffffffffffffffffffffffffffffffffffffff1661168d6116f5565b73ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da906142f4565b60405180910390fd5b6116ed6000612bae565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61172661366a565b61172f826129ab565b9050919050565b6060600380546117459061489e565b80601f01602080910402602001604051908101604052809291908181526020018280546117719061489e565b80156117be5780601f10611793576101008083540402835291602001916117be565b820191906000526020600020905b8154815290600101906020018083116117a157829003601f168201915b5050505050905090565b6000600c54905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790614234565b60405180910390fd5b600160125414801561189b5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118a857506002601254145b6118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90614214565b60405180910390fd5b6011547f0000000000000000000000000000000000000000000000000000000000000000611915919061475a565b8161191e610e7f565b6119289190614645565b1115611969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611960906142b4565b60405180910390fd5b60016012541480156119905750600b548161198333612104565b61198d9190614645565b11155b8061199d57506002601254145b6119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390614274565b60405180910390fd5b600a54811115611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1890614434565b60405180910390fd5b80600c54611a2f91906146cc565b341015611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a68906143d4565b60405180910390fd5b611a7b3382612314565b601054611a86610e7f565b10611a945760006012819055505b50565b611a9f6122a2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0490614334565b60405180910390fd5b8060076000611b1a6122a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611bc76122a2565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c0c9190614117565b60405180910390a35050565b611c206122a2565b73ffffffffffffffffffffffffffffffffffffffff16611c3e6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b906142f4565b60405180910390fd5b60026009541415611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd190614474565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611d089061409b565b60006040518083038185875af1925050503d8060008114611d45576040519150601f19603f3d011682016040523d82523d6000602084013e611d4a565b606091505b5050905080611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590614394565b60405180910390fd5b506001600981905550565b611da16122a2565b73ffffffffffffffffffffffffffffffffffffffff16611dbf6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c906142f4565b60405180910390fd5b80600a8190555050565b611e2a8484846123f2565b611e3684848484612c72565b611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c906143b4565b60405180910390fd5b50505050565b611e836122a2565b73ffffffffffffffffffffffffffffffffffffffff16611ea16116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee906142f4565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b611f2b6122a2565b73ffffffffffffffffffffffffffffffffffffffff16611f496116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f96906142f4565b60405180910390fd5b8060108190555050565b6060611fb482612332565b611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90614314565b60405180910390fd5b600d60009054906101000a900460ff1615612065576000612012612e09565b90506000815111612032576040518060200160405280600081525061205d565b8061203c84612e9b565b60405160200161204d929190614077565b6040516020818303038152906040525b9150506120f3565b600f80546120729061489e565b80601f016020809104026020016040519081016040528092919081815260200182805461209e9061489e565b80156120eb5780601f106120c0576101008083540402835291602001916120eb565b820191906000526020600020905b8154815290600101906020018083116120ce57829003601f168201915b505050505090505b919050565b600a5481565b60085481565b600061210f82612ffc565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6121b26122a2565b73ffffffffffffffffffffffffffffffffffffffff166121d06116f5565b73ffffffffffffffffffffffffffffffffffffffff1614612226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221d906142f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90614174565b60405180910390fd5b61229f81612bae565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61232e8282604051806020016040528060008152506130e5565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006123fd826129ab565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166124246122a2565b73ffffffffffffffffffffffffffffffffffffffff16148061248057506124496122a2565b73ffffffffffffffffffffffffffffffffffffffff1661246884610ce1565b73ffffffffffffffffffffffffffffffffffffffff16145b8061249c575061249b82600001516124966122a2565b612116565b5b9050806124de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d590614354565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612547906142d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156125c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b7906141d4565b60405180910390fd5b6125cd85858560016135c5565b6125dd6000848460000151612340565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661264b9190614726565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166126ef91906145ff565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846127f59190614645565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561293b5761286b81612332565b1561293a576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46129a386868660016135cb565b505050505050565b6129b361366a565b6129bc82612332565b6129fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f290614194565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008310612a5f5760017f000000000000000000000000000000000000000000000000000000000000000084612a52919061475a565b612a5c9190614645565b90505b60008390505b818110612b6d576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612b5957809350505050612ba9565b508080612b6590614874565b915050612a65565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba090614494565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612c938473ffffffffffffffffffffffffffffffffffffffff166135d1565b15612dfc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612cbc6122a2565b8786866040518563ffffffff1660e01b8152600401612cde94939291906140cb565b602060405180830381600087803b158015612cf857600080fd5b505af1925050508015612d2957506040513d601f19601f82011682018060405250810190612d269190613a9d565b60015b612dac573d8060008114612d59576040519150601f19603f3d011682016040523d82523d6000602084013e612d5e565b606091505b50600081511415612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b906143b4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e01565b600190505b949350505050565b6060600e8054612e189061489e565b80601f0160208091040260200160405190810160405280929190818152602001828054612e449061489e565b8015612e915780601f10612e6657610100808354040283529160200191612e91565b820191906000526020600020905b815481529060010190602001808311612e7457829003601f168201915b5050505050905090565b60606000821415612ee3576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612ff7565b600082905060005b60008214612f15578080612efe90614901565b915050600a82612f0e919061469b565b9150612eeb565b60008167ffffffffffffffff811115612f3157612f30614a37565b5b6040519080825280601f01601f191660200182016040528015612f635781602001600182028036833780820191505090505b5090505b60008514612ff057600182612f7c919061475a565b9150600a85612f8b919061494a565b6030612f979190614645565b60f81b818381518110612fad57612fac614a08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612fe9919061469b565b9450612f67565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561306d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613064906141f4565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561315c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315390614414565b60405180910390fd5b61316581612332565b156131a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319c906143f4565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115613208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ff906144d4565b60405180910390fd5b61321560008583866135c5565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050604051806040016040528085836000015161331291906145ff565b6fffffffffffffffffffffffffffffffff16815260200185836020015161333991906145ff565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156135a857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135486000888488612c72565b613587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357e906143b4565b60405180910390fd5b818061359290614901565b92505080806135a090614901565b9150506134d7565b50806001819055506135bd60008785886135cb565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b8280546135f09061489e565b90600052602060002090601f0160209004810192826136125760008555613659565b82601f1061362b57805160ff1916838001178555613659565b82800160010185558215613659579182015b8281111561365857825182559160200191906001019061363d565b5b50905061366691906136a4565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156136bd5760008160009055506001016136a5565b5090565b60006136d46136cf8461454f565b61452a565b9050828152602081018484840111156136f0576136ef614a75565b5b6136fb848285614832565b509392505050565b600061371661371184614580565b61452a565b90508281526020810184848401111561373257613731614a75565b5b61373d848285614832565b509392505050565b600081359050613754816151e9565b92915050565b60008083601f8401126137705761376f614a6b565b5b8235905067ffffffffffffffff81111561378d5761378c614a66565b5b6020830191508360208202830111156137a9576137a8614a70565b5b9250929050565b6000813590506137bf81615200565b92915050565b6000813590506137d481615217565b92915050565b6000815190506137e981615217565b92915050565b600082601f83011261380457613803614a6b565b5b81356138148482602086016136c1565b91505092915050565b600082601f83011261383257613831614a6b565b5b8135613842848260208601613703565b91505092915050565b60008135905061385a8161522e565b92915050565b60006020828403121561387657613875614a7f565b5b600061388484828501613745565b91505092915050565b600080604083850312156138a4576138a3614a7f565b5b60006138b285828601613745565b92505060206138c385828601613745565b9150509250929050565b6000806000606084860312156138e6576138e5614a7f565b5b60006138f486828701613745565b935050602061390586828701613745565b92505060406139168682870161384b565b9150509250925092565b6000806000806080858703121561393a57613939614a7f565b5b600061394887828801613745565b945050602061395987828801613745565b935050604061396a8782880161384b565b925050606085013567ffffffffffffffff81111561398b5761398a614a7a565b5b613997878288016137ef565b91505092959194509250565b600080604083850312156139ba576139b9614a7f565b5b60006139c885828601613745565b92505060206139d9858286016137b0565b9150509250929050565b600080604083850312156139fa576139f9614a7f565b5b6000613a0885828601613745565b9250506020613a198582860161384b565b9150509250929050565b60008060208385031215613a3a57613a39614a7f565b5b600083013567ffffffffffffffff811115613a5857613a57614a7a565b5b613a648582860161375a565b92509250509250929050565b600060208284031215613a8657613a85614a7f565b5b6000613a94848285016137c5565b91505092915050565b600060208284031215613ab357613ab2614a7f565b5b6000613ac1848285016137da565b91505092915050565b600060208284031215613ae057613adf614a7f565b5b600082013567ffffffffffffffff811115613afe57613afd614a7a565b5b613b0a8482850161381d565b91505092915050565b600060208284031215613b2957613b28614a7f565b5b6000613b378482850161384b565b91505092915050565b613b498161478e565b82525050565b613b588161478e565b82525050565b613b67816147a0565b82525050565b6000613b78826145b1565b613b8281856145c7565b9350613b92818560208601614841565b613b9b81614a84565b840191505092915050565b6000613bb1826145bc565b613bbb81856145e3565b9350613bcb818560208601614841565b613bd481614a84565b840191505092915050565b6000613bea826145bc565b613bf481856145f4565b9350613c04818560208601614841565b80840191505092915050565b6000613c1d6022836145e3565b9150613c2882614a95565b604082019050919050565b6000613c406026836145e3565b9150613c4b82614ae4565b604082019050919050565b6000613c63602a836145e3565b9150613c6e82614b33565b604082019050919050565b6000613c866023836145e3565b9150613c9182614b82565b604082019050919050565b6000613ca96025836145e3565b9150613cb482614bd1565b604082019050919050565b6000613ccc6031836145e3565b9150613cd782614c20565b604082019050919050565b6000613cef6012836145e3565b9150613cfa82614c6f565b602082019050919050565b6000613d12601e836145e3565b9150613d1d82614c98565b602082019050919050565b6000613d356039836145e3565b9150613d4082614cc1565b604082019050919050565b6000613d58601e836145e3565b9150613d6382614d10565b602082019050919050565b6000613d7b602b836145e3565b9150613d8682614d39565b604082019050919050565b6000613d9e6012836145e3565b9150613da982614d88565b602082019050919050565b6000613dc16026836145e3565b9150613dcc82614db1565b604082019050919050565b6000613de46020836145e3565b9150613def82614e00565b602082019050919050565b6000613e07602f836145e3565b9150613e1282614e29565b604082019050919050565b6000613e2a601a836145e3565b9150613e3582614e78565b602082019050919050565b6000613e4d6032836145e3565b9150613e5882614ea1565b604082019050919050565b6000613e706022836145e3565b9150613e7b82614ef0565b604082019050919050565b6000613e936000836145d8565b9150613e9e82614f3f565b600082019050919050565b6000613eb66010836145e3565b9150613ec182614f42565b602082019050919050565b6000613ed96033836145e3565b9150613ee482614f6b565b604082019050919050565b6000613efc6016836145e3565b9150613f0782614fba565b602082019050919050565b6000613f1f601d836145e3565b9150613f2a82614fe3565b602082019050919050565b6000613f426021836145e3565b9150613f4d8261500c565b604082019050919050565b6000613f656016836145e3565b9150613f708261505b565b602082019050919050565b6000613f88602e836145e3565b9150613f9382615084565b604082019050919050565b6000613fab601f836145e3565b9150613fb6826150d3565b602082019050919050565b6000613fce602f836145e3565b9150613fd9826150fc565b604082019050919050565b6000613ff1602d836145e3565b9150613ffc8261514b565b604082019050919050565b60006140146022836145e3565b915061401f8261519a565b604082019050919050565b6040820160008201516140406000850182613b40565b5060208201516140536020850182614068565b50505050565b61406281614814565b82525050565b6140718161481e565b82525050565b60006140838285613bdf565b915061408f8284613bdf565b91508190509392505050565b60006140a682613e86565b9150819050919050565b60006020820190506140c56000830184613b4f565b92915050565b60006080820190506140e06000830187613b4f565b6140ed6020830186613b4f565b6140fa6040830185614059565b818103606083015261410c8184613b6d565b905095945050505050565b600060208201905061412c6000830184613b5e565b92915050565b6000602082019050818103600083015261414c8184613ba6565b905092915050565b6000602082019050818103600083015261416d81613c10565b9050919050565b6000602082019050818103600083015261418d81613c33565b9050919050565b600060208201905081810360008301526141ad81613c56565b9050919050565b600060208201905081810360008301526141cd81613c79565b9050919050565b600060208201905081810360008301526141ed81613c9c565b9050919050565b6000602082019050818103600083015261420d81613cbf565b9050919050565b6000602082019050818103600083015261422d81613ce2565b9050919050565b6000602082019050818103600083015261424d81613d05565b9050919050565b6000602082019050818103600083015261426d81613d28565b9050919050565b6000602082019050818103600083015261428d81613d4b565b9050919050565b600060208201905081810360008301526142ad81613d6e565b9050919050565b600060208201905081810360008301526142cd81613d91565b9050919050565b600060208201905081810360008301526142ed81613db4565b9050919050565b6000602082019050818103600083015261430d81613dd7565b9050919050565b6000602082019050818103600083015261432d81613dfa565b9050919050565b6000602082019050818103600083015261434d81613e1d565b9050919050565b6000602082019050818103600083015261436d81613e40565b9050919050565b6000602082019050818103600083015261438d81613e63565b9050919050565b600060208201905081810360008301526143ad81613ea9565b9050919050565b600060208201905081810360008301526143cd81613ecc565b9050919050565b600060208201905081810360008301526143ed81613eef565b9050919050565b6000602082019050818103600083015261440d81613f12565b9050919050565b6000602082019050818103600083015261442d81613f35565b9050919050565b6000602082019050818103600083015261444d81613f58565b9050919050565b6000602082019050818103600083015261446d81613f7b565b9050919050565b6000602082019050818103600083015261448d81613f9e565b9050919050565b600060208201905081810360008301526144ad81613fc1565b9050919050565b600060208201905081810360008301526144cd81613fe4565b9050919050565b600060208201905081810360008301526144ed81614007565b9050919050565b6000604082019050614509600083018461402a565b92915050565b60006020820190506145246000830184614059565b92915050565b6000614534614545565b905061454082826148d0565b919050565b6000604051905090565b600067ffffffffffffffff82111561456a57614569614a37565b5b61457382614a84565b9050602081019050919050565b600067ffffffffffffffff82111561459b5761459a614a37565b5b6145a482614a84565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061460a826147d8565b9150614615836147d8565b9250826fffffffffffffffffffffffffffffffff0382111561463a5761463961497b565b5b828201905092915050565b600061465082614814565b915061465b83614814565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146905761468f61497b565b5b828201905092915050565b60006146a682614814565b91506146b183614814565b9250826146c1576146c06149aa565b5b828204905092915050565b60006146d782614814565b91506146e283614814565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561471b5761471a61497b565b5b828202905092915050565b6000614731826147d8565b915061473c836147d8565b92508282101561474f5761474e61497b565b5b828203905092915050565b600061476582614814565b915061477083614814565b9250828210156147835761478261497b565b5b828203905092915050565b6000614799826147f4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561485f578082015181840152602081019050614844565b8381111561486e576000848401525b50505050565b600061487f82614814565b915060008214156148935761489261497b565b5b600182039050919050565b600060028204905060018216806148b657607f821691505b602082108114156148ca576148c96149d9565b5b50919050565b6148d982614a84565b810181811067ffffffffffffffff821117156148f8576148f7614a37565b5b80604052505050565b600061490c82614814565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561493f5761493e61497b565b5b600182019050919050565b600061495582614814565b915061496083614814565b9250826149705761496f6149aa565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f5175616e74697479206578636565647320616c6c6f776564204d696e74730000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6151f28161478e565b81146151fd57600080fd5b50565b615209816147a0565b811461521457600080fd5b50565b615220816147ac565b811461522b57600080fd5b50565b61523781614814565b811461524257600080fd5b5056fea26469706673582212203910413d0cbd48545d125fe8dd3c9d5b7ac69ef27f68f51bc444f0397053ca7d64736f6c6343000807003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d5a6a5263636636345845536b7636354779336f586f585057755568765273754339526766364a734246776154

Deployed Bytecode

0x60806040526004361061025c5760003560e01c80636352211e11610144578063ac446002116100b6578063c87b56dd1161007a578063c87b56dd146108bf578063d04950a1146108fc578063d7224ba014610927578063dc33e68114610952578063e985e9c51461098f578063f2fde38b146109cc5761025c565b8063ac44600214610816578063af7b26e91461082d578063b88d4fde14610856578063bd0a84391461087f578063c1f127e2146108965761025c565b80638da5cb5b116101085780638da5cb5b146107135780639231ab2a1461073e57806395d89b411461077b57806398d5fdca146107a6578063a0712d68146107d1578063a22cb465146107ed5761025c565b80636352211e1461062e57806369ba1a751461066b57806370a0823114610694578063715018a6146106d15780638d859f3e146106e85761025c565b80632f2ffc57116101dd57806342842e0e116101a157806342842e0e146105205780634e69d560146105495780634f6ccce71461057457806355f804b3146105b15780635c37809d146105da57806362c6f7b9146106035761025c565b80632f2ffc57146104295780632f745c59146104545780633af32abf146104915780633fd17366146104ce5780634256dbe3146104f75761025c565b8063095ea7b311610224578063095ea7b31461035857806318160ddd146103815780631d428c12146103ac578063200d2ed2146103d557806323b872dd146104005761025c565b80630199e3471461026157806301ffc9a71461028a578063050225ea146102c757806306fdde03146102f0578063081812fc1461031b575b600080fd5b34801561026d57600080fd5b5061028860048036038101906102839190613b13565b6109f5565b005b34801561029657600080fd5b506102b160048036038101906102ac9190613a70565b610a7b565b6040516102be9190614117565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906139e3565b610bc5565b005b3480156102fc57600080fd5b50610305610c4f565b6040516103129190614132565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613b13565b610ce1565b60405161034f91906140b0565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a91906139e3565b610d66565b005b34801561038d57600080fd5b50610396610e7f565b6040516103a3919061450f565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613a23565b610e89565b005b3480156103e157600080fd5b506103ea610faa565b6040516103f7919061450f565b60405180910390f35b34801561040c57600080fd5b50610427600480360381019061042291906138cd565b610fb0565b005b34801561043557600080fd5b5061043e610fc0565b60405161044b919061450f565b60405180910390f35b34801561046057600080fd5b5061047b600480360381019061047691906139e3565b610fc6565b604051610488919061450f565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613860565b6111c4565b6040516104c59190614117565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613b13565b61121a565b005b34801561050357600080fd5b5061051e60048036038101906105199190613b13565b6112a0565b005b34801561052c57600080fd5b50610547600480360381019061054291906138cd565b611326565b005b34801561055557600080fd5b5061055e611346565b60405161056b919061450f565b60405180910390f35b34801561058057600080fd5b5061059b60048036038101906105969190613b13565b611350565b6040516105a8919061450f565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190613aca565b6113a3565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190613aca565b611439565b005b34801561060f57600080fd5b506106186114cf565b6040516106259190614117565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190613b13565b6114e2565b60405161066291906140b0565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613b13565b6114f8565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190613860565b61157e565b6040516106c8919061450f565b60405180910390f35b3480156106dd57600080fd5b506106e6611667565b005b3480156106f457600080fd5b506106fd6116ef565b60405161070a919061450f565b60405180910390f35b34801561071f57600080fd5b506107286116f5565b60405161073591906140b0565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190613b13565b61171e565b60405161077291906144f4565b60405180910390f35b34801561078757600080fd5b50610790611736565b60405161079d9190614132565b60405180910390f35b3480156107b257600080fd5b506107bb6117c8565b6040516107c8919061450f565b60405180910390f35b6107eb60048036038101906107e69190613b13565b6117d2565b005b3480156107f957600080fd5b50610814600480360381019061080f91906139a3565b611a97565b005b34801561082257600080fd5b5061082b611c18565b005b34801561083957600080fd5b50610854600480360381019061084f9190613b13565b611d99565b005b34801561086257600080fd5b5061087d60048036038101906108789190613920565b611e1f565b005b34801561088b57600080fd5b50610894611e7b565b005b3480156108a257600080fd5b506108bd60048036038101906108b89190613b13565b611f23565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190613b13565b611fa9565b6040516108f39190614132565b60405180910390f35b34801561090857600080fd5b506109116120f8565b60405161091e919061450f565b60405180910390f35b34801561093357600080fd5b5061093c6120fe565b604051610949919061450f565b60405180910390f35b34801561095e57600080fd5b5061097960048036038101906109749190613860565b612104565b604051610986919061450f565b60405180910390f35b34801561099b57600080fd5b506109b660048036038101906109b1919061388d565b612116565b6040516109c39190614117565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613860565b6121aa565b005b6109fd6122a2565b73ffffffffffffffffffffffffffffffffffffffff16610a1b6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a68906142f4565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b4657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bae57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bbe5750610bbd826122aa565b5b9050919050565b610bcd6122a2565b73ffffffffffffffffffffffffffffffffffffffff16610beb6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c38906142f4565b60405180910390fd5b610c4b8282612314565b5050565b606060028054610c5e9061489e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8a9061489e565b8015610cd75780601f10610cac57610100808354040283529160200191610cd7565b820191906000526020600020905b815481529060010190602001808311610cba57829003601f168201915b5050505050905090565b6000610cec82612332565b610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d22906144b4565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d71826114e2565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990614374565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e016122a2565b73ffffffffffffffffffffffffffffffffffffffff161480610e305750610e2f81610e2a6122a2565b612116565b5b610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690614254565b60405180910390fd5b610e7a838383612340565b505050565b6000600154905090565b610e916122a2565b73ffffffffffffffffffffffffffffffffffffffff16610eaf6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc906142f4565b60405180910390fd5b60005b82829050811015610fa557600160136000858585818110610f2c57610f2b614a08565b5b9050602002016020810190610f419190613860565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f9d90614901565b915050610f08565b505050565b60125481565b610fbb8383836123f2565b505050565b600b5481565b6000610fd18361157e565b8210611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990614154565b60405180910390fd5b600061101c610e7f565b905060008060005b83811015611182576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461111657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116e578684141561115f5781955050505050506111be565b838061116a90614901565b9450505b50808061117a90614901565b915050611024565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590614454565b60405180910390fd5b92915050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6112226122a2565b73ffffffffffffffffffffffffffffffffffffffff166112406116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906142f4565b60405180910390fd5b80600c8190555050565b6112a86122a2565b73ffffffffffffffffffffffffffffffffffffffff166112c66116f5565b73ffffffffffffffffffffffffffffffffffffffff161461131c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611313906142f4565b60405180910390fd5b8060118190555050565b61134183838360405180602001604052806000815250611e1f565b505050565b6000601254905090565b600061135a610e7f565b821061139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611392906141b4565b60405180910390fd5b819050919050565b6113ab6122a2565b73ffffffffffffffffffffffffffffffffffffffff166113c96116f5565b73ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611416906142f4565b60405180910390fd5b80600e90805190602001906114359291906135e4565b5050565b6114416122a2565b73ffffffffffffffffffffffffffffffffffffffff1661145f6116f5565b73ffffffffffffffffffffffffffffffffffffffff16146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906142f4565b60405180910390fd5b80600f90805190602001906114cb9291906135e4565b5050565b600d60009054906101000a900460ff1681565b60006114ed826129ab565b600001519050919050565b6115006122a2565b73ffffffffffffffffffffffffffffffffffffffff1661151e6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b906142f4565b60405180910390fd5b8060128190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e690614294565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61166f6122a2565b73ffffffffffffffffffffffffffffffffffffffff1661168d6116f5565b73ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da906142f4565b60405180910390fd5b6116ed6000612bae565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61172661366a565b61172f826129ab565b9050919050565b6060600380546117459061489e565b80601f01602080910402602001604051908101604052809291908181526020018280546117719061489e565b80156117be5780601f10611793576101008083540402835291602001916117be565b820191906000526020600020905b8154815290600101906020018083116117a157829003601f168201915b5050505050905090565b6000600c54905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790614234565b60405180910390fd5b600160125414801561189b5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118a857506002601254145b6118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90614214565b60405180910390fd5b6011547f0000000000000000000000000000000000000000000000000000000000003755611915919061475a565b8161191e610e7f565b6119289190614645565b1115611969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611960906142b4565b60405180910390fd5b60016012541480156119905750600b548161198333612104565b61198d9190614645565b11155b8061199d57506002601254145b6119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390614274565b60405180910390fd5b600a54811115611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1890614434565b60405180910390fd5b80600c54611a2f91906146cc565b341015611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a68906143d4565b60405180910390fd5b611a7b3382612314565b601054611a86610e7f565b10611a945760006012819055505b50565b611a9f6122a2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0490614334565b60405180910390fd5b8060076000611b1a6122a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611bc76122a2565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c0c9190614117565b60405180910390a35050565b611c206122a2565b73ffffffffffffffffffffffffffffffffffffffff16611c3e6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b906142f4565b60405180910390fd5b60026009541415611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd190614474565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611d089061409b565b60006040518083038185875af1925050503d8060008114611d45576040519150601f19603f3d011682016040523d82523d6000602084013e611d4a565b606091505b5050905080611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590614394565b60405180910390fd5b506001600981905550565b611da16122a2565b73ffffffffffffffffffffffffffffffffffffffff16611dbf6116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c906142f4565b60405180910390fd5b80600a8190555050565b611e2a8484846123f2565b611e3684848484612c72565b611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c906143b4565b60405180910390fd5b50505050565b611e836122a2565b73ffffffffffffffffffffffffffffffffffffffff16611ea16116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee906142f4565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b611f2b6122a2565b73ffffffffffffffffffffffffffffffffffffffff16611f496116f5565b73ffffffffffffffffffffffffffffffffffffffff1614611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f96906142f4565b60405180910390fd5b8060108190555050565b6060611fb482612332565b611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90614314565b60405180910390fd5b600d60009054906101000a900460ff1615612065576000612012612e09565b90506000815111612032576040518060200160405280600081525061205d565b8061203c84612e9b565b60405160200161204d929190614077565b6040516020818303038152906040525b9150506120f3565b600f80546120729061489e565b80601f016020809104026020016040519081016040528092919081815260200182805461209e9061489e565b80156120eb5780601f106120c0576101008083540402835291602001916120eb565b820191906000526020600020905b8154815290600101906020018083116120ce57829003601f168201915b505050505090505b919050565b600a5481565b60085481565b600061210f82612ffc565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6121b26122a2565b73ffffffffffffffffffffffffffffffffffffffff166121d06116f5565b73ffffffffffffffffffffffffffffffffffffffff1614612226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221d906142f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90614174565b60405180910390fd5b61229f81612bae565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61232e8282604051806020016040528060008152506130e5565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006123fd826129ab565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166124246122a2565b73ffffffffffffffffffffffffffffffffffffffff16148061248057506124496122a2565b73ffffffffffffffffffffffffffffffffffffffff1661246884610ce1565b73ffffffffffffffffffffffffffffffffffffffff16145b8061249c575061249b82600001516124966122a2565b612116565b5b9050806124de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d590614354565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612547906142d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156125c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b7906141d4565b60405180910390fd5b6125cd85858560016135c5565b6125dd6000848460000151612340565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661264b9190614726565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166126ef91906145ff565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846127f59190614645565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561293b5761286b81612332565b1561293a576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46129a386868660016135cb565b505050505050565b6129b361366a565b6129bc82612332565b6129fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f290614194565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000328310612a5f5760017f000000000000000000000000000000000000000000000000000000000000003284612a52919061475a565b612a5c9190614645565b90505b60008390505b818110612b6d576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612b5957809350505050612ba9565b508080612b6590614874565b915050612a65565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba090614494565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612c938473ffffffffffffffffffffffffffffffffffffffff166135d1565b15612dfc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612cbc6122a2565b8786866040518563ffffffff1660e01b8152600401612cde94939291906140cb565b602060405180830381600087803b158015612cf857600080fd5b505af1925050508015612d2957506040513d601f19601f82011682018060405250810190612d269190613a9d565b60015b612dac573d8060008114612d59576040519150601f19603f3d011682016040523d82523d6000602084013e612d5e565b606091505b50600081511415612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b906143b4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e01565b600190505b949350505050565b6060600e8054612e189061489e565b80601f0160208091040260200160405190810160405280929190818152602001828054612e449061489e565b8015612e915780601f10612e6657610100808354040283529160200191612e91565b820191906000526020600020905b815481529060010190602001808311612e7457829003601f168201915b5050505050905090565b60606000821415612ee3576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612ff7565b600082905060005b60008214612f15578080612efe90614901565b915050600a82612f0e919061469b565b9150612eeb565b60008167ffffffffffffffff811115612f3157612f30614a37565b5b6040519080825280601f01601f191660200182016040528015612f635781602001600182028036833780820191505090505b5090505b60008514612ff057600182612f7c919061475a565b9150600a85612f8b919061494a565b6030612f979190614645565b60f81b818381518110612fad57612fac614a08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612fe9919061469b565b9450612f67565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561306d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613064906141f4565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561315c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315390614414565b60405180910390fd5b61316581612332565b156131a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319c906143f4565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000032831115613208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ff906144d4565b60405180910390fd5b61321560008583866135c5565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050604051806040016040528085836000015161331291906145ff565b6fffffffffffffffffffffffffffffffff16815260200185836020015161333991906145ff565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156135a857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135486000888488612c72565b613587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357e906143b4565b60405180910390fd5b818061359290614901565b92505080806135a090614901565b9150506134d7565b50806001819055506135bd60008785886135cb565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b8280546135f09061489e565b90600052602060002090601f0160209004810192826136125760008555613659565b82601f1061362b57805160ff1916838001178555613659565b82800160010185558215613659579182015b8281111561365857825182559160200191906001019061363d565b5b50905061366691906136a4565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156136bd5760008160009055506001016136a5565b5090565b60006136d46136cf8461454f565b61452a565b9050828152602081018484840111156136f0576136ef614a75565b5b6136fb848285614832565b509392505050565b600061371661371184614580565b61452a565b90508281526020810184848401111561373257613731614a75565b5b61373d848285614832565b509392505050565b600081359050613754816151e9565b92915050565b60008083601f8401126137705761376f614a6b565b5b8235905067ffffffffffffffff81111561378d5761378c614a66565b5b6020830191508360208202830111156137a9576137a8614a70565b5b9250929050565b6000813590506137bf81615200565b92915050565b6000813590506137d481615217565b92915050565b6000815190506137e981615217565b92915050565b600082601f83011261380457613803614a6b565b5b81356138148482602086016136c1565b91505092915050565b600082601f83011261383257613831614a6b565b5b8135613842848260208601613703565b91505092915050565b60008135905061385a8161522e565b92915050565b60006020828403121561387657613875614a7f565b5b600061388484828501613745565b91505092915050565b600080604083850312156138a4576138a3614a7f565b5b60006138b285828601613745565b92505060206138c385828601613745565b9150509250929050565b6000806000606084860312156138e6576138e5614a7f565b5b60006138f486828701613745565b935050602061390586828701613745565b92505060406139168682870161384b565b9150509250925092565b6000806000806080858703121561393a57613939614a7f565b5b600061394887828801613745565b945050602061395987828801613745565b935050604061396a8782880161384b565b925050606085013567ffffffffffffffff81111561398b5761398a614a7a565b5b613997878288016137ef565b91505092959194509250565b600080604083850312156139ba576139b9614a7f565b5b60006139c885828601613745565b92505060206139d9858286016137b0565b9150509250929050565b600080604083850312156139fa576139f9614a7f565b5b6000613a0885828601613745565b9250506020613a198582860161384b565b9150509250929050565b60008060208385031215613a3a57613a39614a7f565b5b600083013567ffffffffffffffff811115613a5857613a57614a7a565b5b613a648582860161375a565b92509250509250929050565b600060208284031215613a8657613a85614a7f565b5b6000613a94848285016137c5565b91505092915050565b600060208284031215613ab357613ab2614a7f565b5b6000613ac1848285016137da565b91505092915050565b600060208284031215613ae057613adf614a7f565b5b600082013567ffffffffffffffff811115613afe57613afd614a7a565b5b613b0a8482850161381d565b91505092915050565b600060208284031215613b2957613b28614a7f565b5b6000613b378482850161384b565b91505092915050565b613b498161478e565b82525050565b613b588161478e565b82525050565b613b67816147a0565b82525050565b6000613b78826145b1565b613b8281856145c7565b9350613b92818560208601614841565b613b9b81614a84565b840191505092915050565b6000613bb1826145bc565b613bbb81856145e3565b9350613bcb818560208601614841565b613bd481614a84565b840191505092915050565b6000613bea826145bc565b613bf481856145f4565b9350613c04818560208601614841565b80840191505092915050565b6000613c1d6022836145e3565b9150613c2882614a95565b604082019050919050565b6000613c406026836145e3565b9150613c4b82614ae4565b604082019050919050565b6000613c63602a836145e3565b9150613c6e82614b33565b604082019050919050565b6000613c866023836145e3565b9150613c9182614b82565b604082019050919050565b6000613ca96025836145e3565b9150613cb482614bd1565b604082019050919050565b6000613ccc6031836145e3565b9150613cd782614c20565b604082019050919050565b6000613cef6012836145e3565b9150613cfa82614c6f565b602082019050919050565b6000613d12601e836145e3565b9150613d1d82614c98565b602082019050919050565b6000613d356039836145e3565b9150613d4082614cc1565b604082019050919050565b6000613d58601e836145e3565b9150613d6382614d10565b602082019050919050565b6000613d7b602b836145e3565b9150613d8682614d39565b604082019050919050565b6000613d9e6012836145e3565b9150613da982614d88565b602082019050919050565b6000613dc16026836145e3565b9150613dcc82614db1565b604082019050919050565b6000613de46020836145e3565b9150613def82614e00565b602082019050919050565b6000613e07602f836145e3565b9150613e1282614e29565b604082019050919050565b6000613e2a601a836145e3565b9150613e3582614e78565b602082019050919050565b6000613e4d6032836145e3565b9150613e5882614ea1565b604082019050919050565b6000613e706022836145e3565b9150613e7b82614ef0565b604082019050919050565b6000613e936000836145d8565b9150613e9e82614f3f565b600082019050919050565b6000613eb66010836145e3565b9150613ec182614f42565b602082019050919050565b6000613ed96033836145e3565b9150613ee482614f6b565b604082019050919050565b6000613efc6016836145e3565b9150613f0782614fba565b602082019050919050565b6000613f1f601d836145e3565b9150613f2a82614fe3565b602082019050919050565b6000613f426021836145e3565b9150613f4d8261500c565b604082019050919050565b6000613f656016836145e3565b9150613f708261505b565b602082019050919050565b6000613f88602e836145e3565b9150613f9382615084565b604082019050919050565b6000613fab601f836145e3565b9150613fb6826150d3565b602082019050919050565b6000613fce602f836145e3565b9150613fd9826150fc565b604082019050919050565b6000613ff1602d836145e3565b9150613ffc8261514b565b604082019050919050565b60006140146022836145e3565b915061401f8261519a565b604082019050919050565b6040820160008201516140406000850182613b40565b5060208201516140536020850182614068565b50505050565b61406281614814565b82525050565b6140718161481e565b82525050565b60006140838285613bdf565b915061408f8284613bdf565b91508190509392505050565b60006140a682613e86565b9150819050919050565b60006020820190506140c56000830184613b4f565b92915050565b60006080820190506140e06000830187613b4f565b6140ed6020830186613b4f565b6140fa6040830185614059565b818103606083015261410c8184613b6d565b905095945050505050565b600060208201905061412c6000830184613b5e565b92915050565b6000602082019050818103600083015261414c8184613ba6565b905092915050565b6000602082019050818103600083015261416d81613c10565b9050919050565b6000602082019050818103600083015261418d81613c33565b9050919050565b600060208201905081810360008301526141ad81613c56565b9050919050565b600060208201905081810360008301526141cd81613c79565b9050919050565b600060208201905081810360008301526141ed81613c9c565b9050919050565b6000602082019050818103600083015261420d81613cbf565b9050919050565b6000602082019050818103600083015261422d81613ce2565b9050919050565b6000602082019050818103600083015261424d81613d05565b9050919050565b6000602082019050818103600083015261426d81613d28565b9050919050565b6000602082019050818103600083015261428d81613d4b565b9050919050565b600060208201905081810360008301526142ad81613d6e565b9050919050565b600060208201905081810360008301526142cd81613d91565b9050919050565b600060208201905081810360008301526142ed81613db4565b9050919050565b6000602082019050818103600083015261430d81613dd7565b9050919050565b6000602082019050818103600083015261432d81613dfa565b9050919050565b6000602082019050818103600083015261434d81613e1d565b9050919050565b6000602082019050818103600083015261436d81613e40565b9050919050565b6000602082019050818103600083015261438d81613e63565b9050919050565b600060208201905081810360008301526143ad81613ea9565b9050919050565b600060208201905081810360008301526143cd81613ecc565b9050919050565b600060208201905081810360008301526143ed81613eef565b9050919050565b6000602082019050818103600083015261440d81613f12565b9050919050565b6000602082019050818103600083015261442d81613f35565b9050919050565b6000602082019050818103600083015261444d81613f58565b9050919050565b6000602082019050818103600083015261446d81613f7b565b9050919050565b6000602082019050818103600083015261448d81613f9e565b9050919050565b600060208201905081810360008301526144ad81613fc1565b9050919050565b600060208201905081810360008301526144cd81613fe4565b9050919050565b600060208201905081810360008301526144ed81614007565b9050919050565b6000604082019050614509600083018461402a565b92915050565b60006020820190506145246000830184614059565b92915050565b6000614534614545565b905061454082826148d0565b919050565b6000604051905090565b600067ffffffffffffffff82111561456a57614569614a37565b5b61457382614a84565b9050602081019050919050565b600067ffffffffffffffff82111561459b5761459a614a37565b5b6145a482614a84565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061460a826147d8565b9150614615836147d8565b9250826fffffffffffffffffffffffffffffffff0382111561463a5761463961497b565b5b828201905092915050565b600061465082614814565b915061465b83614814565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146905761468f61497b565b5b828201905092915050565b60006146a682614814565b91506146b183614814565b9250826146c1576146c06149aa565b5b828204905092915050565b60006146d782614814565b91506146e283614814565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561471b5761471a61497b565b5b828202905092915050565b6000614731826147d8565b915061473c836147d8565b92508282101561474f5761474e61497b565b5b828203905092915050565b600061476582614814565b915061477083614814565b9250828210156147835761478261497b565b5b828203905092915050565b6000614799826147f4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561485f578082015181840152602081019050614844565b8381111561486e576000848401525b50505050565b600061487f82614814565b915060008214156148935761489261497b565b5b600182039050919050565b600060028204905060018216806148b657607f821691505b602082108114156148ca576148c96149d9565b5b50919050565b6148d982614a84565b810181811067ffffffffffffffff821117156148f8576148f7614a37565b5b80604052505050565b600061490c82614814565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561493f5761493e61497b565b5b600182019050919050565b600061495582614814565b915061496083614814565b9250826149705761496f6149aa565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f5175616e74697479206578636565647320616c6c6f776564204d696e74730000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6151f28161478e565b81146151fd57600080fd5b50565b615209816147a0565b811461521457600080fd5b50565b615220816147ac565b811461522b57600080fd5b50565b61523781614814565b811461524257600080fd5b5056fea26469706673582212203910413d0cbd48545d125fe8dd3c9d5b7ac69ef27f68f51bc444f0397053ca7d64736f6c63430008070033

Deployed Bytecode Sourcemap

19992:4076:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23501:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11309:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23831:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12881:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14082:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13698:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10279:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22247:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20622:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14765:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20175:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10560:744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22125:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23293:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23991:74;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14912:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23679:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10378:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22545:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22440:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20455:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12758:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23603:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11684:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2768:103;;;;;;;;;;;;;:::i;:::-;;20253:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2545:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22870:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12980:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23756:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21068:631;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14291:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23021:181;;;;;;;;;;;;;:::i;:::-;;23395:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15074:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23206:83;;;;;;;;;;;;;:::i;:::-;;23917:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21706:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20096:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18204:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22759:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14572:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2880:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23501:98;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23592:1:::1;23574:15;:19;;;;23501:98:::0;:::o;11309:370::-;11436:4;11481:25;11466:40;;;:11;:40;;;;:99;;;;11532:33;11517:48;;;:11;:48;;;;11466:99;:160;;;;11591:35;11576:50;;;:11;:50;;;;11466:160;:207;;;;11637:36;11661:11;11637:23;:36::i;:::-;11466:207;11452:221;;11309:370;;;:::o;23831:80::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23890:15:::1;23900:1;23903;23890:9;:15::i;:::-;23831:80:::0;;:::o;12881:94::-;12935:13;12964:5;12957:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12881:94;:::o;14082:204::-;14150:7;14174:16;14182:7;14174;:16::i;:::-;14166:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14256:15;:24;14272:7;14256:24;;;;;;;;;;;;;;;;;;;;;14249:31;;14082:204;;;:::o;13698:379::-;13767:13;13783:24;13799:7;13783:15;:24::i;:::-;13767:40;;13828:5;13822:11;;:2;:11;;;;13814:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13913:5;13897:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13922:37;13939:5;13946:12;:10;:12::i;:::-;13922:16;:37::i;:::-;13897:62;13881:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;14043:28;14052:2;14056:7;14065:5;14043:8;:28::i;:::-;13760:317;13698:379;;:::o;10279:94::-;10332:7;10355:12;;10348:19;;10279:94;:::o;22247:187::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22351:6:::1;22347:81;22362:6;;:13;;22360:1;:15;22347:81;;;22424:4;22390:20;:31;22411:6;;22418:1;22411:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22390:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22376:3;;;;;:::i;:::-;;;;22347:81;;;;22247:187:::0;;:::o;20622:22::-;;;;:::o;14765:142::-;14873:28;14883:4;14889:2;14893:7;14873:9;:28::i;:::-;14765:142;;;:::o;20175:34::-;;;;:::o;10560:744::-;10669:7;10704:16;10714:5;10704:9;:16::i;:::-;10696:5;:24;10688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10766:22;10791:13;:11;:13::i;:::-;10766:38;;10811:19;10841:25;10891:9;10886:350;10910:14;10906:1;:18;10886:350;;;10940:31;10974:11;:14;10986:1;10974:14;;;;;;;;;;;10940:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11027:1;11001:28;;:9;:14;;;:28;;;10997:89;;11062:9;:14;;;11042:34;;10997:89;11119:5;11098:26;;:17;:26;;;11094:135;;;11156:5;11141:11;:20;11137:59;;;11183:1;11176:8;;;;;;;;;11137:59;11206:13;;;;;:::i;:::-;;;;11094:135;10931:305;10926:3;;;;;:::i;:::-;;;;10886:350;;;;11242:56;;;;;;;;;;:::i;:::-;;;;;;;;10560:744;;;;;:::o;22125:112::-;22184:4;22204:20;:27;22225:5;22204:27;;;;;;;;;;;;;;;;;;;;;;;;;22197:34;;22125:112;;;:::o;23293:98::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23376:9:::1;23368:5;:17;;;;23293:98:::0;:::o;23991:74::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24058:1:::1;24048:7;:11;;;;23991:74:::0;:::o;14912:157::-;15024:39;15041:4;15047:2;15051:7;15024:39;;;;;;;;;;;;:16;:39::i;:::-;14912:157;;;:::o;23679:73::-;23719:4;23740:6;;23733:13;;23679:73;:::o;10378:177::-;10445:7;10477:13;:11;:13::i;:::-;10469:5;:21;10461:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10544:5;10537:12;;10378:177;;;:::o;22545:98::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22630:7:::1;22614:13;:23;;;;;;;;;;;;:::i;:::-;;22545:98:::0;:::o;22440:99::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22530:3:::1;22512:15;:21;;;;;;;;;;;;:::i;:::-;;22440:99:::0;:::o;20455:29::-;;;;;;;;;;;;;:::o;12758:118::-;12822:7;12845:20;12857:7;12845:11;:20::i;:::-;:25;;;12838:32;;12758:118;;;:::o;23603:72::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23668:1:::1;23659:6;:10;;;;23603:72:::0;:::o;11684:211::-;11748:7;11789:1;11772:19;;:5;:19;;;;11764:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11861:12;:19;11874:5;11861:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11853:36;;11846:43;;11684:211;;;:::o;2768:103::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2833:30:::1;2860:1;2833:18;:30::i;:::-;2768:103::o:0;20253:36::-;;;;:::o;2545:87::-;2591:7;2618:6;;;;;;;;;;;2611:13;;2545:87;:::o;22870:147::-;22951:21;;:::i;:::-;22991:20;23003:7;22991:11;:20::i;:::-;22984:27;;22870:147;;;:::o;12980:98::-;13036:13;13065:7;13058:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12980:98;:::o;23756:71::-;23795:4;23816:5;;23809:12;;23756:71;:::o;21068:631::-;21002:10;20989:23;;:9;:23;;;20981:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21155:1:::1;21145:6;;:11;:47;;;;;21160:20;:32;21181:10;21160:32;;;;;;;;;;;;;;;;;;;;;;;;;21145:47;:62;;;;21206:1;21196:6;;:11;21145:62;21137:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;21291:7;;21274:14;:24;;;;:::i;:::-;21262:8;21246:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:52;;21238:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21349:1;21339:6;;:11;:69;;;;;21393:15;;21381:8;21354:24;21367:10;21354:12;:24::i;:::-;:35;;;;:::i;:::-;:54;;21339:69;21337:88;;;;21424:1;21414:6;;:11;21337:88;21328:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;21491:17;;21479:8;:29;;21469:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21570:8;21562:5;;:16;;;;:::i;:::-;21549:9;:29;;21541:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21612:31;21622:10;21634:8;21612:9;:31::i;:::-;21673:6;;21656:13;:11;:13::i;:::-;:23;21653:41;;21691:1;21682:6;:10;;;;21653:41;21068:631:::0;:::o;14291:274::-;14394:12;:10;:12::i;:::-;14382:24;;:8;:24;;;;14374:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14491:8;14446:18;:32;14465:12;:10;:12::i;:::-;14446:32;;;;;;;;;;;;;;;:42;14479:8;14446:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14540:8;14511:48;;14526:12;:10;:12::i;:::-;14511:48;;;14550:8;14511:48;;;;;;:::i;:::-;;;;;;;;14291:274;;:::o;23021:181::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;327:1:::1;473:7;;:19;;465:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;327:1;534:7;:18;;;;23086:12:::2;23104:10;:15;;23127:21;23104:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23085:68;;;23168:7;23160:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;23078:124;283:1:::1;577:7;:22;;;;23021:181::o:0;23395:102::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23490:1:::1;23470:17;:21;;;;23395:102:::0;:::o;15074:311::-;15211:28;15221:4;15227:2;15231:7;15211:9;:28::i;:::-;15262:48;15285:4;15291:2;15295:7;15304:5;15262:22;:48::i;:::-;15246:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;15074:311;;;;:::o;23206:83::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23274:9:::1;;;;;;;;;;;23273:10;23261:9;;:22;;;;;;;;;;;;;;;;;;23206:83::o:0;23917:70::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23980:1:::1;23971:6;:10;;;;23917:70:::0;:::o;21706:413::-;21779:13;21809:16;21817:7;21809;:16::i;:::-;21801:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21886:9;;;;;;;;;;;21883:231;;;21903:21;21927:10;:8;:10::i;:::-;21903:34;;21982:1;21964:7;21958:21;:25;:104;;;;;;;;;;;;;;;;;22019:7;22028:18;:7;:16;:18::i;:::-;22002:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21958:104;21944:118;;;;;21883:231;22091:15;22084:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21706:413;;;;:::o;20096:37::-;;;;:::o;18204:43::-;;;;:::o;22759:107::-;22817:7;22840:20;22854:5;22840:13;:20::i;:::-;22833:27;;22759:107;;;:::o;14572:186::-;14694:4;14717:18;:25;14736:5;14717:25;;;;;;;;;;;;;;;:35;14743:8;14717:35;;;;;;;;;;;;;;;;;;;;;;;;;14710:42;;14572:186;;;;:::o;2880:201::-;2690:12;:10;:12::i;:::-;2679:23;;:7;:5;:7::i;:::-;:23;;;2671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2989:1:::1;2969:22;;:8;:22;;;;2961:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3045:28;3064:8;3045:18;:28::i;:::-;2880:201:::0;:::o;2088:98::-;2141:7;2168:10;2161:17;;2088:98;:::o;7198:157::-;7283:4;7322:25;7307:40;;;:11;:40;;;;7300:47;;7198:157;;;:::o;15501:98::-;15566:27;15576:2;15580:8;15566:27;;;;;;;;;;;;:9;:27::i;:::-;15501:98;;:::o;15390:105::-;15447:4;15477:12;;15467:7;:22;15460:29;;15390:105;;;:::o;18026:172::-;18150:2;18123:15;:24;18139:7;18123:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18184:7;18180:2;18164:28;;18173:5;18164:28;;;;;;;;;;;;18026:172;;;:::o;16761:1260::-;16858:35;16896:20;16908:7;16896:11;:20::i;:::-;16858:58;;16925:22;16967:13;:18;;;16951:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;17020:12;:10;:12::i;:::-;16996:36;;:20;17008:7;16996:11;:20::i;:::-;:36;;;16951:81;:142;;;;17043:50;17060:13;:18;;;17080:12;:10;:12::i;:::-;17043:16;:50::i;:::-;16951:142;16925:169;;17119:17;17103:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17251:4;17229:26;;:13;:18;;;:26;;;17213:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;17340:1;17326:16;;:2;:16;;;;17318:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17393:43;17415:4;17421:2;17425:7;17434:1;17393:21;:43::i;:::-;17444:49;17461:1;17465:7;17474:13;:18;;;17444:8;:49::i;:::-;17532:1;17502:12;:18;17515:4;17502:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17568:1;17540:12;:16;17553:2;17540:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17599:43;;;;;;;;17614:2;17599:43;;;;;;17625:15;17599:43;;;;;17576:11;:20;17588:7;17576:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17650:19;17682:1;17672:7;:11;;;;:::i;:::-;17650:33;;17735:1;17694:43;;:11;:24;17706:11;17694:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;17690:236;;;17752:20;17760:11;17752:7;:20::i;:::-;17748:171;;;17812:97;;;;;;;;17839:13;:18;;;17812:97;;;;;;17870:13;:28;;;17812:97;;;;;17785:11;:24;17797:11;17785:24;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17748:171;17690:236;17958:7;17954:2;17939:27;;17948:4;17939:27;;;;;;;;;;;;17973:42;17994:4;18000:2;18004:7;18013:1;17973:20;:42::i;:::-;16851:1170;;;16761:1260;;;:::o;12147:606::-;12223:21;;:::i;:::-;12264:16;12272:7;12264;:16::i;:::-;12256:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12336:26;12384:12;12373:7;:23;12369:93;;12453:1;12438:12;12428:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;12407:47;;12369:93;12475:12;12490:7;12475:22;;12470:212;12507:18;12499:4;:26;12470:212;;12544:31;12578:11;:17;12590:4;12578:17;;;;;;;;;;;12544:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12634:1;12608:28;;:9;:14;;;:28;;;12604:71;;12656:9;12649:16;;;;;;;12604:71;12535:147;12527:6;;;;;:::i;:::-;;;;12470:212;;;;12690:57;;;;;;;;;;:::i;:::-;;;;;;;;12147:606;;;;:::o;3090:191::-;3164:16;3183:6;;;;;;;;;;;3164:25;;3209:8;3200:6;;:17;;;;;;;;;;;;;;;;;;3264:8;3233:40;;3254:8;3233:40;;;;;;;;;;;;3153:128;3090:191;:::o;19004:690::-;19141:4;19158:15;:2;:13;;;:15::i;:::-;19154:535;;;19213:2;19197:36;;;19234:12;:10;:12::i;:::-;19248:4;19254:7;19263:5;19197:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19184:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19445:1;19428:6;:13;:18;19424:215;;;19461:61;;;;;;;;;;:::i;:::-;;;;;;;;19424:215;19607:6;19601:13;19592:6;19588:2;19584:15;19577:38;19184:464;19329:45;;;19319:55;;;:6;:55;;;;19312:62;;;;;19154:535;19677:4;19670:11;;19004:690;;;;;;;:::o;22647:108::-;22707:13;22736;22729:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22647:108;:::o;705:533::-;761:13;801:1;792:5;:10;788:53;;;819:10;;;;;;;;;;;;;;;;;;;;;788:53;851:12;866:5;851:20;;882:14;907:78;922:1;914:4;:9;907:78;;940:8;;;;;:::i;:::-;;;;971:2;963:10;;;;;:::i;:::-;;;907:78;;;995:19;1027:6;1017:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;995:39;;1045:154;1061:1;1052:5;:10;1045:154;;1089:1;1079:11;;;;;:::i;:::-;;;1156:2;1148:5;:10;;;;:::i;:::-;1135:2;:24;;;;:::i;:::-;1122:39;;1105:6;1112;1105:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1185:2;1176:11;;;;;:::i;:::-;;;1045:154;;;1223:6;1209:21;;;;;705:533;;;;:::o;11901:240::-;11962:7;12011:1;11994:19;;:5;:19;;;;11978:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12102:12;:19;12115:5;12102:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;12094:41;;12087:48;;11901:240;;;:::o;15604:1152::-;15709:20;15732:12;;15709:35;;15773:1;15759:16;;:2;:16;;;;15751:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15830:21;15838:12;15830:7;:21::i;:::-;15829:22;15821:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15912:12;15900:8;:24;;15892:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15972:61;16002:1;16006:2;16010:12;16024:8;15972:21;:61::i;:::-;16042:30;16075:12;:16;16088:2;16075:16;;;;;;;;;;;;;;;16042:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16117:119;;;;;;;;16167:8;16137:11;:19;;;:39;;;;:::i;:::-;16117:119;;;;;;16220:8;16185:11;:24;;;:44;;;;:::i;:::-;16117:119;;;;;16098:12;:16;16111:2;16098:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16271:43;;;;;;;;16286:2;16271:43;;;;;;16297:15;16271:43;;;;;16243:11;:25;16255:12;16243:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16323:20;16346:12;16323:35;;16372:9;16367:281;16391:8;16387:1;:12;16367:281;;;16445:12;16441:2;16420:38;;16437:1;16420:38;;;;;;;;;;;;16485:59;16516:1;16520:2;16524:12;16538:5;16485:22;:59::i;:::-;16467:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;16626:14;;;;;:::i;:::-;;;;16401:3;;;;;:::i;:::-;;;;16367:281;;;;16671:12;16656;:27;;;;16690:60;16719:1;16723:2;16727:12;16741:8;16690:20;:60::i;:::-;15702:1054;;;15604:1152;;;:::o;19699:141::-;;;;;:::o;19845:140::-;;;;;:::o;3313:197::-;3373:4;3391:12;3458:7;3446:20;3438:28;;3501:1;3494:4;:8;3487:15;;;3313: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;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1577:133::-;1620:5;1658:6;1645:20;1636:29;;1674:30;1698:5;1674:30;:::i;:::-;1577:133;;;;:::o;1716:137::-;1761:5;1799:6;1786:20;1777:29;;1815:32;1841:5;1815:32;:::i;:::-;1716:137;;;;:::o;1859:141::-;1915:5;1946:6;1940:13;1931:22;;1962:32;1988:5;1962:32;:::i;:::-;1859:141;;;;:::o;2019:338::-;2074:5;2123:3;2116:4;2108:6;2104:17;2100:27;2090:122;;2131:79;;:::i;:::-;2090:122;2248:6;2235:20;2273:78;2347:3;2339:6;2332:4;2324:6;2320:17;2273:78;:::i;:::-;2264:87;;2080:277;2019:338;;;;:::o;2377:340::-;2433:5;2482:3;2475:4;2467:6;2463:17;2459:27;2449:122;;2490:79;;:::i;:::-;2449:122;2607:6;2594:20;2632:79;2707:3;2699:6;2692:4;2684:6;2680:17;2632:79;:::i;:::-;2623:88;;2439:278;2377:340;;;;:::o;2723:139::-;2769:5;2807:6;2794:20;2785:29;;2823:33;2850:5;2823:33;:::i;:::-;2723:139;;;;:::o;2868:329::-;2927:6;2976:2;2964:9;2955:7;2951:23;2947:32;2944:119;;;2982:79;;:::i;:::-;2944:119;3102:1;3127:53;3172:7;3163:6;3152:9;3148:22;3127:53;:::i;:::-;3117:63;;3073:117;2868:329;;;;:::o;3203:474::-;3271:6;3279;3328:2;3316:9;3307:7;3303:23;3299:32;3296:119;;;3334:79;;:::i;:::-;3296:119;3454:1;3479:53;3524:7;3515:6;3504:9;3500:22;3479:53;:::i;:::-;3469:63;;3425:117;3581:2;3607:53;3652:7;3643:6;3632:9;3628:22;3607:53;:::i;:::-;3597:63;;3552:118;3203:474;;;;;:::o;3683:619::-;3760:6;3768;3776;3825:2;3813:9;3804:7;3800:23;3796:32;3793:119;;;3831:79;;:::i;:::-;3793:119;3951:1;3976:53;4021:7;4012:6;4001:9;3997:22;3976:53;:::i;:::-;3966:63;;3922:117;4078:2;4104:53;4149:7;4140:6;4129:9;4125:22;4104:53;:::i;:::-;4094:63;;4049:118;4206:2;4232:53;4277:7;4268:6;4257:9;4253:22;4232:53;:::i;:::-;4222:63;;4177:118;3683:619;;;;;:::o;4308:943::-;4403:6;4411;4419;4427;4476:3;4464:9;4455:7;4451:23;4447:33;4444:120;;;4483:79;;:::i;:::-;4444:120;4603:1;4628:53;4673:7;4664:6;4653:9;4649:22;4628:53;:::i;:::-;4618:63;;4574:117;4730:2;4756:53;4801:7;4792:6;4781:9;4777:22;4756:53;:::i;:::-;4746:63;;4701:118;4858:2;4884:53;4929:7;4920:6;4909:9;4905:22;4884:53;:::i;:::-;4874:63;;4829:118;5014:2;5003:9;4999:18;4986:32;5045:18;5037:6;5034:30;5031:117;;;5067:79;;:::i;:::-;5031:117;5172:62;5226:7;5217:6;5206:9;5202:22;5172:62;:::i;:::-;5162:72;;4957:287;4308:943;;;;;;;:::o;5257:468::-;5322:6;5330;5379:2;5367:9;5358:7;5354:23;5350:32;5347:119;;;5385:79;;:::i;:::-;5347:119;5505:1;5530:53;5575:7;5566:6;5555:9;5551:22;5530:53;:::i;:::-;5520:63;;5476:117;5632:2;5658:50;5700:7;5691:6;5680:9;5676:22;5658:50;:::i;:::-;5648:60;;5603:115;5257:468;;;;;:::o;5731:474::-;5799:6;5807;5856:2;5844:9;5835:7;5831:23;5827:32;5824:119;;;5862:79;;:::i;:::-;5824:119;5982:1;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5953:117;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5731:474;;;;;:::o;6211:559::-;6297:6;6305;6354:2;6342:9;6333:7;6329:23;6325:32;6322:119;;;6360:79;;:::i;:::-;6322:119;6508:1;6497:9;6493:17;6480:31;6538:18;6530:6;6527:30;6524:117;;;6560:79;;:::i;:::-;6524:117;6673:80;6745:7;6736:6;6725:9;6721:22;6673:80;:::i;:::-;6655:98;;;;6451:312;6211:559;;;;;:::o;6776:327::-;6834:6;6883:2;6871:9;6862:7;6858:23;6854:32;6851:119;;;6889:79;;:::i;:::-;6851:119;7009:1;7034:52;7078:7;7069:6;7058:9;7054:22;7034:52;:::i;:::-;7024:62;;6980:116;6776:327;;;;:::o;7109:349::-;7178:6;7227:2;7215:9;7206:7;7202:23;7198:32;7195:119;;;7233:79;;:::i;:::-;7195:119;7353:1;7378:63;7433:7;7424:6;7413:9;7409:22;7378:63;:::i;:::-;7368:73;;7324:127;7109:349;;;;:::o;7464:509::-;7533:6;7582:2;7570:9;7561:7;7557:23;7553:32;7550:119;;;7588:79;;:::i;:::-;7550:119;7736:1;7725:9;7721:17;7708:31;7766:18;7758:6;7755:30;7752:117;;;7788:79;;:::i;:::-;7752:117;7893:63;7948:7;7939:6;7928:9;7924:22;7893:63;:::i;:::-;7883:73;;7679:287;7464:509;;;;:::o;7979:329::-;8038:6;8087:2;8075:9;8066:7;8062:23;8058:32;8055:119;;;8093:79;;:::i;:::-;8055:119;8213:1;8238:53;8283:7;8274:6;8263:9;8259:22;8238:53;:::i;:::-;8228:63;;8184:117;7979:329;;;;:::o;8314:108::-;8391:24;8409:5;8391:24;:::i;:::-;8386:3;8379:37;8314:108;;:::o;8428:118::-;8515:24;8533:5;8515:24;:::i;:::-;8510:3;8503:37;8428:118;;:::o;8552:109::-;8633:21;8648:5;8633:21;:::i;:::-;8628:3;8621:34;8552:109;;:::o;8667:360::-;8753:3;8781:38;8813:5;8781:38;:::i;:::-;8835:70;8898:6;8893:3;8835:70;:::i;:::-;8828:77;;8914:52;8959:6;8954:3;8947:4;8940:5;8936:16;8914:52;:::i;:::-;8991:29;9013:6;8991:29;:::i;:::-;8986:3;8982:39;8975:46;;8757:270;8667:360;;;;:::o;9033:364::-;9121:3;9149:39;9182:5;9149:39;:::i;:::-;9204:71;9268:6;9263:3;9204:71;:::i;:::-;9197:78;;9284:52;9329:6;9324:3;9317:4;9310:5;9306:16;9284:52;:::i;:::-;9361:29;9383:6;9361:29;:::i;:::-;9356:3;9352:39;9345:46;;9125:272;9033:364;;;;:::o;9403:377::-;9509:3;9537:39;9570:5;9537:39;:::i;:::-;9592:89;9674:6;9669:3;9592:89;:::i;:::-;9585:96;;9690:52;9735:6;9730:3;9723:4;9716:5;9712:16;9690:52;:::i;:::-;9767:6;9762:3;9758:16;9751:23;;9513:267;9403:377;;;;:::o;9786:366::-;9928:3;9949:67;10013:2;10008:3;9949:67;:::i;:::-;9942:74;;10025:93;10114:3;10025:93;:::i;:::-;10143:2;10138:3;10134:12;10127:19;;9786:366;;;:::o;10158:::-;10300:3;10321:67;10385:2;10380:3;10321:67;:::i;:::-;10314:74;;10397:93;10486:3;10397:93;:::i;:::-;10515:2;10510:3;10506:12;10499:19;;10158:366;;;:::o;10530:::-;10672:3;10693:67;10757:2;10752:3;10693:67;:::i;:::-;10686:74;;10769:93;10858:3;10769:93;:::i;:::-;10887:2;10882:3;10878:12;10871:19;;10530:366;;;:::o;10902:::-;11044:3;11065:67;11129:2;11124:3;11065:67;:::i;:::-;11058:74;;11141:93;11230:3;11141:93;:::i;:::-;11259:2;11254:3;11250:12;11243:19;;10902:366;;;:::o;11274:::-;11416:3;11437:67;11501:2;11496:3;11437:67;:::i;:::-;11430:74;;11513:93;11602:3;11513:93;:::i;:::-;11631:2;11626:3;11622:12;11615:19;;11274:366;;;:::o;11646:::-;11788:3;11809:67;11873:2;11868:3;11809:67;:::i;:::-;11802:74;;11885:93;11974:3;11885:93;:::i;:::-;12003:2;11998:3;11994:12;11987:19;;11646:366;;;:::o;12018:::-;12160:3;12181:67;12245:2;12240:3;12181:67;:::i;:::-;12174:74;;12257:93;12346:3;12257:93;:::i;:::-;12375:2;12370:3;12366:12;12359:19;;12018:366;;;:::o;12390:::-;12532:3;12553:67;12617:2;12612:3;12553:67;:::i;:::-;12546:74;;12629:93;12718:3;12629:93;:::i;:::-;12747:2;12742:3;12738:12;12731:19;;12390:366;;;:::o;12762:::-;12904:3;12925:67;12989:2;12984:3;12925:67;:::i;:::-;12918:74;;13001:93;13090:3;13001:93;:::i;:::-;13119:2;13114:3;13110:12;13103:19;;12762:366;;;:::o;13134:::-;13276:3;13297:67;13361:2;13356:3;13297:67;:::i;:::-;13290:74;;13373:93;13462:3;13373:93;:::i;:::-;13491:2;13486:3;13482:12;13475:19;;13134:366;;;:::o;13506:::-;13648:3;13669:67;13733:2;13728:3;13669:67;:::i;:::-;13662:74;;13745:93;13834:3;13745:93;:::i;:::-;13863:2;13858:3;13854:12;13847:19;;13506:366;;;:::o;13878:::-;14020:3;14041:67;14105:2;14100:3;14041:67;:::i;:::-;14034:74;;14117:93;14206:3;14117:93;:::i;:::-;14235:2;14230:3;14226:12;14219:19;;13878:366;;;:::o;14250:::-;14392:3;14413:67;14477:2;14472:3;14413:67;:::i;:::-;14406:74;;14489:93;14578:3;14489:93;:::i;:::-;14607:2;14602:3;14598:12;14591:19;;14250:366;;;:::o;14622:::-;14764:3;14785:67;14849:2;14844:3;14785:67;:::i;:::-;14778:74;;14861:93;14950:3;14861:93;:::i;:::-;14979:2;14974:3;14970:12;14963:19;;14622:366;;;:::o;14994:::-;15136:3;15157:67;15221:2;15216:3;15157:67;:::i;:::-;15150:74;;15233:93;15322:3;15233:93;:::i;:::-;15351:2;15346:3;15342:12;15335:19;;14994:366;;;:::o;15366:::-;15508:3;15529:67;15593:2;15588:3;15529:67;:::i;:::-;15522:74;;15605:93;15694:3;15605:93;:::i;:::-;15723:2;15718:3;15714:12;15707:19;;15366:366;;;:::o;15738:::-;15880:3;15901:67;15965:2;15960:3;15901:67;:::i;:::-;15894:74;;15977:93;16066:3;15977:93;:::i;:::-;16095:2;16090:3;16086:12;16079:19;;15738:366;;;:::o;16110:::-;16252:3;16273:67;16337:2;16332:3;16273:67;:::i;:::-;16266:74;;16349:93;16438:3;16349:93;:::i;:::-;16467:2;16462:3;16458:12;16451:19;;16110:366;;;:::o;16482:398::-;16641:3;16662:83;16743:1;16738:3;16662:83;:::i;:::-;16655:90;;16754:93;16843:3;16754:93;:::i;:::-;16872:1;16867:3;16863:11;16856:18;;16482:398;;;:::o;16886:366::-;17028:3;17049:67;17113:2;17108:3;17049:67;:::i;:::-;17042:74;;17125:93;17214:3;17125:93;:::i;:::-;17243:2;17238:3;17234:12;17227:19;;16886:366;;;:::o;17258:::-;17400:3;17421:67;17485:2;17480:3;17421:67;:::i;:::-;17414:74;;17497:93;17586:3;17497:93;:::i;:::-;17615:2;17610:3;17606:12;17599:19;;17258:366;;;:::o;17630:::-;17772:3;17793:67;17857:2;17852:3;17793:67;:::i;:::-;17786:74;;17869:93;17958:3;17869:93;:::i;:::-;17987:2;17982:3;17978:12;17971:19;;17630:366;;;:::o;18002:::-;18144:3;18165:67;18229:2;18224:3;18165:67;:::i;:::-;18158:74;;18241:93;18330:3;18241:93;:::i;:::-;18359:2;18354:3;18350:12;18343:19;;18002:366;;;:::o;18374:::-;18516:3;18537:67;18601:2;18596:3;18537:67;:::i;:::-;18530:74;;18613:93;18702:3;18613:93;:::i;:::-;18731:2;18726:3;18722:12;18715:19;;18374:366;;;:::o;18746:::-;18888:3;18909:67;18973:2;18968:3;18909:67;:::i;:::-;18902:74;;18985:93;19074:3;18985:93;:::i;:::-;19103:2;19098:3;19094:12;19087:19;;18746:366;;;:::o;19118:::-;19260:3;19281:67;19345:2;19340:3;19281:67;:::i;:::-;19274:74;;19357:93;19446:3;19357:93;:::i;:::-;19475:2;19470:3;19466:12;19459:19;;19118:366;;;:::o;19490:::-;19632:3;19653:67;19717:2;19712:3;19653:67;:::i;:::-;19646:74;;19729:93;19818:3;19729:93;:::i;:::-;19847:2;19842:3;19838:12;19831:19;;19490:366;;;:::o;19862:::-;20004:3;20025:67;20089:2;20084:3;20025:67;:::i;:::-;20018:74;;20101:93;20190:3;20101:93;:::i;:::-;20219:2;20214:3;20210:12;20203:19;;19862:366;;;:::o;20234:::-;20376:3;20397:67;20461:2;20456:3;20397:67;:::i;:::-;20390:74;;20473:93;20562:3;20473:93;:::i;:::-;20591:2;20586:3;20582:12;20575:19;;20234:366;;;:::o;20606:::-;20748:3;20769:67;20833:2;20828:3;20769:67;:::i;:::-;20762:74;;20845:93;20934:3;20845:93;:::i;:::-;20963:2;20958:3;20954:12;20947:19;;20606:366;;;:::o;21048:527::-;21207:4;21202:3;21198:14;21294:4;21287:5;21283:16;21277:23;21313:63;21370:4;21365:3;21361:14;21347:12;21313:63;:::i;:::-;21222:164;21478:4;21471:5;21467:16;21461:23;21497:61;21552:4;21547:3;21543:14;21529:12;21497:61;:::i;:::-;21396:172;21176:399;21048:527;;:::o;21581:118::-;21668:24;21686:5;21668:24;:::i;:::-;21663:3;21656:37;21581:118;;:::o;21705:105::-;21780:23;21797:5;21780:23;:::i;:::-;21775:3;21768:36;21705:105;;:::o;21816:435::-;21996:3;22018:95;22109:3;22100:6;22018:95;:::i;:::-;22011:102;;22130:95;22221:3;22212:6;22130:95;:::i;:::-;22123:102;;22242:3;22235:10;;21816:435;;;;;:::o;22257:379::-;22441:3;22463:147;22606:3;22463:147;:::i;:::-;22456:154;;22627:3;22620:10;;22257:379;;;:::o;22642:222::-;22735:4;22773:2;22762:9;22758:18;22750:26;;22786:71;22854:1;22843:9;22839:17;22830:6;22786:71;:::i;:::-;22642:222;;;;:::o;22870:640::-;23065:4;23103:3;23092:9;23088:19;23080:27;;23117:71;23185:1;23174:9;23170:17;23161:6;23117:71;:::i;:::-;23198:72;23266:2;23255:9;23251:18;23242:6;23198:72;:::i;:::-;23280;23348:2;23337:9;23333:18;23324:6;23280:72;:::i;:::-;23399:9;23393:4;23389:20;23384:2;23373:9;23369:18;23362:48;23427:76;23498:4;23489:6;23427:76;:::i;:::-;23419:84;;22870:640;;;;;;;:::o;23516:210::-;23603:4;23641:2;23630:9;23626:18;23618:26;;23654:65;23716:1;23705:9;23701:17;23692:6;23654:65;:::i;:::-;23516:210;;;;:::o;23732:313::-;23845:4;23883:2;23872:9;23868:18;23860:26;;23932:9;23926:4;23922:20;23918:1;23907:9;23903:17;23896:47;23960:78;24033:4;24024:6;23960:78;:::i;:::-;23952:86;;23732:313;;;;:::o;24051:419::-;24217:4;24255:2;24244:9;24240:18;24232:26;;24304:9;24298:4;24294:20;24290:1;24279:9;24275:17;24268:47;24332:131;24458:4;24332:131;:::i;:::-;24324:139;;24051:419;;;:::o;24476:::-;24642:4;24680:2;24669:9;24665:18;24657:26;;24729:9;24723:4;24719:20;24715:1;24704:9;24700:17;24693:47;24757:131;24883:4;24757:131;:::i;:::-;24749:139;;24476:419;;;:::o;24901:::-;25067:4;25105:2;25094:9;25090:18;25082:26;;25154:9;25148:4;25144:20;25140:1;25129:9;25125:17;25118:47;25182:131;25308:4;25182:131;:::i;:::-;25174:139;;24901:419;;;:::o;25326:::-;25492:4;25530:2;25519:9;25515:18;25507:26;;25579:9;25573:4;25569:20;25565:1;25554:9;25550:17;25543:47;25607:131;25733:4;25607:131;:::i;:::-;25599:139;;25326:419;;;:::o;25751:::-;25917:4;25955:2;25944:9;25940:18;25932:26;;26004:9;25998:4;25994:20;25990:1;25979:9;25975:17;25968:47;26032:131;26158:4;26032:131;:::i;:::-;26024:139;;25751:419;;;:::o;26176:::-;26342:4;26380:2;26369:9;26365:18;26357:26;;26429:9;26423:4;26419:20;26415:1;26404:9;26400:17;26393:47;26457:131;26583:4;26457:131;:::i;:::-;26449:139;;26176:419;;;:::o;26601:::-;26767:4;26805:2;26794:9;26790:18;26782:26;;26854:9;26848:4;26844:20;26840:1;26829:9;26825:17;26818:47;26882:131;27008:4;26882:131;:::i;:::-;26874:139;;26601:419;;;:::o;27026:::-;27192:4;27230:2;27219:9;27215:18;27207:26;;27279:9;27273:4;27269:20;27265:1;27254:9;27250:17;27243:47;27307:131;27433:4;27307:131;:::i;:::-;27299:139;;27026:419;;;:::o;27451:::-;27617:4;27655:2;27644:9;27640:18;27632:26;;27704:9;27698:4;27694:20;27690:1;27679:9;27675:17;27668:47;27732:131;27858:4;27732:131;:::i;:::-;27724:139;;27451:419;;;:::o;27876:::-;28042:4;28080:2;28069:9;28065:18;28057:26;;28129:9;28123:4;28119:20;28115:1;28104:9;28100:17;28093:47;28157:131;28283:4;28157:131;:::i;:::-;28149:139;;27876:419;;;:::o;28301:::-;28467:4;28505:2;28494:9;28490:18;28482:26;;28554:9;28548:4;28544:20;28540:1;28529:9;28525:17;28518:47;28582:131;28708:4;28582:131;:::i;:::-;28574:139;;28301:419;;;:::o;28726:::-;28892:4;28930:2;28919:9;28915:18;28907:26;;28979:9;28973:4;28969:20;28965:1;28954:9;28950:17;28943:47;29007:131;29133:4;29007:131;:::i;:::-;28999:139;;28726:419;;;:::o;29151:::-;29317:4;29355:2;29344:9;29340:18;29332:26;;29404:9;29398:4;29394:20;29390:1;29379:9;29375:17;29368:47;29432:131;29558:4;29432:131;:::i;:::-;29424:139;;29151:419;;;:::o;29576:::-;29742:4;29780:2;29769:9;29765:18;29757:26;;29829:9;29823:4;29819:20;29815:1;29804:9;29800:17;29793:47;29857:131;29983:4;29857:131;:::i;:::-;29849:139;;29576:419;;;:::o;30001:::-;30167:4;30205:2;30194:9;30190:18;30182:26;;30254:9;30248:4;30244:20;30240:1;30229:9;30225:17;30218:47;30282:131;30408:4;30282:131;:::i;:::-;30274:139;;30001:419;;;:::o;30426:::-;30592:4;30630:2;30619:9;30615:18;30607:26;;30679:9;30673:4;30669:20;30665:1;30654:9;30650:17;30643:47;30707:131;30833:4;30707:131;:::i;:::-;30699:139;;30426:419;;;:::o;30851:::-;31017:4;31055:2;31044:9;31040:18;31032:26;;31104:9;31098:4;31094:20;31090:1;31079:9;31075:17;31068:47;31132:131;31258:4;31132:131;:::i;:::-;31124:139;;30851:419;;;:::o;31276:::-;31442:4;31480:2;31469:9;31465:18;31457:26;;31529:9;31523:4;31519:20;31515:1;31504:9;31500:17;31493:47;31557:131;31683:4;31557:131;:::i;:::-;31549:139;;31276:419;;;:::o;31701:::-;31867:4;31905:2;31894:9;31890:18;31882:26;;31954:9;31948:4;31944:20;31940:1;31929:9;31925:17;31918:47;31982:131;32108:4;31982:131;:::i;:::-;31974:139;;31701:419;;;:::o;32126:::-;32292:4;32330:2;32319:9;32315:18;32307:26;;32379:9;32373:4;32369:20;32365:1;32354:9;32350:17;32343:47;32407:131;32533:4;32407:131;:::i;:::-;32399:139;;32126:419;;;:::o;32551:::-;32717:4;32755:2;32744:9;32740:18;32732:26;;32804:9;32798:4;32794:20;32790:1;32779:9;32775:17;32768:47;32832:131;32958:4;32832:131;:::i;:::-;32824:139;;32551:419;;;:::o;32976:::-;33142:4;33180:2;33169:9;33165:18;33157:26;;33229:9;33223:4;33219:20;33215:1;33204:9;33200:17;33193:47;33257:131;33383:4;33257:131;:::i;:::-;33249:139;;32976:419;;;:::o;33401:::-;33567:4;33605:2;33594:9;33590:18;33582:26;;33654:9;33648:4;33644:20;33640:1;33629:9;33625:17;33618:47;33682:131;33808:4;33682:131;:::i;:::-;33674:139;;33401:419;;;:::o;33826:::-;33992:4;34030:2;34019:9;34015:18;34007:26;;34079:9;34073:4;34069:20;34065:1;34054:9;34050:17;34043:47;34107:131;34233:4;34107:131;:::i;:::-;34099:139;;33826:419;;;:::o;34251:::-;34417:4;34455:2;34444:9;34440:18;34432:26;;34504:9;34498:4;34494:20;34490:1;34479:9;34475:17;34468:47;34532:131;34658:4;34532:131;:::i;:::-;34524:139;;34251:419;;;:::o;34676:::-;34842:4;34880:2;34869:9;34865:18;34857:26;;34929:9;34923:4;34919:20;34915:1;34904:9;34900:17;34893:47;34957:131;35083:4;34957:131;:::i;:::-;34949:139;;34676:419;;;:::o;35101:::-;35267:4;35305:2;35294:9;35290:18;35282:26;;35354:9;35348:4;35344:20;35340:1;35329:9;35325:17;35318:47;35382:131;35508:4;35382:131;:::i;:::-;35374:139;;35101:419;;;:::o;35526:::-;35692:4;35730:2;35719:9;35715:18;35707:26;;35779:9;35773:4;35769:20;35765:1;35754:9;35750:17;35743:47;35807:131;35933:4;35807:131;:::i;:::-;35799:139;;35526:419;;;:::o;35951:::-;36117:4;36155:2;36144:9;36140:18;36132:26;;36204:9;36198:4;36194:20;36190:1;36179:9;36175:17;36168:47;36232:131;36358:4;36232:131;:::i;:::-;36224:139;;35951:419;;;:::o;36376:346::-;36531:4;36569:2;36558:9;36554:18;36546:26;;36582:133;36712:1;36701:9;36697:17;36688:6;36582:133;:::i;:::-;36376:346;;;;:::o;36728:222::-;36821:4;36859:2;36848:9;36844:18;36836:26;;36872:71;36940:1;36929:9;36925:17;36916:6;36872:71;:::i;:::-;36728:222;;;;:::o;36956:129::-;36990:6;37017:20;;:::i;:::-;37007:30;;37046:33;37074:4;37066:6;37046:33;:::i;:::-;36956:129;;;:::o;37091:75::-;37124:6;37157:2;37151:9;37141:19;;37091:75;:::o;37172:307::-;37233:4;37323:18;37315:6;37312:30;37309:56;;;37345:18;;:::i;:::-;37309:56;37383:29;37405:6;37383:29;:::i;:::-;37375:37;;37467:4;37461;37457:15;37449:23;;37172:307;;;:::o;37485:308::-;37547:4;37637:18;37629:6;37626:30;37623:56;;;37659:18;;:::i;:::-;37623:56;37697:29;37719:6;37697:29;:::i;:::-;37689:37;;37781:4;37775;37771:15;37763:23;;37485:308;;;:::o;37799:98::-;37850:6;37884:5;37878:12;37868:22;;37799:98;;;:::o;37903:99::-;37955:6;37989:5;37983:12;37973:22;;37903:99;;;:::o;38008:168::-;38091:11;38125:6;38120:3;38113:19;38165:4;38160:3;38156:14;38141:29;;38008:168;;;;:::o;38182:147::-;38283:11;38320:3;38305:18;;38182:147;;;;:::o;38335:169::-;38419:11;38453:6;38448:3;38441:19;38493:4;38488:3;38484:14;38469:29;;38335:169;;;;:::o;38510:148::-;38612:11;38649:3;38634:18;;38510:148;;;;:::o;38664:273::-;38704:3;38723:20;38741:1;38723:20;:::i;:::-;38718:25;;38757:20;38775:1;38757:20;:::i;:::-;38752:25;;38879:1;38843:34;38839:42;38836:1;38833:49;38830:75;;;38885:18;;:::i;:::-;38830:75;38929:1;38926;38922:9;38915:16;;38664:273;;;;:::o;38943:305::-;38983:3;39002:20;39020:1;39002:20;:::i;:::-;38997:25;;39036:20;39054:1;39036:20;:::i;:::-;39031:25;;39190:1;39122:66;39118:74;39115:1;39112:81;39109:107;;;39196:18;;:::i;:::-;39109:107;39240:1;39237;39233:9;39226:16;;38943:305;;;;:::o;39254:185::-;39294:1;39311:20;39329:1;39311:20;:::i;:::-;39306:25;;39345:20;39363:1;39345:20;:::i;:::-;39340:25;;39384:1;39374:35;;39389:18;;:::i;:::-;39374:35;39431:1;39428;39424:9;39419:14;;39254:185;;;;:::o;39445:348::-;39485:7;39508:20;39526:1;39508:20;:::i;:::-;39503:25;;39542:20;39560:1;39542:20;:::i;:::-;39537:25;;39730:1;39662:66;39658:74;39655:1;39652:81;39647:1;39640:9;39633:17;39629:105;39626:131;;;39737:18;;:::i;:::-;39626:131;39785:1;39782;39778:9;39767:20;;39445:348;;;;:::o;39799:191::-;39839:4;39859:20;39877:1;39859:20;:::i;:::-;39854:25;;39893:20;39911:1;39893:20;:::i;:::-;39888:25;;39932:1;39929;39926:8;39923:34;;;39937:18;;:::i;:::-;39923:34;39982:1;39979;39975:9;39967:17;;39799:191;;;;:::o;39996:::-;40036:4;40056:20;40074:1;40056:20;:::i;:::-;40051:25;;40090:20;40108:1;40090:20;:::i;:::-;40085:25;;40129:1;40126;40123:8;40120:34;;;40134:18;;:::i;:::-;40120:34;40179:1;40176;40172:9;40164:17;;39996:191;;;;:::o;40193:96::-;40230:7;40259:24;40277:5;40259:24;:::i;:::-;40248:35;;40193:96;;;:::o;40295:90::-;40329:7;40372:5;40365:13;40358:21;40347:32;;40295:90;;;:::o;40391:149::-;40427:7;40467:66;40460:5;40456:78;40445:89;;40391:149;;;:::o;40546:118::-;40583:7;40623:34;40616:5;40612:46;40601:57;;40546:118;;;:::o;40670:126::-;40707:7;40747:42;40740:5;40736:54;40725:65;;40670:126;;;:::o;40802:77::-;40839:7;40868:5;40857:16;;40802:77;;;:::o;40885:101::-;40921:7;40961:18;40954:5;40950:30;40939:41;;40885:101;;;:::o;40992:154::-;41076:6;41071:3;41066;41053:30;41138:1;41129:6;41124:3;41120:16;41113:27;40992:154;;;:::o;41152:307::-;41220:1;41230:113;41244:6;41241:1;41238:13;41230:113;;;41329:1;41324:3;41320:11;41314:18;41310:1;41305:3;41301:11;41294:39;41266:2;41263:1;41259:10;41254:15;;41230:113;;;41361:6;41358:1;41355:13;41352:101;;;41441:1;41432:6;41427:3;41423:16;41416:27;41352:101;41201:258;41152:307;;;:::o;41465:171::-;41504:3;41527:24;41545:5;41527:24;:::i;:::-;41518:33;;41573:4;41566:5;41563:15;41560:41;;;41581:18;;:::i;:::-;41560:41;41628:1;41621:5;41617:13;41610:20;;41465:171;;;:::o;41642:320::-;41686:6;41723:1;41717:4;41713:12;41703:22;;41770:1;41764:4;41760:12;41791:18;41781:81;;41847:4;41839:6;41835:17;41825:27;;41781:81;41909:2;41901:6;41898:14;41878:18;41875:38;41872:84;;;41928:18;;:::i;:::-;41872:84;41693:269;41642:320;;;:::o;41968:281::-;42051:27;42073:4;42051:27;:::i;:::-;42043:6;42039:40;42181:6;42169:10;42166:22;42145:18;42133:10;42130:34;42127:62;42124:88;;;42192:18;;:::i;:::-;42124:88;42232:10;42228:2;42221:22;42011:238;41968:281;;:::o;42255:233::-;42294:3;42317:24;42335:5;42317:24;:::i;:::-;42308:33;;42363:66;42356:5;42353:77;42350:103;;;42433:18;;:::i;:::-;42350:103;42480:1;42473:5;42469:13;42462:20;;42255:233;;;:::o;42494:176::-;42526:1;42543:20;42561:1;42543:20;:::i;:::-;42538:25;;42577:20;42595:1;42577:20;:::i;:::-;42572:25;;42616:1;42606:35;;42621:18;;:::i;:::-;42606:35;42662:1;42659;42655:9;42650:14;;42494:176;;;;:::o;42676:180::-;42724:77;42721:1;42714:88;42821:4;42818:1;42811:15;42845:4;42842:1;42835:15;42862:180;42910:77;42907:1;42900:88;43007:4;43004:1;42997:15;43031:4;43028:1;43021:15;43048:180;43096:77;43093:1;43086:88;43193:4;43190:1;43183:15;43217:4;43214:1;43207:15;43234:180;43282:77;43279:1;43272:88;43379:4;43376:1;43369:15;43403:4;43400:1;43393:15;43420:180;43468:77;43465:1;43458:88;43565:4;43562:1;43555:15;43589:4;43586:1;43579:15;43606:117;43715:1;43712;43705:12;43729:117;43838:1;43835;43828:12;43852:117;43961:1;43958;43951:12;43975:117;44084:1;44081;44074:12;44098:117;44207:1;44204;44197:12;44221:117;44330:1;44327;44320:12;44344:102;44385:6;44436:2;44432:7;44427:2;44420:5;44416:14;44412:28;44402:38;;44344:102;;;:::o;44452:221::-;44592:34;44588:1;44580:6;44576:14;44569:58;44661:4;44656:2;44648:6;44644:15;44637:29;44452:221;:::o;44679:225::-;44819:34;44815:1;44807:6;44803:14;44796:58;44888:8;44883:2;44875:6;44871:15;44864:33;44679:225;:::o;44910:229::-;45050:34;45046:1;45038:6;45034:14;45027:58;45119:12;45114:2;45106:6;45102:15;45095:37;44910:229;:::o;45145:222::-;45285:34;45281:1;45273:6;45269:14;45262:58;45354:5;45349:2;45341:6;45337:15;45330:30;45145:222;:::o;45373:224::-;45513:34;45509:1;45501:6;45497:14;45490:58;45582:7;45577:2;45569:6;45565:15;45558:32;45373:224;:::o;45603:236::-;45743:34;45739:1;45731:6;45727:14;45720:58;45812:19;45807:2;45799:6;45795:15;45788:44;45603:236;:::o;45845:168::-;45985:20;45981:1;45973:6;45969:14;45962:44;45845:168;:::o;46019:180::-;46159:32;46155:1;46147:6;46143:14;46136:56;46019:180;:::o;46205:244::-;46345:34;46341:1;46333:6;46329:14;46322:58;46414:27;46409:2;46401:6;46397:15;46390:52;46205:244;:::o;46455:180::-;46595:32;46591:1;46583:6;46579:14;46572:56;46455:180;:::o;46641:230::-;46781:34;46777:1;46769:6;46765:14;46758:58;46850:13;46845:2;46837:6;46833:15;46826:38;46641:230;:::o;46877:168::-;47017:20;47013:1;47005:6;47001:14;46994:44;46877:168;:::o;47051:225::-;47191:34;47187:1;47179:6;47175:14;47168:58;47260:8;47255:2;47247:6;47243:15;47236:33;47051:225;:::o;47282:182::-;47422:34;47418:1;47410:6;47406:14;47399:58;47282:182;:::o;47470:234::-;47610:34;47606:1;47598:6;47594:14;47587:58;47679:17;47674:2;47666:6;47662:15;47655:42;47470:234;:::o;47710:176::-;47850:28;47846:1;47838:6;47834:14;47827:52;47710:176;:::o;47892:237::-;48032:34;48028:1;48020:6;48016:14;48009:58;48101:20;48096:2;48088:6;48084:15;48077:45;47892:237;:::o;48135:221::-;48275:34;48271:1;48263:6;48259:14;48252:58;48344:4;48339:2;48331:6;48327:15;48320:29;48135:221;:::o;48362:114::-;;:::o;48482:166::-;48622:18;48618:1;48610:6;48606:14;48599:42;48482:166;:::o;48654:238::-;48794:34;48790:1;48782:6;48778:14;48771:58;48863:21;48858:2;48850:6;48846:15;48839:46;48654:238;:::o;48898:172::-;49038:24;49034:1;49026:6;49022:14;49015:48;48898:172;:::o;49076:179::-;49216:31;49212:1;49204:6;49200:14;49193:55;49076:179;:::o;49261:220::-;49401:34;49397:1;49389:6;49385:14;49378:58;49470:3;49465:2;49457:6;49453:15;49446:28;49261:220;:::o;49487:172::-;49627:24;49623:1;49615:6;49611:14;49604:48;49487:172;:::o;49665:233::-;49805:34;49801:1;49793:6;49789:14;49782:58;49874:16;49869:2;49861:6;49857:15;49850:41;49665:233;:::o;49904:181::-;50044:33;50040:1;50032:6;50028:14;50021:57;49904:181;:::o;50091:234::-;50231:34;50227:1;50219:6;50215:14;50208:58;50300:17;50295:2;50287:6;50283:15;50276:42;50091:234;:::o;50331:232::-;50471:34;50467:1;50459:6;50455:14;50448:58;50540:15;50535:2;50527:6;50523:15;50516:40;50331:232;:::o;50569:221::-;50709:34;50705:1;50697:6;50693:14;50686:58;50778:4;50773:2;50765:6;50761:15;50754:29;50569:221;:::o;50796:122::-;50869:24;50887:5;50869:24;:::i;:::-;50862:5;50859:35;50849:63;;50908:1;50905;50898:12;50849:63;50796:122;:::o;50924:116::-;50994:21;51009:5;50994:21;:::i;:::-;50987:5;50984:32;50974:60;;51030:1;51027;51020:12;50974:60;50924:116;:::o;51046:120::-;51118:23;51135:5;51118:23;:::i;:::-;51111:5;51108:34;51098:62;;51156:1;51153;51146:12;51098:62;51046:120;:::o;51172:122::-;51245:24;51263:5;51245:24;:::i;:::-;51238:5;51235:35;51225:63;;51284:1;51281;51274:12;51225:63;51172:122;:::o

Swarm Source

ipfs://3910413d0cbd48545d125fe8dd3c9d5b7ac69ef27f68f51bc444f0397053ca7d
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.