ETH Price: $2,148.41 (+4.58%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Status145466662022-04-08 18:09:521453 days ago1649441392IN
0x4E727d7c...6859bA9D5
0 ETH0.0026866558.36504062
Change MAX_PER_T...145466582022-04-08 18:08:151453 days ago1649441295IN
0x4E727d7c...6859bA9D5
0 ETH0.0017660660.99758461
Change MAX_PER_A...145466532022-04-08 18:07:101453 days ago1649441230IN
0x4E727d7c...6859bA9D5
0 ETH0.0020399470.55943079
Mint145466262022-04-08 18:00:251453 days ago1649440825IN
0x4E727d7c...6859bA9D5
0 ETH0.0010743744.46539953
Set Status145466212022-04-08 17:59:331453 days ago1649440773IN
0x4E727d7c...6859bA9D5
0 ETH0.0010489143.48729881
Mint145466132022-04-08 17:58:141453 days ago1649440694IN
0x4E727d7c...6859bA9D5
0 ETH0.006805147.45344431
Mint145466132022-04-08 17:58:141453 days ago1649440694IN
0x4E727d7c...6859bA9D5
0 ETH0.006805147.45344431
Mint145466122022-04-08 17:57:591453 days ago1649440679IN
0x4E727d7c...6859bA9D5
0 ETH0.0069734146.98368049
Set Status145466082022-04-08 17:57:231453 days ago1649440643IN
0x4E727d7c...6859bA9D5
0 ETH0.0025203554.75219569
Set Base URI145448662022-04-08 11:30:221453 days ago1649417422IN
0x4E727d7c...6859bA9D5
0 ETH0.0015113536.8218907
Set Base URI145389712022-04-07 13:18:051454 days ago1649337485IN
0x4E727d7c...6859bA9D5
0 ETH0.0062031253.91257249
Change Revel Sta...145288172022-04-05 23:15:241456 days ago1649200524IN
0x4E727d7c...6859bA9D5
0 ETH0.0028847962.86747868
Set Status145135442022-04-03 13:58:301458 days ago1648994310IN
0x4E727d7c...6859bA9D5
0 ETH0.000882336.57983319
Mint145135362022-04-03 13:56:271458 days ago1648994187IN
0x4E727d7c...6859bA9D5
0 ETH0.0051571836.60225418
Mint145135352022-04-03 13:56:141458 days ago1648994174IN
0x4E727d7c...6859bA9D5
0 ETH0.0075946835.6267074
Mint145135292022-04-03 13:55:161458 days ago1648994116IN
0x4E727d7c...6859bA9D5
0 ETH0.0066978939.17036375
Mint145135282022-04-03 13:54:581458 days ago1648994098IN
0x4E727d7c...6859bA9D5
0 ETH0.0075620935.47382501
Mint145135242022-04-03 13:54:331458 days ago1648994073IN
0x4E727d7c...6859bA9D5
0 ETH0.0080163837.60488827
Mint145135162022-04-03 13:52:481458 days ago1648993968IN
0x4E727d7c...6859bA9D5
0 ETH0.0086286740.4771621
Mint145135112022-04-03 13:51:001458 days ago1648993860IN
0x4E727d7c...6859bA9D5
0 ETH0.0060814231.01596151
Mint145135112022-04-03 13:51:001458 days ago1648993860IN
0x4E727d7c...6859bA9D5
0 ETH0.0060814231.01596151
Mint145135112022-04-03 13:51:001458 days ago1648993860IN
0x4E727d7c...6859bA9D5
0 ETH0.0060814231.01596151
Mint145135112022-04-03 13:51:001458 days ago1648993860IN
0x4E727d7c...6859bA9D5
0 ETH0.0060814231.01596151
Mint145135112022-04-03 13:51:001458 days ago1648993860IN
0x4E727d7c...6859bA9D5
0 ETH0.0060814231.01596151
Mint145135102022-04-03 13:50:561458 days ago1648993856IN
0x4E727d7c...6859bA9D5
0 ETH0.0065923933.62198384
View all transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
CarGyz

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

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

/**
 *Submitted for verification at Etherscan.io on 2022-03-25
*/

/**
 *Submitted for verification at Etherscan.io on 2022-03-23
*/

/**
 *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 CarGyz is Ownable, ERC721A, ReentrancyGuard {
    using Strings for uint256;


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

  uint256 public  PRICE = 0.07 ether;

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

  bool public _revelNFT = false;
  string private _baseTokenURI;
  string private _uriBeforeRevel;
  uint private stopat = 2500;
  uint private reserve = 200;
  

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

//   mapping(address => bool) private whitelistedAddresses;

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

  modifier callerIsUser() {
    require(tx.origin == msg.sender, "The caller is another contract");
    _;
  }
 
  function mint(uint256 quantity) external payable callerIsUser {
    require(status == 2 , "Sale is not Active");
    require(totalSupply() + quantity <= collectionSize - reserve, "reached max supply");
    require( ( numberMinted(msg.sender) + quantity <= MAX_PER_Address ) , "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()))
        : ".json";
    } else{
      return _uriBeforeRevel;
    }
  }

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

  function setBaseURI(string memory baseURI) external onlyOwner {
    _baseTokenURI = baseURI;
  }
  function _baseURI() internal view virtual override returns (string memory) {
    return _baseTokenURI;
  }
  function numberMinted(address owner) public view returns (uint256) {
    return _numberMinted(owner);
  }
  function getOwnershipData(uint256 tokenId)
    external
    view
    returns (TokenOwnership memory)
  {
    return ownershipOf(tokenId);
  }
  function withdrawMoney() external onlyOwner nonReentrant {
    (bool success, ) = msg.sender.call{value: address(this).balance}("");
    require(success, "Transfer failed.");
  }
  function changeRevelStatus() external onlyOwner {
    _revelNFT = !_revelNFT;
  }
  function changeMintPrice(uint256 _newPrice) external onlyOwner
  {
      PRICE = _newPrice;
  }
  function changeMAX_PER_Transtion(uint256 q) external onlyOwner
  {
      MAX_PER_Transtion = q;
  }
  function changeMAX_PER_Address(uint256 q) external onlyOwner
  {
      MAX_PER_Address = q;
  }
  function setStatus(uint256 s)external onlyOwner{
      status = s;
  }
  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 setReserve(uint256 r)external onlyOwner{
      reserve = r;
  }
     function conf(uint256 s , uint256 MPA , uint256 MPW , uint256 P ,uint256 st  )external onlyOwner{
      PRICE = P;
      status = s; 
      stopat = st;
      MAX_PER_Address = MPA;
      MAX_PER_Transtion = MPW;
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PER_Address","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_Transtion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_revelNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"q","type":"uint256"}],"name":"changeMAX_PER_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"q","type":"uint256"}],"name":"changeMAX_PER_Transtion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changeRevelStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"},{"internalType":"uint256","name":"MPA","type":"uint256"},{"internalType":"uint256","name":"MPW","type":"uint256"},{"internalType":"uint256","name":"P","type":"uint256"},{"internalType":"uint256","name":"st","type":"uint256"}],"name":"conf","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":"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":"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"}]

60c0604052600060015560006008556028600a556028600b5566f8b0a10e470000600c556000600d60006101000a81548160ff0219169083151502179055506109c460105560c860115560006012553480156200005b57600080fd5b506040518060400160405280600681526020017f43617247797a00000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f43617247797a00000000000000000000000000000000000000000000000000008152506032612710620000ed620000e1620001ff60201b60201c565b6200020760201b60201c565b6000811162000133576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012a90620003eb565b60405180910390fd5b6000821162000179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017090620003c9565b60405180910390fd5b836002908051906020019062000191929190620002cb565b508260039080519060200190620001aa929190620002cb565b508160a0818152505080608081815250505050505060016009819055506040518060800160405280605081526020016200557460509139600f9080519060200190620001f8929190620002cb565b5062000521565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002d9906200041e565b90600052602060002090601f016020900481019282620002fd576000855562000349565b82601f106200031857805160ff191683800117855562000349565b8280016001018555821562000349579182015b82811115620003485782518255916020019190600101906200032b565b5b5090506200035891906200035c565b5090565b5b80821115620003775760008160009055506001016200035d565b5090565b60006200038a6027836200040d565b9150620003978262000483565b604082019050919050565b6000620003b1602e836200040d565b9150620003be82620004d2565b604082019050919050565b60006020820190508181036000830152620003e4816200037b565b9050919050565b600060208201905081810360008301526200040681620003a2565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200043757607f821691505b602082108114156200044e576200044d62000454565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a05161501f62000555600039600081816127d5015281816127fe0152612f7d0152600061173d015261501f6000f3fe6080604052600436106102465760003560e01c80636352211e11610139578063a22cb465116100b6578063c87b56dd1161007a578063c87b56dd14610843578063d04950a114610880578063d7224ba0146108ab578063dc33e681146108d6578063e985e9c514610913578063f2fde38b1461095057610246565b8063a22cb4651461079a578063ac446002146107c3578063af7b26e9146107da578063b88d4fde14610803578063bd0a84391461082c57610246565b80638da5cb5b116100fd5780638da5cb5b146106c05780639231ab2a146106eb57806395d89b411461072857806398d5fdca14610753578063a0712d681461077e57610246565b80636352211e146105db57806369ba1a751461061857806370a0823114610641578063715018a61461067e5780638d859f3e1461069557610246565b80632f2ffc57116101c75780634e69d5601161018b5780634e69d560146104f65780634f6ccce71461052157806355f804b31461055e5780635c37809d1461058757806362c6f7b9146105b057610246565b80632f2ffc57146104135780632f745c591461043e5780633fd173661461047b5780634256dbe3146104a457806342842e0e146104cd57610246565b8063081812fc1161020e578063081812fc1461032e578063095ea7b31461036b57806318160ddd14610394578063200d2ed2146103bf57806323b872dd146103ea57610246565b80630199e3471461024b57806301ffc9a714610274578063050225ea146102b157806305060ed9146102da57806306fdde0314610303575b600080fd5b34801561025757600080fd5b50610272600480360381019061026d9190613846565b610979565b005b34801561028057600080fd5b5061029b600480360381019061029691906137a3565b6109ff565b6040516102a89190613ec5565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190613763565b610b49565b005b3480156102e657600080fd5b5061030160048036038101906102fc9190613873565b610bd3565b005b34801561030f57600080fd5b50610318610c79565b6040516103259190613ee0565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190613846565b610d0b565b6040516103629190613e5e565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190613763565b610d90565b005b3480156103a057600080fd5b506103a9610ea9565b6040516103b691906142bd565b60405180910390f35b3480156103cb57600080fd5b506103d4610eb3565b6040516103e191906142bd565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c919061364d565b610eb9565b005b34801561041f57600080fd5b50610428610ec9565b60405161043591906142bd565b60405180910390f35b34801561044a57600080fd5b5061046560048036038101906104609190613763565b610ecf565b60405161047291906142bd565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190613846565b6110cd565b005b3480156104b057600080fd5b506104cb60048036038101906104c69190613846565b611153565b005b3480156104d957600080fd5b506104f460048036038101906104ef919061364d565b6111d9565b005b34801561050257600080fd5b5061050b6111f9565b60405161051891906142bd565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190613846565b611203565b60405161055591906142bd565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906137fd565b611256565b005b34801561059357600080fd5b506105ae60048036038101906105a991906137fd565b6112ec565b005b3480156105bc57600080fd5b506105c5611382565b6040516105d29190613ec5565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190613846565b611395565b60405161060f9190613e5e565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190613846565b6113ab565b005b34801561064d57600080fd5b50610668600480360381019061066391906135e0565b611431565b60405161067591906142bd565b60405180910390f35b34801561068a57600080fd5b5061069361151a565b005b3480156106a157600080fd5b506106aa6115a2565b6040516106b791906142bd565b60405180910390f35b3480156106cc57600080fd5b506106d56115a8565b6040516106e29190613e5e565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190613846565b6115d1565b60405161071f91906142a2565b60405180910390f35b34801561073457600080fd5b5061073d6115e9565b60405161074a9190613ee0565b60405180910390f35b34801561075f57600080fd5b5061076861167b565b60405161077591906142bd565b60405180910390f35b61079860048036038101906107939190613846565b611685565b005b3480156107a657600080fd5b506107c160048036038101906107bc9190613723565b6118cd565b005b3480156107cf57600080fd5b506107d8611a4e565b005b3480156107e657600080fd5b5061080160048036038101906107fc9190613846565b611bcf565b005b34801561080f57600080fd5b5061082a600480360381019061082591906136a0565b611c55565b005b34801561083857600080fd5b50610841611cb1565b005b34801561084f57600080fd5b5061086a60048036038101906108659190613846565b611d59565b6040516108779190613ee0565b60405180910390f35b34801561088c57600080fd5b50610895611ece565b6040516108a291906142bd565b60405180910390f35b3480156108b757600080fd5b506108c0611ed4565b6040516108cd91906142bd565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f891906135e0565b611eda565b60405161090a91906142bd565b60405180910390f35b34801561091f57600080fd5b5061093a6004803603810190610935919061360d565b611eec565b6040516109479190613ec5565b60405180910390f35b34801561095c57600080fd5b50610977600480360381019061097291906135e0565b611f80565b005b610981612078565b73ffffffffffffffffffffffffffffffffffffffff1661099f6115a8565b73ffffffffffffffffffffffffffffffffffffffff16146109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ec906140a2565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610aca57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b3257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b425750610b4182612080565b5b9050919050565b610b51612078565b73ffffffffffffffffffffffffffffffffffffffff16610b6f6115a8565b73ffffffffffffffffffffffffffffffffffffffff1614610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc906140a2565b60405180910390fd5b610bcf82826120ea565b5050565b610bdb612078565b73ffffffffffffffffffffffffffffffffffffffff16610bf96115a8565b73ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c46906140a2565b60405180910390fd5b81600c81905550846012819055508060108190555083600b8190555082600a819055505050505050565b606060028054610c889061464c565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb49061464c565b8015610d015780601f10610cd657610100808354040283529160200191610d01565b820191906000526020600020905b815481529060010190602001808311610ce457829003601f168201915b5050505050905090565b6000610d1682612108565b610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c90614262565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d9b82611395565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0390614122565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e2b612078565b73ffffffffffffffffffffffffffffffffffffffff161480610e5a5750610e5981610e54612078565b611eec565b5b610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9090614002565b60405180910390fd5b610ea4838383612116565b505050565b6000600154905090565b60125481565b610ec48383836121c8565b505050565b600b5481565b6000610eda83611431565b8210610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613f02565b60405180910390fd5b6000610f25610ea9565b905060008060005b8381101561108b576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461101f57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561107757868414156110685781955050505050506110c7565b8380611073906146af565b9450505b508080611083906146af565b915050610f2d565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90614202565b60405180910390fd5b92915050565b6110d5612078565b73ffffffffffffffffffffffffffffffffffffffff166110f36115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906140a2565b60405180910390fd5b80600c8190555050565b61115b612078565b73ffffffffffffffffffffffffffffffffffffffff166111796115a8565b73ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c6906140a2565b60405180910390fd5b8060118190555050565b6111f483838360405180602001604052806000815250611c55565b505050565b6000601254905090565b600061120d610ea9565b821061124e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124590613f62565b60405180910390fd5b819050919050565b61125e612078565b73ffffffffffffffffffffffffffffffffffffffff1661127c6115a8565b73ffffffffffffffffffffffffffffffffffffffff16146112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c9906140a2565b60405180910390fd5b80600e90805190602001906112e89291906133ba565b5050565b6112f4612078565b73ffffffffffffffffffffffffffffffffffffffff166113126115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f906140a2565b60405180910390fd5b80600f908051906020019061137e9291906133ba565b5050565b600d60009054906101000a900460ff1681565b60006113a082612781565b600001519050919050565b6113b3612078565b73ffffffffffffffffffffffffffffffffffffffff166113d16115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e906140a2565b60405180910390fd5b8060128190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990614042565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611522612078565b73ffffffffffffffffffffffffffffffffffffffff166115406115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d906140a2565b60405180910390fd5b6115a06000612984565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115d9613440565b6115e282612781565b9050919050565b6060600380546115f89061464c565b80601f01602080910402602001604051908101604052809291908181526020018280546116249061464c565b80156116715780601f1061164657610100808354040283529160200191611671565b820191906000526020600020905b81548152906001019060200180831161165457829003601f168201915b5050505050905090565b6000600c54905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90613fe2565b60405180910390fd5b600260125414611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613fc2565b60405180910390fd5b6011547f00000000000000000000000000000000000000000000000000000000000000006117669190614508565b8161176f610ea9565b61177991906143f3565b11156117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b190614062565b60405180910390fd5b600b54816117c733611eda565b6117d191906143f3565b1115611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990614022565b60405180910390fd5b600a54811115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e906141e2565b60405180910390fd5b80600c54611865919061447a565b3410156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e90614182565b60405180910390fd5b6118b133826120ea565b6010546118bc610ea9565b106118ca5760006012819055505b50565b6118d5612078565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906140e2565b60405180910390fd5b8060076000611950612078565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119fd612078565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a429190613ec5565b60405180910390a35050565b611a56612078565b73ffffffffffffffffffffffffffffffffffffffff16611a746115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac1906140a2565b60405180910390fd5b60026009541415611b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0790614222565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611b3e90613e49565b60006040518083038185875af1925050503d8060008114611b7b576040519150601f19603f3d011682016040523d82523d6000602084013e611b80565b606091505b5050905080611bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbb90614142565b60405180910390fd5b506001600981905550565b611bd7612078565b73ffffffffffffffffffffffffffffffffffffffff16611bf56115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c42906140a2565b60405180910390fd5b80600a8190555050565b611c608484846121c8565b611c6c84848484612a48565b611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca290614162565b60405180910390fd5b50505050565b611cb9612078565b73ffffffffffffffffffffffffffffffffffffffff16611cd76115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d24906140a2565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b6060611d6482612108565b611da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9a906140c2565b60405180910390fd5b600d60009054906101000a900460ff1615611e3b576000611dc2612bdf565b90506000815111611e08576040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611e33565b80611e1284612c71565b604051602001611e23929190613e25565b6040516020818303038152906040525b915050611ec9565b600f8054611e489061464c565b80601f0160208091040260200160405190810160405280929190818152602001828054611e749061464c565b8015611ec15780601f10611e9657610100808354040283529160200191611ec1565b820191906000526020600020905b815481529060010190602001808311611ea457829003601f168201915b505050505090505b919050565b600a5481565b60085481565b6000611ee582612dd2565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f88612078565b73ffffffffffffffffffffffffffffffffffffffff16611fa66115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff3906140a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613f22565b60405180910390fd5b61207581612984565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612104828260405180602001604052806000815250612ebb565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006121d382612781565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166121fa612078565b73ffffffffffffffffffffffffffffffffffffffff161480612256575061221f612078565b73ffffffffffffffffffffffffffffffffffffffff1661223e84610d0b565b73ffffffffffffffffffffffffffffffffffffffff16145b806122725750612271826000015161226c612078565b611eec565b5b9050806122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90614102565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614082565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d90613f82565b60405180910390fd5b6123a3858585600161339b565b6123b36000848460000151612116565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661242191906144d4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166124c591906143ad565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846125cb91906143f3565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127115761264181612108565b15612710576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461277986868660016133a1565b505050505050565b612789613440565b61279282612108565b6127d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c890613f42565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106128355760017f0000000000000000000000000000000000000000000000000000000000000000846128289190614508565b61283291906143f3565b90505b60008390505b818110612943576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461292f5780935050505061297f565b50808061293b90614622565b91505061283b565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297690614242565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612a698473ffffffffffffffffffffffffffffffffffffffff166133a7565b15612bd2578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a92612078565b8786866040518563ffffffff1660e01b8152600401612ab49493929190613e79565b602060405180830381600087803b158015612ace57600080fd5b505af1925050508015612aff57506040513d601f19601f82011682018060405250810190612afc91906137d0565b60015b612b82573d8060008114612b2f576040519150601f19603f3d011682016040523d82523d6000602084013e612b34565b606091505b50600081511415612b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7190614162565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612bd7565b600190505b949350505050565b6060600e8054612bee9061464c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c1a9061464c565b8015612c675780601f10612c3c57610100808354040283529160200191612c67565b820191906000526020600020905b815481529060010190602001808311612c4a57829003601f168201915b5050505050905090565b60606000821415612cb9576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612dcd565b600082905060005b60008214612ceb578080612cd4906146af565b915050600a82612ce49190614449565b9150612cc1565b60008167ffffffffffffffff811115612d0757612d066147e5565b5b6040519080825280601f01601f191660200182016040528015612d395781602001600182028036833780820191505090505b5090505b60008514612dc657600182612d529190614508565b9150600a85612d6191906146f8565b6030612d6d91906143f3565b60f81b818381518110612d8357612d826147b6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612dbf9190614449565b9450612d3d565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90613fa2565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f29906141c2565b60405180910390fd5b612f3b81612108565b15612f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f72906141a2565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd590614282565b60405180910390fd5b612feb600085838661339b565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516130e891906143ad565b6fffffffffffffffffffffffffffffffff16815260200185836020015161310f91906143ad565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561337e57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461331e6000888488612a48565b61335d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335490614162565b60405180910390fd5b8180613368906146af565b9250508080613376906146af565b9150506132ad565b508060018190555061339360008785886133a1565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b8280546133c69061464c565b90600052602060002090601f0160209004810192826133e8576000855561342f565b82601f1061340157805160ff191683800117855561342f565b8280016001018555821561342f579182015b8281111561342e578251825591602001919060010190613413565b5b50905061343c919061347a565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561349357600081600090555060010161347b565b5090565b60006134aa6134a5846142fd565b6142d8565b9050828152602081018484840111156134c6576134c5614819565b5b6134d18482856145e0565b509392505050565b60006134ec6134e78461432e565b6142d8565b90508281526020810184848401111561350857613507614819565b5b6135138482856145e0565b509392505050565b60008135905061352a81614f8d565b92915050565b60008135905061353f81614fa4565b92915050565b60008135905061355481614fbb565b92915050565b60008151905061356981614fbb565b92915050565b600082601f83011261358457613583614814565b5b8135613594848260208601613497565b91505092915050565b600082601f8301126135b2576135b1614814565b5b81356135c28482602086016134d9565b91505092915050565b6000813590506135da81614fd2565b92915050565b6000602082840312156135f6576135f5614823565b5b60006136048482850161351b565b91505092915050565b6000806040838503121561362457613623614823565b5b60006136328582860161351b565b92505060206136438582860161351b565b9150509250929050565b60008060006060848603121561366657613665614823565b5b60006136748682870161351b565b93505060206136858682870161351b565b9250506040613696868287016135cb565b9150509250925092565b600080600080608085870312156136ba576136b9614823565b5b60006136c88782880161351b565b94505060206136d98782880161351b565b93505060406136ea878288016135cb565b925050606085013567ffffffffffffffff81111561370b5761370a61481e565b5b6137178782880161356f565b91505092959194509250565b6000806040838503121561373a57613739614823565b5b60006137488582860161351b565b925050602061375985828601613530565b9150509250929050565b6000806040838503121561377a57613779614823565b5b60006137888582860161351b565b9250506020613799858286016135cb565b9150509250929050565b6000602082840312156137b9576137b8614823565b5b60006137c784828501613545565b91505092915050565b6000602082840312156137e6576137e5614823565b5b60006137f48482850161355a565b91505092915050565b60006020828403121561381357613812614823565b5b600082013567ffffffffffffffff8111156138315761383061481e565b5b61383d8482850161359d565b91505092915050565b60006020828403121561385c5761385b614823565b5b600061386a848285016135cb565b91505092915050565b600080600080600060a0868803121561388f5761388e614823565b5b600061389d888289016135cb565b95505060206138ae888289016135cb565b94505060406138bf888289016135cb565b93505060606138d0888289016135cb565b92505060806138e1888289016135cb565b9150509295509295909350565b6138f78161453c565b82525050565b6139068161453c565b82525050565b6139158161454e565b82525050565b60006139268261435f565b6139308185614375565b93506139408185602086016145ef565b61394981614828565b840191505092915050565b600061395f8261436a565b6139698185614391565b93506139798185602086016145ef565b61398281614828565b840191505092915050565b60006139988261436a565b6139a281856143a2565b93506139b28185602086016145ef565b80840191505092915050565b60006139cb602283614391565b91506139d682614839565b604082019050919050565b60006139ee602683614391565b91506139f982614888565b604082019050919050565b6000613a11602a83614391565b9150613a1c826148d7565b604082019050919050565b6000613a34602383614391565b9150613a3f82614926565b604082019050919050565b6000613a57602583614391565b9150613a6282614975565b604082019050919050565b6000613a7a603183614391565b9150613a85826149c4565b604082019050919050565b6000613a9d601283614391565b9150613aa882614a13565b602082019050919050565b6000613ac0601e83614391565b9150613acb82614a3c565b602082019050919050565b6000613ae3603983614391565b9150613aee82614a65565b604082019050919050565b6000613b06601e83614391565b9150613b1182614ab4565b602082019050919050565b6000613b29602b83614391565b9150613b3482614add565b604082019050919050565b6000613b4c601283614391565b9150613b5782614b2c565b602082019050919050565b6000613b6f602683614391565b9150613b7a82614b55565b604082019050919050565b6000613b92602083614391565b9150613b9d82614ba4565b602082019050919050565b6000613bb5602f83614391565b9150613bc082614bcd565b604082019050919050565b6000613bd8601a83614391565b9150613be382614c1c565b602082019050919050565b6000613bfb603283614391565b9150613c0682614c45565b604082019050919050565b6000613c1e602283614391565b9150613c2982614c94565b604082019050919050565b6000613c41600083614386565b9150613c4c82614ce3565b600082019050919050565b6000613c64601083614391565b9150613c6f82614ce6565b602082019050919050565b6000613c87603383614391565b9150613c9282614d0f565b604082019050919050565b6000613caa601683614391565b9150613cb582614d5e565b602082019050919050565b6000613ccd601d83614391565b9150613cd882614d87565b602082019050919050565b6000613cf0602183614391565b9150613cfb82614db0565b604082019050919050565b6000613d13601683614391565b9150613d1e82614dff565b602082019050919050565b6000613d36602e83614391565b9150613d4182614e28565b604082019050919050565b6000613d59601f83614391565b9150613d6482614e77565b602082019050919050565b6000613d7c602f83614391565b9150613d8782614ea0565b604082019050919050565b6000613d9f602d83614391565b9150613daa82614eef565b604082019050919050565b6000613dc2602283614391565b9150613dcd82614f3e565b604082019050919050565b604082016000820151613dee60008501826138ee565b506020820151613e016020850182613e16565b50505050565b613e10816145c2565b82525050565b613e1f816145cc565b82525050565b6000613e31828561398d565b9150613e3d828461398d565b91508190509392505050565b6000613e5482613c34565b9150819050919050565b6000602082019050613e7360008301846138fd565b92915050565b6000608082019050613e8e60008301876138fd565b613e9b60208301866138fd565b613ea86040830185613e07565b8181036060830152613eba818461391b565b905095945050505050565b6000602082019050613eda600083018461390c565b92915050565b60006020820190508181036000830152613efa8184613954565b905092915050565b60006020820190508181036000830152613f1b816139be565b9050919050565b60006020820190508181036000830152613f3b816139e1565b9050919050565b60006020820190508181036000830152613f5b81613a04565b9050919050565b60006020820190508181036000830152613f7b81613a27565b9050919050565b60006020820190508181036000830152613f9b81613a4a565b9050919050565b60006020820190508181036000830152613fbb81613a6d565b9050919050565b60006020820190508181036000830152613fdb81613a90565b9050919050565b60006020820190508181036000830152613ffb81613ab3565b9050919050565b6000602082019050818103600083015261401b81613ad6565b9050919050565b6000602082019050818103600083015261403b81613af9565b9050919050565b6000602082019050818103600083015261405b81613b1c565b9050919050565b6000602082019050818103600083015261407b81613b3f565b9050919050565b6000602082019050818103600083015261409b81613b62565b9050919050565b600060208201905081810360008301526140bb81613b85565b9050919050565b600060208201905081810360008301526140db81613ba8565b9050919050565b600060208201905081810360008301526140fb81613bcb565b9050919050565b6000602082019050818103600083015261411b81613bee565b9050919050565b6000602082019050818103600083015261413b81613c11565b9050919050565b6000602082019050818103600083015261415b81613c57565b9050919050565b6000602082019050818103600083015261417b81613c7a565b9050919050565b6000602082019050818103600083015261419b81613c9d565b9050919050565b600060208201905081810360008301526141bb81613cc0565b9050919050565b600060208201905081810360008301526141db81613ce3565b9050919050565b600060208201905081810360008301526141fb81613d06565b9050919050565b6000602082019050818103600083015261421b81613d29565b9050919050565b6000602082019050818103600083015261423b81613d4c565b9050919050565b6000602082019050818103600083015261425b81613d6f565b9050919050565b6000602082019050818103600083015261427b81613d92565b9050919050565b6000602082019050818103600083015261429b81613db5565b9050919050565b60006040820190506142b76000830184613dd8565b92915050565b60006020820190506142d26000830184613e07565b92915050565b60006142e26142f3565b90506142ee828261467e565b919050565b6000604051905090565b600067ffffffffffffffff821115614318576143176147e5565b5b61432182614828565b9050602081019050919050565b600067ffffffffffffffff821115614349576143486147e5565b5b61435282614828565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143b882614586565b91506143c383614586565b9250826fffffffffffffffffffffffffffffffff038211156143e8576143e7614729565b5b828201905092915050565b60006143fe826145c2565b9150614409836145c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561443e5761443d614729565b5b828201905092915050565b6000614454826145c2565b915061445f836145c2565b92508261446f5761446e614758565b5b828204905092915050565b6000614485826145c2565b9150614490836145c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144c9576144c8614729565b5b828202905092915050565b60006144df82614586565b91506144ea83614586565b9250828210156144fd576144fc614729565b5b828203905092915050565b6000614513826145c2565b915061451e836145c2565b92508282101561453157614530614729565b5b828203905092915050565b6000614547826145a2565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561460d5780820151818401526020810190506145f2565b8381111561461c576000848401525b50505050565b600061462d826145c2565b9150600082141561464157614640614729565b5b600182039050919050565b6000600282049050600182168061466457607f821691505b6020821081141561467857614677614787565b5b50919050565b61468782614828565b810181811067ffffffffffffffff821117156146a6576146a56147e5565b5b80604052505050565b60006146ba826145c2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146ed576146ec614729565b5b600182019050919050565b6000614703826145c2565b915061470e836145c2565b92508261471e5761471d614758565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f5175616e74697479206578636565647320616c6c6f776564204d696e74730000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614f968161453c565b8114614fa157600080fd5b50565b614fad8161454e565b8114614fb857600080fd5b50565b614fc48161455a565b8114614fcf57600080fd5b50565b614fdb816145c2565b8114614fe657600080fd5b5056fea26469706673582212209a2dc00855e729235473b4550bb4a80674dd565036ec123ca8cee0ce6e3c121964736f6c6343000807003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d6131587a38366b73736d47747854414b5153524a665a7654394e763672744e4d5a416e7256396d6a5671775a

Deployed Bytecode

0x6080604052600436106102465760003560e01c80636352211e11610139578063a22cb465116100b6578063c87b56dd1161007a578063c87b56dd14610843578063d04950a114610880578063d7224ba0146108ab578063dc33e681146108d6578063e985e9c514610913578063f2fde38b1461095057610246565b8063a22cb4651461079a578063ac446002146107c3578063af7b26e9146107da578063b88d4fde14610803578063bd0a84391461082c57610246565b80638da5cb5b116100fd5780638da5cb5b146106c05780639231ab2a146106eb57806395d89b411461072857806398d5fdca14610753578063a0712d681461077e57610246565b80636352211e146105db57806369ba1a751461061857806370a0823114610641578063715018a61461067e5780638d859f3e1461069557610246565b80632f2ffc57116101c75780634e69d5601161018b5780634e69d560146104f65780634f6ccce71461052157806355f804b31461055e5780635c37809d1461058757806362c6f7b9146105b057610246565b80632f2ffc57146104135780632f745c591461043e5780633fd173661461047b5780634256dbe3146104a457806342842e0e146104cd57610246565b8063081812fc1161020e578063081812fc1461032e578063095ea7b31461036b57806318160ddd14610394578063200d2ed2146103bf57806323b872dd146103ea57610246565b80630199e3471461024b57806301ffc9a714610274578063050225ea146102b157806305060ed9146102da57806306fdde0314610303575b600080fd5b34801561025757600080fd5b50610272600480360381019061026d9190613846565b610979565b005b34801561028057600080fd5b5061029b600480360381019061029691906137a3565b6109ff565b6040516102a89190613ec5565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190613763565b610b49565b005b3480156102e657600080fd5b5061030160048036038101906102fc9190613873565b610bd3565b005b34801561030f57600080fd5b50610318610c79565b6040516103259190613ee0565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190613846565b610d0b565b6040516103629190613e5e565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190613763565b610d90565b005b3480156103a057600080fd5b506103a9610ea9565b6040516103b691906142bd565b60405180910390f35b3480156103cb57600080fd5b506103d4610eb3565b6040516103e191906142bd565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c919061364d565b610eb9565b005b34801561041f57600080fd5b50610428610ec9565b60405161043591906142bd565b60405180910390f35b34801561044a57600080fd5b5061046560048036038101906104609190613763565b610ecf565b60405161047291906142bd565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190613846565b6110cd565b005b3480156104b057600080fd5b506104cb60048036038101906104c69190613846565b611153565b005b3480156104d957600080fd5b506104f460048036038101906104ef919061364d565b6111d9565b005b34801561050257600080fd5b5061050b6111f9565b60405161051891906142bd565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190613846565b611203565b60405161055591906142bd565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906137fd565b611256565b005b34801561059357600080fd5b506105ae60048036038101906105a991906137fd565b6112ec565b005b3480156105bc57600080fd5b506105c5611382565b6040516105d29190613ec5565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190613846565b611395565b60405161060f9190613e5e565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190613846565b6113ab565b005b34801561064d57600080fd5b50610668600480360381019061066391906135e0565b611431565b60405161067591906142bd565b60405180910390f35b34801561068a57600080fd5b5061069361151a565b005b3480156106a157600080fd5b506106aa6115a2565b6040516106b791906142bd565b60405180910390f35b3480156106cc57600080fd5b506106d56115a8565b6040516106e29190613e5e565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190613846565b6115d1565b60405161071f91906142a2565b60405180910390f35b34801561073457600080fd5b5061073d6115e9565b60405161074a9190613ee0565b60405180910390f35b34801561075f57600080fd5b5061076861167b565b60405161077591906142bd565b60405180910390f35b61079860048036038101906107939190613846565b611685565b005b3480156107a657600080fd5b506107c160048036038101906107bc9190613723565b6118cd565b005b3480156107cf57600080fd5b506107d8611a4e565b005b3480156107e657600080fd5b5061080160048036038101906107fc9190613846565b611bcf565b005b34801561080f57600080fd5b5061082a600480360381019061082591906136a0565b611c55565b005b34801561083857600080fd5b50610841611cb1565b005b34801561084f57600080fd5b5061086a60048036038101906108659190613846565b611d59565b6040516108779190613ee0565b60405180910390f35b34801561088c57600080fd5b50610895611ece565b6040516108a291906142bd565b60405180910390f35b3480156108b757600080fd5b506108c0611ed4565b6040516108cd91906142bd565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f891906135e0565b611eda565b60405161090a91906142bd565b60405180910390f35b34801561091f57600080fd5b5061093a6004803603810190610935919061360d565b611eec565b6040516109479190613ec5565b60405180910390f35b34801561095c57600080fd5b50610977600480360381019061097291906135e0565b611f80565b005b610981612078565b73ffffffffffffffffffffffffffffffffffffffff1661099f6115a8565b73ffffffffffffffffffffffffffffffffffffffff16146109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ec906140a2565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610aca57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b3257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b425750610b4182612080565b5b9050919050565b610b51612078565b73ffffffffffffffffffffffffffffffffffffffff16610b6f6115a8565b73ffffffffffffffffffffffffffffffffffffffff1614610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc906140a2565b60405180910390fd5b610bcf82826120ea565b5050565b610bdb612078565b73ffffffffffffffffffffffffffffffffffffffff16610bf96115a8565b73ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c46906140a2565b60405180910390fd5b81600c81905550846012819055508060108190555083600b8190555082600a819055505050505050565b606060028054610c889061464c565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb49061464c565b8015610d015780601f10610cd657610100808354040283529160200191610d01565b820191906000526020600020905b815481529060010190602001808311610ce457829003601f168201915b5050505050905090565b6000610d1682612108565b610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c90614262565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d9b82611395565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0390614122565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e2b612078565b73ffffffffffffffffffffffffffffffffffffffff161480610e5a5750610e5981610e54612078565b611eec565b5b610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9090614002565b60405180910390fd5b610ea4838383612116565b505050565b6000600154905090565b60125481565b610ec48383836121c8565b505050565b600b5481565b6000610eda83611431565b8210610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613f02565b60405180910390fd5b6000610f25610ea9565b905060008060005b8381101561108b576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461101f57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561107757868414156110685781955050505050506110c7565b8380611073906146af565b9450505b508080611083906146af565b915050610f2d565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90614202565b60405180910390fd5b92915050565b6110d5612078565b73ffffffffffffffffffffffffffffffffffffffff166110f36115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906140a2565b60405180910390fd5b80600c8190555050565b61115b612078565b73ffffffffffffffffffffffffffffffffffffffff166111796115a8565b73ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c6906140a2565b60405180910390fd5b8060118190555050565b6111f483838360405180602001604052806000815250611c55565b505050565b6000601254905090565b600061120d610ea9565b821061124e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124590613f62565b60405180910390fd5b819050919050565b61125e612078565b73ffffffffffffffffffffffffffffffffffffffff1661127c6115a8565b73ffffffffffffffffffffffffffffffffffffffff16146112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c9906140a2565b60405180910390fd5b80600e90805190602001906112e89291906133ba565b5050565b6112f4612078565b73ffffffffffffffffffffffffffffffffffffffff166113126115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f906140a2565b60405180910390fd5b80600f908051906020019061137e9291906133ba565b5050565b600d60009054906101000a900460ff1681565b60006113a082612781565b600001519050919050565b6113b3612078565b73ffffffffffffffffffffffffffffffffffffffff166113d16115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e906140a2565b60405180910390fd5b8060128190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990614042565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611522612078565b73ffffffffffffffffffffffffffffffffffffffff166115406115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d906140a2565b60405180910390fd5b6115a06000612984565b565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115d9613440565b6115e282612781565b9050919050565b6060600380546115f89061464c565b80601f01602080910402602001604051908101604052809291908181526020018280546116249061464c565b80156116715780601f1061164657610100808354040283529160200191611671565b820191906000526020600020905b81548152906001019060200180831161165457829003601f168201915b5050505050905090565b6000600c54905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90613fe2565b60405180910390fd5b600260125414611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613fc2565b60405180910390fd5b6011547f00000000000000000000000000000000000000000000000000000000000027106117669190614508565b8161176f610ea9565b61177991906143f3565b11156117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b190614062565b60405180910390fd5b600b54816117c733611eda565b6117d191906143f3565b1115611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990614022565b60405180910390fd5b600a54811115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e906141e2565b60405180910390fd5b80600c54611865919061447a565b3410156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e90614182565b60405180910390fd5b6118b133826120ea565b6010546118bc610ea9565b106118ca5760006012819055505b50565b6118d5612078565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906140e2565b60405180910390fd5b8060076000611950612078565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119fd612078565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a429190613ec5565b60405180910390a35050565b611a56612078565b73ffffffffffffffffffffffffffffffffffffffff16611a746115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac1906140a2565b60405180910390fd5b60026009541415611b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0790614222565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611b3e90613e49565b60006040518083038185875af1925050503d8060008114611b7b576040519150601f19603f3d011682016040523d82523d6000602084013e611b80565b606091505b5050905080611bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbb90614142565b60405180910390fd5b506001600981905550565b611bd7612078565b73ffffffffffffffffffffffffffffffffffffffff16611bf56115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c42906140a2565b60405180910390fd5b80600a8190555050565b611c608484846121c8565b611c6c84848484612a48565b611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca290614162565b60405180910390fd5b50505050565b611cb9612078565b73ffffffffffffffffffffffffffffffffffffffff16611cd76115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d24906140a2565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b6060611d6482612108565b611da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9a906140c2565b60405180910390fd5b600d60009054906101000a900460ff1615611e3b576000611dc2612bdf565b90506000815111611e08576040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611e33565b80611e1284612c71565b604051602001611e23929190613e25565b6040516020818303038152906040525b915050611ec9565b600f8054611e489061464c565b80601f0160208091040260200160405190810160405280929190818152602001828054611e749061464c565b8015611ec15780601f10611e9657610100808354040283529160200191611ec1565b820191906000526020600020905b815481529060010190602001808311611ea457829003601f168201915b505050505090505b919050565b600a5481565b60085481565b6000611ee582612dd2565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f88612078565b73ffffffffffffffffffffffffffffffffffffffff16611fa66115a8565b73ffffffffffffffffffffffffffffffffffffffff1614611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff3906140a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613f22565b60405180910390fd5b61207581612984565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612104828260405180602001604052806000815250612ebb565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006121d382612781565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166121fa612078565b73ffffffffffffffffffffffffffffffffffffffff161480612256575061221f612078565b73ffffffffffffffffffffffffffffffffffffffff1661223e84610d0b565b73ffffffffffffffffffffffffffffffffffffffff16145b806122725750612271826000015161226c612078565b611eec565b5b9050806122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90614102565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614082565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d90613f82565b60405180910390fd5b6123a3858585600161339b565b6123b36000848460000151612116565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661242191906144d4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166124c591906143ad565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846125cb91906143f3565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127115761264181612108565b15612710576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461277986868660016133a1565b505050505050565b612789613440565b61279282612108565b6127d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c890613f42565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000003283106128355760017f0000000000000000000000000000000000000000000000000000000000000032846128289190614508565b61283291906143f3565b90505b60008390505b818110612943576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461292f5780935050505061297f565b50808061293b90614622565b91505061283b565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297690614242565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612a698473ffffffffffffffffffffffffffffffffffffffff166133a7565b15612bd2578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a92612078565b8786866040518563ffffffff1660e01b8152600401612ab49493929190613e79565b602060405180830381600087803b158015612ace57600080fd5b505af1925050508015612aff57506040513d601f19601f82011682018060405250810190612afc91906137d0565b60015b612b82573d8060008114612b2f576040519150601f19603f3d011682016040523d82523d6000602084013e612b34565b606091505b50600081511415612b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7190614162565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612bd7565b600190505b949350505050565b6060600e8054612bee9061464c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c1a9061464c565b8015612c675780601f10612c3c57610100808354040283529160200191612c67565b820191906000526020600020905b815481529060010190602001808311612c4a57829003601f168201915b5050505050905090565b60606000821415612cb9576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612dcd565b600082905060005b60008214612ceb578080612cd4906146af565b915050600a82612ce49190614449565b9150612cc1565b60008167ffffffffffffffff811115612d0757612d066147e5565b5b6040519080825280601f01601f191660200182016040528015612d395781602001600182028036833780820191505090505b5090505b60008514612dc657600182612d529190614508565b9150600a85612d6191906146f8565b6030612d6d91906143f3565b60f81b818381518110612d8357612d826147b6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612dbf9190614449565b9450612d3d565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90613fa2565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f29906141c2565b60405180910390fd5b612f3b81612108565b15612f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f72906141a2565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000032831115612fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd590614282565b60405180910390fd5b612feb600085838661339b565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516130e891906143ad565b6fffffffffffffffffffffffffffffffff16815260200185836020015161310f91906143ad565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561337e57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461331e6000888488612a48565b61335d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335490614162565b60405180910390fd5b8180613368906146af565b9250508080613376906146af565b9150506132ad565b508060018190555061339360008785886133a1565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b8280546133c69061464c565b90600052602060002090601f0160209004810192826133e8576000855561342f565b82601f1061340157805160ff191683800117855561342f565b8280016001018555821561342f579182015b8281111561342e578251825591602001919060010190613413565b5b50905061343c919061347a565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561349357600081600090555060010161347b565b5090565b60006134aa6134a5846142fd565b6142d8565b9050828152602081018484840111156134c6576134c5614819565b5b6134d18482856145e0565b509392505050565b60006134ec6134e78461432e565b6142d8565b90508281526020810184848401111561350857613507614819565b5b6135138482856145e0565b509392505050565b60008135905061352a81614f8d565b92915050565b60008135905061353f81614fa4565b92915050565b60008135905061355481614fbb565b92915050565b60008151905061356981614fbb565b92915050565b600082601f83011261358457613583614814565b5b8135613594848260208601613497565b91505092915050565b600082601f8301126135b2576135b1614814565b5b81356135c28482602086016134d9565b91505092915050565b6000813590506135da81614fd2565b92915050565b6000602082840312156135f6576135f5614823565b5b60006136048482850161351b565b91505092915050565b6000806040838503121561362457613623614823565b5b60006136328582860161351b565b92505060206136438582860161351b565b9150509250929050565b60008060006060848603121561366657613665614823565b5b60006136748682870161351b565b93505060206136858682870161351b565b9250506040613696868287016135cb565b9150509250925092565b600080600080608085870312156136ba576136b9614823565b5b60006136c88782880161351b565b94505060206136d98782880161351b565b93505060406136ea878288016135cb565b925050606085013567ffffffffffffffff81111561370b5761370a61481e565b5b6137178782880161356f565b91505092959194509250565b6000806040838503121561373a57613739614823565b5b60006137488582860161351b565b925050602061375985828601613530565b9150509250929050565b6000806040838503121561377a57613779614823565b5b60006137888582860161351b565b9250506020613799858286016135cb565b9150509250929050565b6000602082840312156137b9576137b8614823565b5b60006137c784828501613545565b91505092915050565b6000602082840312156137e6576137e5614823565b5b60006137f48482850161355a565b91505092915050565b60006020828403121561381357613812614823565b5b600082013567ffffffffffffffff8111156138315761383061481e565b5b61383d8482850161359d565b91505092915050565b60006020828403121561385c5761385b614823565b5b600061386a848285016135cb565b91505092915050565b600080600080600060a0868803121561388f5761388e614823565b5b600061389d888289016135cb565b95505060206138ae888289016135cb565b94505060406138bf888289016135cb565b93505060606138d0888289016135cb565b92505060806138e1888289016135cb565b9150509295509295909350565b6138f78161453c565b82525050565b6139068161453c565b82525050565b6139158161454e565b82525050565b60006139268261435f565b6139308185614375565b93506139408185602086016145ef565b61394981614828565b840191505092915050565b600061395f8261436a565b6139698185614391565b93506139798185602086016145ef565b61398281614828565b840191505092915050565b60006139988261436a565b6139a281856143a2565b93506139b28185602086016145ef565b80840191505092915050565b60006139cb602283614391565b91506139d682614839565b604082019050919050565b60006139ee602683614391565b91506139f982614888565b604082019050919050565b6000613a11602a83614391565b9150613a1c826148d7565b604082019050919050565b6000613a34602383614391565b9150613a3f82614926565b604082019050919050565b6000613a57602583614391565b9150613a6282614975565b604082019050919050565b6000613a7a603183614391565b9150613a85826149c4565b604082019050919050565b6000613a9d601283614391565b9150613aa882614a13565b602082019050919050565b6000613ac0601e83614391565b9150613acb82614a3c565b602082019050919050565b6000613ae3603983614391565b9150613aee82614a65565b604082019050919050565b6000613b06601e83614391565b9150613b1182614ab4565b602082019050919050565b6000613b29602b83614391565b9150613b3482614add565b604082019050919050565b6000613b4c601283614391565b9150613b5782614b2c565b602082019050919050565b6000613b6f602683614391565b9150613b7a82614b55565b604082019050919050565b6000613b92602083614391565b9150613b9d82614ba4565b602082019050919050565b6000613bb5602f83614391565b9150613bc082614bcd565b604082019050919050565b6000613bd8601a83614391565b9150613be382614c1c565b602082019050919050565b6000613bfb603283614391565b9150613c0682614c45565b604082019050919050565b6000613c1e602283614391565b9150613c2982614c94565b604082019050919050565b6000613c41600083614386565b9150613c4c82614ce3565b600082019050919050565b6000613c64601083614391565b9150613c6f82614ce6565b602082019050919050565b6000613c87603383614391565b9150613c9282614d0f565b604082019050919050565b6000613caa601683614391565b9150613cb582614d5e565b602082019050919050565b6000613ccd601d83614391565b9150613cd882614d87565b602082019050919050565b6000613cf0602183614391565b9150613cfb82614db0565b604082019050919050565b6000613d13601683614391565b9150613d1e82614dff565b602082019050919050565b6000613d36602e83614391565b9150613d4182614e28565b604082019050919050565b6000613d59601f83614391565b9150613d6482614e77565b602082019050919050565b6000613d7c602f83614391565b9150613d8782614ea0565b604082019050919050565b6000613d9f602d83614391565b9150613daa82614eef565b604082019050919050565b6000613dc2602283614391565b9150613dcd82614f3e565b604082019050919050565b604082016000820151613dee60008501826138ee565b506020820151613e016020850182613e16565b50505050565b613e10816145c2565b82525050565b613e1f816145cc565b82525050565b6000613e31828561398d565b9150613e3d828461398d565b91508190509392505050565b6000613e5482613c34565b9150819050919050565b6000602082019050613e7360008301846138fd565b92915050565b6000608082019050613e8e60008301876138fd565b613e9b60208301866138fd565b613ea86040830185613e07565b8181036060830152613eba818461391b565b905095945050505050565b6000602082019050613eda600083018461390c565b92915050565b60006020820190508181036000830152613efa8184613954565b905092915050565b60006020820190508181036000830152613f1b816139be565b9050919050565b60006020820190508181036000830152613f3b816139e1565b9050919050565b60006020820190508181036000830152613f5b81613a04565b9050919050565b60006020820190508181036000830152613f7b81613a27565b9050919050565b60006020820190508181036000830152613f9b81613a4a565b9050919050565b60006020820190508181036000830152613fbb81613a6d565b9050919050565b60006020820190508181036000830152613fdb81613a90565b9050919050565b60006020820190508181036000830152613ffb81613ab3565b9050919050565b6000602082019050818103600083015261401b81613ad6565b9050919050565b6000602082019050818103600083015261403b81613af9565b9050919050565b6000602082019050818103600083015261405b81613b1c565b9050919050565b6000602082019050818103600083015261407b81613b3f565b9050919050565b6000602082019050818103600083015261409b81613b62565b9050919050565b600060208201905081810360008301526140bb81613b85565b9050919050565b600060208201905081810360008301526140db81613ba8565b9050919050565b600060208201905081810360008301526140fb81613bcb565b9050919050565b6000602082019050818103600083015261411b81613bee565b9050919050565b6000602082019050818103600083015261413b81613c11565b9050919050565b6000602082019050818103600083015261415b81613c57565b9050919050565b6000602082019050818103600083015261417b81613c7a565b9050919050565b6000602082019050818103600083015261419b81613c9d565b9050919050565b600060208201905081810360008301526141bb81613cc0565b9050919050565b600060208201905081810360008301526141db81613ce3565b9050919050565b600060208201905081810360008301526141fb81613d06565b9050919050565b6000602082019050818103600083015261421b81613d29565b9050919050565b6000602082019050818103600083015261423b81613d4c565b9050919050565b6000602082019050818103600083015261425b81613d6f565b9050919050565b6000602082019050818103600083015261427b81613d92565b9050919050565b6000602082019050818103600083015261429b81613db5565b9050919050565b60006040820190506142b76000830184613dd8565b92915050565b60006020820190506142d26000830184613e07565b92915050565b60006142e26142f3565b90506142ee828261467e565b919050565b6000604051905090565b600067ffffffffffffffff821115614318576143176147e5565b5b61432182614828565b9050602081019050919050565b600067ffffffffffffffff821115614349576143486147e5565b5b61435282614828565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143b882614586565b91506143c383614586565b9250826fffffffffffffffffffffffffffffffff038211156143e8576143e7614729565b5b828201905092915050565b60006143fe826145c2565b9150614409836145c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561443e5761443d614729565b5b828201905092915050565b6000614454826145c2565b915061445f836145c2565b92508261446f5761446e614758565b5b828204905092915050565b6000614485826145c2565b9150614490836145c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144c9576144c8614729565b5b828202905092915050565b60006144df82614586565b91506144ea83614586565b9250828210156144fd576144fc614729565b5b828203905092915050565b6000614513826145c2565b915061451e836145c2565b92508282101561453157614530614729565b5b828203905092915050565b6000614547826145a2565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561460d5780820151818401526020810190506145f2565b8381111561461c576000848401525b50505050565b600061462d826145c2565b9150600082141561464157614640614729565b5b600182039050919050565b6000600282049050600182168061466457607f821691505b6020821081141561467857614677614787565b5b50919050565b61468782614828565b810181811067ffffffffffffffff821117156146a6576146a56147e5565b5b80604052505050565b60006146ba826145c2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146ed576146ec614729565b5b600182019050919050565b6000614703826145c2565b915061470e836145c2565b92508261471e5761471d614758565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f5175616e74697479206578636565647320616c6c6f776564204d696e74730000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614f968161453c565b8114614fa157600080fd5b50565b614fad8161454e565b8114614fb857600080fd5b50565b614fc48161455a565b8114614fcf57600080fd5b50565b614fdb816145c2565b8114614fe657600080fd5b5056fea26469706673582212209a2dc00855e729235473b4550bb4a80674dd565036ec123ca8cee0ce6e3c121964736f6c63430008070033

Deployed Bytecode Sourcemap

20205:3843:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23324:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11522:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23654:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23823:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13094:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14295:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13911:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10492:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20827:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14978:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20378:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10773:744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23116:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23742:74;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15125:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23502:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10591:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22368:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22263:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20657:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12971:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23426:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11897:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2981:103;;;;;;;;;;;;;:::i;:::-;;20457:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2758:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22693:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13193:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23579:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21268:564;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14504:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22844:181;;;;;;;;;;;;;:::i;:::-;;23218:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15287:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23029:83;;;;;;;;;;;;;:::i;:::-;;21839:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20299:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18417:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22582:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14785:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3093:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23324:98;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23415:1:::1;23397:15;:19;;;;23324:98:::0;:::o;11522:370::-;11649:4;11694:25;11679:40;;;:11;:40;;;;:99;;;;11745:33;11730:48;;;:11;:48;;;;11679:99;:160;;;;11804:35;11789:50;;;:11;:50;;;;11679:160;:207;;;;11850:36;11874:11;11850:23;:36::i;:::-;11679:207;11665:221;;11522:370;;;:::o;23654:80::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23713:15:::1;23723:1;23726;23713:9;:15::i;:::-;23654:80:::0;;:::o;23823:222::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23936:1:::1;23928:5;:9;;;;23955:1;23946:6;:10;;;;23975:2;23966:6;:11;;;;24004:3;23986:15;:21;;;;24036:3;24016:17;:23;;;;23823:222:::0;;;;;:::o;13094:94::-;13148:13;13177:5;13170:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13094:94;:::o;14295:204::-;14363:7;14387:16;14395:7;14387;:16::i;:::-;14379:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14469:15;:24;14485:7;14469:24;;;;;;;;;;;;;;;;;;;;;14462:31;;14295:204;;;:::o;13911:379::-;13980:13;13996:24;14012:7;13996:15;:24::i;:::-;13980:40;;14041:5;14035:11;;:2;:11;;;;14027:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14126:5;14110:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;14135:37;14152:5;14159:12;:10;:12::i;:::-;14135:16;:37::i;:::-;14110:62;14094:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;14256:28;14265:2;14269:7;14278:5;14256:8;:28::i;:::-;13973:317;13911:379;;:::o;10492:94::-;10545:7;10568:12;;10561:19;;10492:94;:::o;20827:22::-;;;;:::o;14978:142::-;15086:28;15096:4;15102:2;15106:7;15086:9;:28::i;:::-;14978:142;;;:::o;20378:35::-;;;;:::o;10773:744::-;10882:7;10917:16;10927:5;10917:9;:16::i;:::-;10909:5;:24;10901:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10979:22;11004:13;:11;:13::i;:::-;10979:38;;11024:19;11054:25;11104:9;11099:350;11123:14;11119:1;:18;11099:350;;;11153:31;11187:11;:14;11199:1;11187:14;;;;;;;;;;;11153:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11240:1;11214:28;;:9;:14;;;:28;;;11210:89;;11275:9;:14;;;11255:34;;11210:89;11332:5;11311:26;;:17;:26;;;11307:135;;;11369:5;11354:11;:20;11350:59;;;11396:1;11389:8;;;;;;;;;11350:59;11419:13;;;;;:::i;:::-;;;;11307:135;11144:305;11139:3;;;;;:::i;:::-;;;;11099:350;;;;11455:56;;;;;;;;;;:::i;:::-;;;;;;;;10773:744;;;;;:::o;23116:98::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23199:9:::1;23191:5;:17;;;;23116:98:::0;:::o;23742:74::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23809:1:::1;23799:7;:11;;;;23742:74:::0;:::o;15125:157::-;15237:39;15254:4;15260:2;15264:7;15237:39;;;;;;;;;;;;:16;:39::i;:::-;15125:157;;;:::o;23502:73::-;23542:4;23563:6;;23556:13;;23502:73;:::o;10591:177::-;10658:7;10690:13;:11;:13::i;:::-;10682:5;:21;10674:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10757:5;10750:12;;10591:177;;;:::o;22368:98::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22453:7:::1;22437:13;:23;;;;;;;;;;;;:::i;:::-;;22368:98:::0;:::o;22263:99::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22353:3:::1;22335:15;:21;;;;;;;;;;;;:::i;:::-;;22263:99:::0;:::o;20657:29::-;;;;;;;;;;;;;:::o;12971:118::-;13035:7;13058:20;13070:7;13058:11;:20::i;:::-;:25;;;13051:32;;12971:118;;;:::o;23426:72::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23491:1:::1;23482:6;:10;;;;23426:72:::0;:::o;11897:211::-;11961:7;12002:1;11985:19;;:5;:19;;;;11977:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12074:12;:19;12087:5;12074:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;12066:36;;12059:43;;11897:211;;;:::o;2981:103::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3046:30:::1;3073:1;3046:18;:30::i;:::-;2981:103::o:0;20457:34::-;;;;:::o;2758:87::-;2804:7;2831:6;;;;;;;;;;;2824:13;;2758:87;:::o;22693:147::-;22774:21;;:::i;:::-;22814:20;22826:7;22814:11;:20::i;:::-;22807:27;;22693:147;;;:::o;13193:98::-;13249:13;13278:7;13271:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13193:98;:::o;23579:71::-;23618:4;23639:5;;23632:12;;23579:71;:::o;21268:564::-;21202:10;21189:23;;:9;:23;;;21181:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21355:1:::1;21345:6;;:11;21337:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;21440:7;;21423:14;:24;;;;:::i;:::-;21411:8;21395:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:52;;21387:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21527:15;;21515:8;21488:24;21501:10;21488:12;:24::i;:::-;:35;;;;:::i;:::-;:54;;21477:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;21610:17;;21598:8;:29;;21588:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21689:8;21681:5;;:16;;;;:::i;:::-;21668:9;:29;;21660:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21731:31;21741:10;21753:8;21731:9;:31::i;:::-;21789:6;;21773:13;:11;:13::i;:::-;:22;21769:58;;21818:1;21811:6;:8;;;;21769:58;21268:564:::0;:::o;14504:274::-;14607:12;:10;:12::i;:::-;14595:24;;:8;:24;;;;14587:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14704:8;14659:18;:32;14678:12;:10;:12::i;:::-;14659:32;;;;;;;;;;;;;;;:42;14692:8;14659:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14753:8;14724:48;;14739:12;:10;:12::i;:::-;14724:48;;;14763:8;14724:48;;;;;;:::i;:::-;;;;;;;;14504:274;;:::o;22844:181::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;540:1:::1;686:7;;:19;;678:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;540:1;747:7;:18;;;;22909:12:::2;22927:10;:15;;22950:21;22927:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22908:68;;;22991:7;22983:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;22901:124;496:1:::1;790:7;:22;;;;22844:181::o:0;23218:102::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23313:1:::1;23293:17;:21;;;;23218:102:::0;:::o;15287:311::-;15424:28;15434:4;15440:2;15444:7;15424:9;:28::i;:::-;15475:48;15498:4;15504:2;15508:7;15517:5;15475:22;:48::i;:::-;15459:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;15287:311;;;;:::o;23029:83::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23097:9:::1;;;;;;;;;;;23096:10;23084:9;;:22;;;;;;;;;;;;;;;;;;23029:83::o:0;21839:418::-;21912:13;21942:16;21950:7;21942;:16::i;:::-;21934:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22019:9;;;;;;;;;;;22016:236;;;22036:21;22060:10;:8;:10::i;:::-;22036:34;;22115:1;22097:7;22091:21;:25;:109;;;;;;;;;;;;;;;;;;;;;;22152:7;22161:18;:7;:16;:18::i;:::-;22135:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22091:109;22077:123;;;;;22016:236;22229:15;22222:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21839:418;;;;:::o;20299:37::-;;;;:::o;18417:43::-;;;;:::o;22582:107::-;22640:7;22663:20;22677:5;22663:13;:20::i;:::-;22656:27;;22582:107;;;:::o;14785:186::-;14907:4;14930:18;:25;14949:5;14930:25;;;;;;;;;;;;;;;:35;14956:8;14930:35;;;;;;;;;;;;;;;;;;;;;;;;;14923:42;;14785:186;;;;:::o;3093:201::-;2903:12;:10;:12::i;:::-;2892:23;;:7;:5;:7::i;:::-;:23;;;2884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3202:1:::1;3182:22;;:8;:22;;;;3174:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3258:28;3277:8;3258:18;:28::i;:::-;3093:201:::0;:::o;2301:98::-;2354:7;2381:10;2374:17;;2301:98;:::o;7411:157::-;7496:4;7535:25;7520:40;;;:11;:40;;;;7513:47;;7411:157;;;:::o;15714:98::-;15779:27;15789:2;15793:8;15779:27;;;;;;;;;;;;:9;:27::i;:::-;15714:98;;:::o;15603:105::-;15660:4;15690:12;;15680:7;:22;15673:29;;15603:105;;;:::o;18239:172::-;18363:2;18336:15;:24;18352:7;18336:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18397:7;18393:2;18377:28;;18386:5;18377:28;;;;;;;;;;;;18239:172;;;:::o;16974:1260::-;17071:35;17109:20;17121:7;17109:11;:20::i;:::-;17071:58;;17138:22;17180:13;:18;;;17164:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;17233:12;:10;:12::i;:::-;17209:36;;:20;17221:7;17209:11;:20::i;:::-;:36;;;17164:81;:142;;;;17256:50;17273:13;:18;;;17293:12;:10;:12::i;:::-;17256:16;:50::i;:::-;17164:142;17138:169;;17332:17;17316:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17464:4;17442:26;;:13;:18;;;:26;;;17426:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;17553:1;17539:16;;:2;:16;;;;17531:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17606:43;17628:4;17634:2;17638:7;17647:1;17606:21;:43::i;:::-;17657:49;17674:1;17678:7;17687:13;:18;;;17657:8;:49::i;:::-;17745:1;17715:12;:18;17728:4;17715:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17781:1;17753:12;:16;17766:2;17753:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17812:43;;;;;;;;17827:2;17812:43;;;;;;17838:15;17812:43;;;;;17789:11;:20;17801:7;17789:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17863:19;17895:1;17885:7;:11;;;;:::i;:::-;17863:33;;17948:1;17907:43;;:11;:24;17919:11;17907:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;17903:236;;;17965:20;17973:11;17965:7;:20::i;:::-;17961:171;;;18025:97;;;;;;;;18052:13;:18;;;18025:97;;;;;;18083:13;:28;;;18025:97;;;;;17998:11;:24;18010:11;17998:24;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17961:171;17903:236;18171:7;18167:2;18152:27;;18161:4;18152:27;;;;;;;;;;;;18186:42;18207:4;18213:2;18217:7;18226:1;18186:20;:42::i;:::-;17064:1170;;;16974:1260;;;:::o;12360:606::-;12436:21;;:::i;:::-;12477:16;12485:7;12477;:16::i;:::-;12469:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12549:26;12597:12;12586:7;:23;12582:93;;12666:1;12651:12;12641:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;12620:47;;12582:93;12688:12;12703:7;12688:22;;12683:212;12720:18;12712:4;:26;12683:212;;12757:31;12791:11;:17;12803:4;12791:17;;;;;;;;;;;12757:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12847:1;12821:28;;:9;:14;;;:28;;;12817:71;;12869:9;12862:16;;;;;;;12817:71;12748:147;12740:6;;;;;:::i;:::-;;;;12683:212;;;;12903:57;;;;;;;;;;:::i;:::-;;;;;;;;12360:606;;;;:::o;3303:191::-;3377:16;3396:6;;;;;;;;;;;3377:25;;3422:8;3413:6;;:17;;;;;;;;;;;;;;;;;;3477:8;3446:40;;3467:8;3446:40;;;;;;;;;;;;3366:128;3303:191;:::o;19217:690::-;19354:4;19371:15;:2;:13;;;:15::i;:::-;19367:535;;;19426:2;19410:36;;;19447:12;:10;:12::i;:::-;19461:4;19467:7;19476:5;19410:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19397:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19658:1;19641:6;:13;:18;19637:215;;;19674:61;;;;;;;;;;:::i;:::-;;;;;;;;19637:215;19820:6;19814:13;19805:6;19801:2;19797:15;19790:38;19397:464;19542:45;;;19532:55;;;:6;:55;;;;19525:62;;;;;19367:535;19890:4;19883:11;;19217:690;;;;;;;:::o;22470:108::-;22530:13;22559;22552:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22470:108;:::o;918:533::-;974:13;1014:1;1005:5;:10;1001:53;;;1032:10;;;;;;;;;;;;;;;;;;;;;1001:53;1064:12;1079:5;1064:20;;1095:14;1120:78;1135:1;1127:4;:9;1120:78;;1153:8;;;;;:::i;:::-;;;;1184:2;1176:10;;;;;:::i;:::-;;;1120:78;;;1208:19;1240:6;1230:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1208:39;;1258:154;1274:1;1265:5;:10;1258:154;;1302:1;1292:11;;;;;:::i;:::-;;;1369:2;1361:5;:10;;;;:::i;:::-;1348:2;:24;;;;:::i;:::-;1335:39;;1318:6;1325;1318:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1398:2;1389:11;;;;;:::i;:::-;;;1258:154;;;1436:6;1422:21;;;;;918:533;;;;:::o;12114:240::-;12175:7;12224:1;12207:19;;:5;:19;;;;12191:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12315:12;:19;12328:5;12315:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;12307:41;;12300:48;;12114:240;;;:::o;15817:1152::-;15922:20;15945:12;;15922:35;;15986:1;15972:16;;:2;:16;;;;15964:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16043:21;16051:12;16043:7;:21::i;:::-;16042:22;16034:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16125:12;16113:8;:24;;16105:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16185:61;16215:1;16219:2;16223:12;16237:8;16185:21;:61::i;:::-;16255:30;16288:12;:16;16301:2;16288:16;;;;;;;;;;;;;;;16255:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16330:119;;;;;;;;16380:8;16350:11;:19;;;:39;;;;:::i;:::-;16330:119;;;;;;16433:8;16398:11;:24;;;:44;;;;:::i;:::-;16330:119;;;;;16311:12;:16;16324:2;16311:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16484:43;;;;;;;;16499:2;16484:43;;;;;;16510:15;16484:43;;;;;16456:11;:25;16468:12;16456:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16536:20;16559:12;16536:35;;16585:9;16580:281;16604:8;16600:1;:12;16580:281;;;16658:12;16654:2;16633:38;;16650:1;16633:38;;;;;;;;;;;;16698:59;16729:1;16733:2;16737:12;16751:5;16698:22;:59::i;:::-;16680:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;16839:14;;;;;:::i;:::-;;;;16614:3;;;;;:::i;:::-;;;;16580:281;;;;16884:12;16869;:27;;;;16903:60;16932:1;16936:2;16940:12;16954:8;16903:20;:60::i;:::-;15915:1054;;;15817:1152;;;:::o;19912:141::-;;;;;:::o;20058:140::-;;;;;:::o;3526:197::-;3586:4;3604:12;3671:7;3659:20;3651:28;;3714:1;3707:4;:8;3700:15;;;3526:197;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:327::-;5678:6;5727:2;5715:9;5706:7;5702:23;5698:32;5695:119;;;5733:79;;:::i;:::-;5695:119;5853:1;5878:52;5922:7;5913:6;5902:9;5898:22;5878:52;:::i;:::-;5868:62;;5824:116;5620:327;;;;:::o;5953:349::-;6022:6;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:63;6277:7;6268:6;6257:9;6253:22;6222:63;:::i;:::-;6212:73;;6168:127;5953:349;;;;:::o;6308:509::-;6377:6;6426:2;6414:9;6405:7;6401:23;6397:32;6394:119;;;6432:79;;:::i;:::-;6394:119;6580:1;6569:9;6565:17;6552:31;6610:18;6602:6;6599:30;6596:117;;;6632:79;;:::i;:::-;6596:117;6737:63;6792:7;6783:6;6772:9;6768:22;6737:63;:::i;:::-;6727:73;;6523:287;6308:509;;;;:::o;6823:329::-;6882:6;6931:2;6919:9;6910:7;6906:23;6902:32;6899:119;;;6937:79;;:::i;:::-;6899:119;7057:1;7082:53;7127:7;7118:6;7107:9;7103:22;7082:53;:::i;:::-;7072:63;;7028:117;6823:329;;;;:::o;7158:911::-;7253:6;7261;7269;7277;7285;7334:3;7322:9;7313:7;7309:23;7305:33;7302:120;;;7341:79;;:::i;:::-;7302:120;7461:1;7486:53;7531:7;7522:6;7511:9;7507:22;7486:53;:::i;:::-;7476:63;;7432:117;7588:2;7614:53;7659:7;7650:6;7639:9;7635:22;7614:53;:::i;:::-;7604:63;;7559:118;7716:2;7742:53;7787:7;7778:6;7767:9;7763:22;7742:53;:::i;:::-;7732:63;;7687:118;7844:2;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7815:118;7972:3;7999:53;8044:7;8035:6;8024:9;8020:22;7999:53;:::i;:::-;7989:63;;7943:119;7158:911;;;;;;;;:::o;8075:108::-;8152:24;8170:5;8152:24;:::i;:::-;8147:3;8140:37;8075:108;;:::o;8189:118::-;8276:24;8294:5;8276:24;:::i;:::-;8271:3;8264:37;8189:118;;:::o;8313:109::-;8394:21;8409:5;8394:21;:::i;:::-;8389:3;8382:34;8313:109;;:::o;8428:360::-;8514:3;8542:38;8574:5;8542:38;:::i;:::-;8596:70;8659:6;8654:3;8596:70;:::i;:::-;8589:77;;8675:52;8720:6;8715:3;8708:4;8701:5;8697:16;8675:52;:::i;:::-;8752:29;8774:6;8752:29;:::i;:::-;8747:3;8743:39;8736:46;;8518:270;8428:360;;;;:::o;8794:364::-;8882:3;8910:39;8943:5;8910:39;:::i;:::-;8965:71;9029:6;9024:3;8965:71;:::i;:::-;8958:78;;9045:52;9090:6;9085:3;9078:4;9071:5;9067:16;9045:52;:::i;:::-;9122:29;9144:6;9122:29;:::i;:::-;9117:3;9113:39;9106:46;;8886:272;8794:364;;;;:::o;9164:377::-;9270:3;9298:39;9331:5;9298:39;:::i;:::-;9353:89;9435:6;9430:3;9353:89;:::i;:::-;9346:96;;9451:52;9496:6;9491:3;9484:4;9477:5;9473:16;9451:52;:::i;:::-;9528:6;9523:3;9519:16;9512:23;;9274:267;9164:377;;;;:::o;9547:366::-;9689:3;9710:67;9774:2;9769:3;9710:67;:::i;:::-;9703:74;;9786:93;9875:3;9786:93;:::i;:::-;9904:2;9899:3;9895:12;9888:19;;9547:366;;;:::o;9919:::-;10061:3;10082:67;10146:2;10141:3;10082:67;:::i;:::-;10075:74;;10158:93;10247:3;10158:93;:::i;:::-;10276:2;10271:3;10267:12;10260:19;;9919:366;;;:::o;10291:::-;10433:3;10454:67;10518:2;10513:3;10454:67;:::i;:::-;10447:74;;10530:93;10619:3;10530:93;:::i;:::-;10648:2;10643:3;10639:12;10632:19;;10291:366;;;:::o;10663:::-;10805:3;10826:67;10890:2;10885:3;10826:67;:::i;:::-;10819:74;;10902:93;10991:3;10902:93;:::i;:::-;11020:2;11015:3;11011:12;11004:19;;10663:366;;;:::o;11035:::-;11177:3;11198:67;11262:2;11257:3;11198:67;:::i;:::-;11191:74;;11274:93;11363:3;11274:93;:::i;:::-;11392:2;11387:3;11383:12;11376:19;;11035:366;;;:::o;11407:::-;11549:3;11570:67;11634:2;11629:3;11570:67;:::i;:::-;11563:74;;11646:93;11735:3;11646:93;:::i;:::-;11764:2;11759:3;11755:12;11748:19;;11407:366;;;:::o;11779:::-;11921:3;11942:67;12006:2;12001:3;11942:67;:::i;:::-;11935:74;;12018:93;12107:3;12018:93;:::i;:::-;12136:2;12131:3;12127:12;12120:19;;11779:366;;;:::o;12151:::-;12293:3;12314:67;12378:2;12373:3;12314:67;:::i;:::-;12307:74;;12390:93;12479:3;12390:93;:::i;:::-;12508:2;12503:3;12499:12;12492:19;;12151:366;;;:::o;12523:::-;12665:3;12686:67;12750:2;12745:3;12686:67;:::i;:::-;12679:74;;12762:93;12851:3;12762:93;:::i;:::-;12880:2;12875:3;12871:12;12864:19;;12523:366;;;:::o;12895:::-;13037:3;13058:67;13122:2;13117:3;13058:67;:::i;:::-;13051:74;;13134:93;13223:3;13134:93;:::i;:::-;13252:2;13247:3;13243:12;13236:19;;12895:366;;;:::o;13267:::-;13409:3;13430:67;13494:2;13489:3;13430:67;:::i;:::-;13423:74;;13506:93;13595:3;13506:93;:::i;:::-;13624:2;13619:3;13615:12;13608:19;;13267:366;;;:::o;13639:::-;13781:3;13802:67;13866:2;13861:3;13802:67;:::i;:::-;13795:74;;13878:93;13967:3;13878:93;:::i;:::-;13996:2;13991:3;13987:12;13980:19;;13639:366;;;:::o;14011:::-;14153:3;14174:67;14238:2;14233:3;14174:67;:::i;:::-;14167:74;;14250:93;14339:3;14250:93;:::i;:::-;14368:2;14363:3;14359:12;14352:19;;14011:366;;;:::o;14383:::-;14525:3;14546:67;14610:2;14605:3;14546:67;:::i;:::-;14539:74;;14622:93;14711:3;14622:93;:::i;:::-;14740:2;14735:3;14731:12;14724:19;;14383:366;;;:::o;14755:::-;14897:3;14918:67;14982:2;14977:3;14918:67;:::i;:::-;14911:74;;14994:93;15083:3;14994:93;:::i;:::-;15112:2;15107:3;15103:12;15096:19;;14755:366;;;:::o;15127:::-;15269:3;15290:67;15354:2;15349:3;15290:67;:::i;:::-;15283:74;;15366:93;15455:3;15366:93;:::i;:::-;15484:2;15479:3;15475:12;15468:19;;15127:366;;;:::o;15499:::-;15641:3;15662:67;15726:2;15721:3;15662:67;:::i;:::-;15655:74;;15738:93;15827:3;15738:93;:::i;:::-;15856:2;15851:3;15847:12;15840:19;;15499:366;;;:::o;15871:::-;16013:3;16034:67;16098:2;16093:3;16034:67;:::i;:::-;16027:74;;16110:93;16199:3;16110:93;:::i;:::-;16228:2;16223:3;16219:12;16212:19;;15871:366;;;:::o;16243:398::-;16402:3;16423:83;16504:1;16499:3;16423:83;:::i;:::-;16416:90;;16515:93;16604:3;16515:93;:::i;:::-;16633:1;16628:3;16624:11;16617:18;;16243:398;;;:::o;16647:366::-;16789:3;16810:67;16874:2;16869:3;16810:67;:::i;:::-;16803:74;;16886:93;16975:3;16886:93;:::i;:::-;17004:2;16999:3;16995:12;16988:19;;16647:366;;;:::o;17019:::-;17161:3;17182:67;17246:2;17241:3;17182:67;:::i;:::-;17175:74;;17258:93;17347:3;17258:93;:::i;:::-;17376:2;17371:3;17367:12;17360:19;;17019:366;;;:::o;17391:::-;17533:3;17554:67;17618:2;17613:3;17554:67;:::i;:::-;17547:74;;17630:93;17719:3;17630:93;:::i;:::-;17748:2;17743:3;17739:12;17732:19;;17391:366;;;:::o;17763:::-;17905:3;17926:67;17990:2;17985:3;17926:67;:::i;:::-;17919:74;;18002:93;18091:3;18002:93;:::i;:::-;18120:2;18115:3;18111:12;18104:19;;17763:366;;;:::o;18135:::-;18277:3;18298:67;18362:2;18357:3;18298:67;:::i;:::-;18291:74;;18374:93;18463:3;18374:93;:::i;:::-;18492:2;18487:3;18483:12;18476:19;;18135:366;;;:::o;18507:::-;18649:3;18670:67;18734:2;18729:3;18670:67;:::i;:::-;18663:74;;18746:93;18835:3;18746:93;:::i;:::-;18864:2;18859:3;18855:12;18848:19;;18507:366;;;:::o;18879:::-;19021:3;19042:67;19106:2;19101:3;19042:67;:::i;:::-;19035:74;;19118:93;19207:3;19118:93;:::i;:::-;19236:2;19231:3;19227:12;19220:19;;18879:366;;;:::o;19251:::-;19393:3;19414:67;19478:2;19473:3;19414:67;:::i;:::-;19407:74;;19490:93;19579:3;19490:93;:::i;:::-;19608:2;19603:3;19599:12;19592:19;;19251:366;;;:::o;19623:::-;19765:3;19786:67;19850:2;19845:3;19786:67;:::i;:::-;19779:74;;19862:93;19951:3;19862:93;:::i;:::-;19980:2;19975:3;19971:12;19964:19;;19623:366;;;:::o;19995:::-;20137:3;20158:67;20222:2;20217:3;20158:67;:::i;:::-;20151:74;;20234:93;20323:3;20234:93;:::i;:::-;20352:2;20347:3;20343:12;20336:19;;19995:366;;;:::o;20367:::-;20509:3;20530:67;20594:2;20589:3;20530:67;:::i;:::-;20523:74;;20606:93;20695:3;20606:93;:::i;:::-;20724:2;20719:3;20715:12;20708:19;;20367:366;;;:::o;20809:527::-;20968:4;20963:3;20959:14;21055:4;21048:5;21044:16;21038:23;21074:63;21131:4;21126:3;21122:14;21108:12;21074:63;:::i;:::-;20983:164;21239:4;21232:5;21228:16;21222:23;21258:61;21313:4;21308:3;21304:14;21290:12;21258:61;:::i;:::-;21157:172;20937:399;20809:527;;:::o;21342:118::-;21429:24;21447:5;21429:24;:::i;:::-;21424:3;21417:37;21342:118;;:::o;21466:105::-;21541:23;21558:5;21541:23;:::i;:::-;21536:3;21529:36;21466:105;;:::o;21577:435::-;21757:3;21779:95;21870:3;21861:6;21779:95;:::i;:::-;21772:102;;21891:95;21982:3;21973:6;21891:95;:::i;:::-;21884:102;;22003:3;21996:10;;21577:435;;;;;:::o;22018:379::-;22202:3;22224:147;22367:3;22224:147;:::i;:::-;22217:154;;22388:3;22381:10;;22018:379;;;:::o;22403:222::-;22496:4;22534:2;22523:9;22519:18;22511:26;;22547:71;22615:1;22604:9;22600:17;22591:6;22547:71;:::i;:::-;22403:222;;;;:::o;22631:640::-;22826:4;22864:3;22853:9;22849:19;22841:27;;22878:71;22946:1;22935:9;22931:17;22922:6;22878:71;:::i;:::-;22959:72;23027:2;23016:9;23012:18;23003:6;22959:72;:::i;:::-;23041;23109:2;23098:9;23094:18;23085:6;23041:72;:::i;:::-;23160:9;23154:4;23150:20;23145:2;23134:9;23130:18;23123:48;23188:76;23259:4;23250:6;23188:76;:::i;:::-;23180:84;;22631:640;;;;;;;:::o;23277:210::-;23364:4;23402:2;23391:9;23387:18;23379:26;;23415:65;23477:1;23466:9;23462:17;23453:6;23415:65;:::i;:::-;23277:210;;;;:::o;23493:313::-;23606:4;23644:2;23633:9;23629:18;23621:26;;23693:9;23687:4;23683:20;23679:1;23668:9;23664:17;23657:47;23721:78;23794:4;23785:6;23721:78;:::i;:::-;23713:86;;23493:313;;;;:::o;23812:419::-;23978:4;24016:2;24005:9;24001:18;23993:26;;24065:9;24059:4;24055:20;24051:1;24040:9;24036:17;24029:47;24093:131;24219:4;24093:131;:::i;:::-;24085:139;;23812:419;;;:::o;24237:::-;24403:4;24441:2;24430:9;24426:18;24418:26;;24490:9;24484:4;24480:20;24476:1;24465:9;24461:17;24454:47;24518:131;24644:4;24518:131;:::i;:::-;24510:139;;24237:419;;;:::o;24662:::-;24828:4;24866:2;24855:9;24851:18;24843:26;;24915:9;24909:4;24905:20;24901:1;24890:9;24886:17;24879:47;24943:131;25069:4;24943:131;:::i;:::-;24935:139;;24662:419;;;:::o;25087:::-;25253:4;25291:2;25280:9;25276:18;25268:26;;25340:9;25334:4;25330:20;25326:1;25315:9;25311:17;25304:47;25368:131;25494:4;25368:131;:::i;:::-;25360:139;;25087:419;;;:::o;25512:::-;25678:4;25716:2;25705:9;25701:18;25693:26;;25765:9;25759:4;25755:20;25751:1;25740:9;25736:17;25729:47;25793:131;25919:4;25793:131;:::i;:::-;25785:139;;25512:419;;;:::o;25937:::-;26103:4;26141:2;26130:9;26126:18;26118:26;;26190:9;26184:4;26180:20;26176:1;26165:9;26161:17;26154:47;26218:131;26344:4;26218:131;:::i;:::-;26210:139;;25937:419;;;:::o;26362:::-;26528:4;26566:2;26555:9;26551:18;26543:26;;26615:9;26609:4;26605:20;26601:1;26590:9;26586:17;26579:47;26643:131;26769:4;26643:131;:::i;:::-;26635:139;;26362:419;;;:::o;26787:::-;26953:4;26991:2;26980:9;26976:18;26968:26;;27040:9;27034:4;27030:20;27026:1;27015:9;27011:17;27004:47;27068:131;27194:4;27068:131;:::i;:::-;27060:139;;26787:419;;;:::o;27212:::-;27378:4;27416:2;27405:9;27401:18;27393:26;;27465:9;27459:4;27455:20;27451:1;27440:9;27436:17;27429:47;27493:131;27619:4;27493:131;:::i;:::-;27485:139;;27212:419;;;:::o;27637:::-;27803:4;27841:2;27830:9;27826:18;27818:26;;27890:9;27884:4;27880:20;27876:1;27865:9;27861:17;27854:47;27918:131;28044:4;27918:131;:::i;:::-;27910:139;;27637:419;;;:::o;28062:::-;28228:4;28266:2;28255:9;28251:18;28243:26;;28315:9;28309:4;28305:20;28301:1;28290:9;28286:17;28279:47;28343:131;28469:4;28343:131;:::i;:::-;28335:139;;28062:419;;;:::o;28487:::-;28653:4;28691:2;28680:9;28676:18;28668:26;;28740:9;28734:4;28730:20;28726:1;28715:9;28711:17;28704:47;28768:131;28894:4;28768:131;:::i;:::-;28760:139;;28487:419;;;:::o;28912:::-;29078:4;29116:2;29105:9;29101:18;29093:26;;29165:9;29159:4;29155:20;29151:1;29140:9;29136:17;29129:47;29193:131;29319:4;29193:131;:::i;:::-;29185:139;;28912:419;;;:::o;29337:::-;29503:4;29541:2;29530:9;29526:18;29518:26;;29590:9;29584:4;29580:20;29576:1;29565:9;29561:17;29554:47;29618:131;29744:4;29618:131;:::i;:::-;29610:139;;29337:419;;;:::o;29762:::-;29928:4;29966:2;29955:9;29951:18;29943:26;;30015:9;30009:4;30005:20;30001:1;29990:9;29986:17;29979:47;30043:131;30169:4;30043:131;:::i;:::-;30035:139;;29762:419;;;:::o;30187:::-;30353:4;30391:2;30380:9;30376:18;30368:26;;30440:9;30434:4;30430:20;30426:1;30415:9;30411:17;30404:47;30468:131;30594:4;30468:131;:::i;:::-;30460:139;;30187:419;;;:::o;30612:::-;30778:4;30816:2;30805:9;30801:18;30793:26;;30865:9;30859:4;30855:20;30851:1;30840:9;30836:17;30829:47;30893:131;31019:4;30893:131;:::i;:::-;30885:139;;30612:419;;;:::o;31037:::-;31203:4;31241:2;31230:9;31226:18;31218:26;;31290:9;31284:4;31280:20;31276:1;31265:9;31261:17;31254:47;31318:131;31444:4;31318:131;:::i;:::-;31310:139;;31037:419;;;:::o;31462:::-;31628:4;31666:2;31655:9;31651:18;31643:26;;31715:9;31709:4;31705:20;31701:1;31690:9;31686:17;31679:47;31743:131;31869:4;31743:131;:::i;:::-;31735:139;;31462:419;;;:::o;31887:::-;32053:4;32091:2;32080:9;32076:18;32068:26;;32140:9;32134:4;32130:20;32126:1;32115:9;32111:17;32104:47;32168:131;32294:4;32168:131;:::i;:::-;32160:139;;31887:419;;;:::o;32312:::-;32478:4;32516:2;32505:9;32501:18;32493:26;;32565:9;32559:4;32555:20;32551:1;32540:9;32536:17;32529:47;32593:131;32719:4;32593:131;:::i;:::-;32585:139;;32312:419;;;:::o;32737:::-;32903:4;32941:2;32930:9;32926:18;32918:26;;32990:9;32984:4;32980:20;32976:1;32965:9;32961:17;32954:47;33018:131;33144:4;33018:131;:::i;:::-;33010:139;;32737:419;;;:::o;33162:::-;33328:4;33366:2;33355:9;33351:18;33343:26;;33415:9;33409:4;33405:20;33401:1;33390:9;33386:17;33379:47;33443:131;33569:4;33443:131;:::i;:::-;33435:139;;33162:419;;;:::o;33587:::-;33753:4;33791:2;33780:9;33776:18;33768:26;;33840:9;33834:4;33830:20;33826:1;33815:9;33811:17;33804:47;33868:131;33994:4;33868:131;:::i;:::-;33860:139;;33587:419;;;:::o;34012:::-;34178:4;34216:2;34205:9;34201:18;34193:26;;34265:9;34259:4;34255:20;34251:1;34240:9;34236:17;34229:47;34293:131;34419:4;34293:131;:::i;:::-;34285:139;;34012:419;;;:::o;34437:::-;34603:4;34641:2;34630:9;34626:18;34618:26;;34690:9;34684:4;34680:20;34676:1;34665:9;34661:17;34654:47;34718:131;34844:4;34718:131;:::i;:::-;34710:139;;34437:419;;;:::o;34862:::-;35028:4;35066:2;35055:9;35051:18;35043:26;;35115:9;35109:4;35105:20;35101:1;35090:9;35086:17;35079:47;35143:131;35269:4;35143:131;:::i;:::-;35135:139;;34862:419;;;:::o;35287:::-;35453:4;35491:2;35480:9;35476:18;35468:26;;35540:9;35534:4;35530:20;35526:1;35515:9;35511:17;35504:47;35568:131;35694:4;35568:131;:::i;:::-;35560:139;;35287:419;;;:::o;35712:::-;35878:4;35916:2;35905:9;35901:18;35893:26;;35965:9;35959:4;35955:20;35951:1;35940:9;35936:17;35929:47;35993:131;36119:4;35993:131;:::i;:::-;35985:139;;35712:419;;;:::o;36137:346::-;36292:4;36330:2;36319:9;36315:18;36307:26;;36343:133;36473:1;36462:9;36458:17;36449:6;36343:133;:::i;:::-;36137:346;;;;:::o;36489:222::-;36582:4;36620:2;36609:9;36605:18;36597:26;;36633:71;36701:1;36690:9;36686:17;36677:6;36633:71;:::i;:::-;36489:222;;;;:::o;36717:129::-;36751:6;36778:20;;:::i;:::-;36768:30;;36807:33;36835:4;36827:6;36807:33;:::i;:::-;36717:129;;;:::o;36852:75::-;36885:6;36918:2;36912:9;36902:19;;36852:75;:::o;36933:307::-;36994:4;37084:18;37076:6;37073:30;37070:56;;;37106:18;;:::i;:::-;37070:56;37144:29;37166:6;37144:29;:::i;:::-;37136:37;;37228:4;37222;37218:15;37210:23;;36933:307;;;:::o;37246:308::-;37308:4;37398:18;37390:6;37387:30;37384:56;;;37420:18;;:::i;:::-;37384:56;37458:29;37480:6;37458:29;:::i;:::-;37450:37;;37542:4;37536;37532:15;37524:23;;37246:308;;;:::o;37560:98::-;37611:6;37645:5;37639:12;37629:22;;37560:98;;;:::o;37664:99::-;37716:6;37750:5;37744:12;37734:22;;37664:99;;;:::o;37769:168::-;37852:11;37886:6;37881:3;37874:19;37926:4;37921:3;37917:14;37902:29;;37769:168;;;;:::o;37943:147::-;38044:11;38081:3;38066:18;;37943:147;;;;:::o;38096:169::-;38180:11;38214:6;38209:3;38202:19;38254:4;38249:3;38245:14;38230:29;;38096:169;;;;:::o;38271:148::-;38373:11;38410:3;38395:18;;38271:148;;;;:::o;38425:273::-;38465:3;38484:20;38502:1;38484:20;:::i;:::-;38479:25;;38518:20;38536:1;38518:20;:::i;:::-;38513:25;;38640:1;38604:34;38600:42;38597:1;38594:49;38591:75;;;38646:18;;:::i;:::-;38591:75;38690:1;38687;38683:9;38676:16;;38425:273;;;;:::o;38704:305::-;38744:3;38763:20;38781:1;38763:20;:::i;:::-;38758:25;;38797:20;38815:1;38797:20;:::i;:::-;38792:25;;38951:1;38883:66;38879:74;38876:1;38873:81;38870:107;;;38957:18;;:::i;:::-;38870:107;39001:1;38998;38994:9;38987:16;;38704:305;;;;:::o;39015:185::-;39055:1;39072:20;39090:1;39072:20;:::i;:::-;39067:25;;39106:20;39124:1;39106:20;:::i;:::-;39101:25;;39145:1;39135:35;;39150:18;;:::i;:::-;39135:35;39192:1;39189;39185:9;39180:14;;39015:185;;;;:::o;39206:348::-;39246:7;39269:20;39287:1;39269:20;:::i;:::-;39264:25;;39303:20;39321:1;39303:20;:::i;:::-;39298:25;;39491:1;39423:66;39419:74;39416:1;39413:81;39408:1;39401:9;39394:17;39390:105;39387:131;;;39498:18;;:::i;:::-;39387:131;39546:1;39543;39539:9;39528:20;;39206:348;;;;:::o;39560:191::-;39600:4;39620:20;39638:1;39620:20;:::i;:::-;39615:25;;39654:20;39672:1;39654:20;:::i;:::-;39649:25;;39693:1;39690;39687:8;39684:34;;;39698:18;;:::i;:::-;39684:34;39743:1;39740;39736:9;39728:17;;39560:191;;;;:::o;39757:::-;39797:4;39817:20;39835:1;39817:20;:::i;:::-;39812:25;;39851:20;39869:1;39851:20;:::i;:::-;39846:25;;39890:1;39887;39884:8;39881:34;;;39895:18;;:::i;:::-;39881:34;39940:1;39937;39933:9;39925:17;;39757:191;;;;:::o;39954:96::-;39991:7;40020:24;40038:5;40020:24;:::i;:::-;40009:35;;39954:96;;;:::o;40056:90::-;40090:7;40133:5;40126:13;40119:21;40108:32;;40056:90;;;:::o;40152:149::-;40188:7;40228:66;40221:5;40217:78;40206:89;;40152:149;;;:::o;40307:118::-;40344:7;40384:34;40377:5;40373:46;40362:57;;40307:118;;;:::o;40431:126::-;40468:7;40508:42;40501:5;40497:54;40486:65;;40431:126;;;:::o;40563:77::-;40600:7;40629:5;40618:16;;40563:77;;;:::o;40646:101::-;40682:7;40722:18;40715:5;40711:30;40700:41;;40646:101;;;:::o;40753:154::-;40837:6;40832:3;40827;40814:30;40899:1;40890:6;40885:3;40881:16;40874:27;40753:154;;;:::o;40913:307::-;40981:1;40991:113;41005:6;41002:1;40999:13;40991:113;;;41090:1;41085:3;41081:11;41075:18;41071:1;41066:3;41062:11;41055:39;41027:2;41024:1;41020:10;41015:15;;40991:113;;;41122:6;41119:1;41116:13;41113:101;;;41202:1;41193:6;41188:3;41184:16;41177:27;41113:101;40962:258;40913:307;;;:::o;41226:171::-;41265:3;41288:24;41306:5;41288:24;:::i;:::-;41279:33;;41334:4;41327:5;41324:15;41321:41;;;41342:18;;:::i;:::-;41321:41;41389:1;41382:5;41378:13;41371:20;;41226:171;;;:::o;41403:320::-;41447:6;41484:1;41478:4;41474:12;41464:22;;41531:1;41525:4;41521:12;41552:18;41542:81;;41608:4;41600:6;41596:17;41586:27;;41542:81;41670:2;41662:6;41659:14;41639:18;41636:38;41633:84;;;41689:18;;:::i;:::-;41633:84;41454:269;41403:320;;;:::o;41729:281::-;41812:27;41834:4;41812:27;:::i;:::-;41804:6;41800:40;41942:6;41930:10;41927:22;41906:18;41894:10;41891:34;41888:62;41885:88;;;41953:18;;:::i;:::-;41885:88;41993:10;41989:2;41982:22;41772:238;41729:281;;:::o;42016:233::-;42055:3;42078:24;42096:5;42078:24;:::i;:::-;42069:33;;42124:66;42117:5;42114:77;42111:103;;;42194:18;;:::i;:::-;42111:103;42241:1;42234:5;42230:13;42223:20;;42016:233;;;:::o;42255:176::-;42287:1;42304:20;42322:1;42304:20;:::i;:::-;42299:25;;42338:20;42356:1;42338:20;:::i;:::-;42333:25;;42377:1;42367:35;;42382:18;;:::i;:::-;42367:35;42423:1;42420;42416:9;42411:14;;42255:176;;;;:::o;42437:180::-;42485:77;42482:1;42475:88;42582:4;42579:1;42572:15;42606:4;42603:1;42596:15;42623:180;42671:77;42668:1;42661:88;42768:4;42765:1;42758:15;42792:4;42789:1;42782:15;42809:180;42857:77;42854:1;42847:88;42954:4;42951:1;42944:15;42978:4;42975:1;42968:15;42995:180;43043:77;43040:1;43033:88;43140:4;43137:1;43130:15;43164:4;43161:1;43154:15;43181:180;43229:77;43226:1;43219:88;43326:4;43323:1;43316:15;43350:4;43347:1;43340:15;43367:117;43476:1;43473;43466:12;43490:117;43599:1;43596;43589:12;43613:117;43722:1;43719;43712:12;43736:117;43845:1;43842;43835:12;43859:102;43900:6;43951:2;43947:7;43942:2;43935:5;43931:14;43927:28;43917:38;;43859:102;;;:::o;43967:221::-;44107:34;44103:1;44095:6;44091:14;44084:58;44176:4;44171:2;44163:6;44159:15;44152:29;43967:221;:::o;44194:225::-;44334:34;44330:1;44322:6;44318:14;44311:58;44403:8;44398:2;44390:6;44386:15;44379:33;44194:225;:::o;44425:229::-;44565:34;44561:1;44553:6;44549:14;44542:58;44634:12;44629:2;44621:6;44617:15;44610:37;44425:229;:::o;44660:222::-;44800:34;44796:1;44788:6;44784:14;44777:58;44869:5;44864:2;44856:6;44852:15;44845:30;44660:222;:::o;44888:224::-;45028:34;45024:1;45016:6;45012:14;45005:58;45097:7;45092:2;45084:6;45080:15;45073:32;44888:224;:::o;45118:236::-;45258:34;45254:1;45246:6;45242:14;45235:58;45327:19;45322:2;45314:6;45310:15;45303:44;45118:236;:::o;45360:168::-;45500:20;45496:1;45488:6;45484:14;45477:44;45360:168;:::o;45534:180::-;45674:32;45670:1;45662:6;45658:14;45651:56;45534:180;:::o;45720:244::-;45860:34;45856:1;45848:6;45844:14;45837:58;45929:27;45924:2;45916:6;45912:15;45905:52;45720:244;:::o;45970:180::-;46110:32;46106:1;46098:6;46094:14;46087:56;45970:180;:::o;46156:230::-;46296:34;46292:1;46284:6;46280:14;46273:58;46365:13;46360:2;46352:6;46348:15;46341:38;46156:230;:::o;46392:168::-;46532:20;46528:1;46520:6;46516:14;46509:44;46392:168;:::o;46566:225::-;46706:34;46702:1;46694:6;46690:14;46683:58;46775:8;46770:2;46762:6;46758:15;46751:33;46566:225;:::o;46797:182::-;46937:34;46933:1;46925:6;46921:14;46914:58;46797:182;:::o;46985:234::-;47125:34;47121:1;47113:6;47109:14;47102:58;47194:17;47189:2;47181:6;47177:15;47170:42;46985:234;:::o;47225:176::-;47365:28;47361:1;47353:6;47349:14;47342:52;47225:176;:::o;47407:237::-;47547:34;47543:1;47535:6;47531:14;47524:58;47616:20;47611:2;47603:6;47599:15;47592:45;47407:237;:::o;47650:221::-;47790:34;47786:1;47778:6;47774:14;47767:58;47859:4;47854:2;47846:6;47842:15;47835:29;47650:221;:::o;47877:114::-;;:::o;47997:166::-;48137:18;48133:1;48125:6;48121:14;48114:42;47997:166;:::o;48169:238::-;48309:34;48305:1;48297:6;48293:14;48286:58;48378:21;48373:2;48365:6;48361:15;48354:46;48169:238;:::o;48413:172::-;48553:24;48549:1;48541:6;48537:14;48530:48;48413:172;:::o;48591:179::-;48731:31;48727:1;48719:6;48715:14;48708:55;48591:179;:::o;48776:220::-;48916:34;48912:1;48904:6;48900:14;48893:58;48985:3;48980:2;48972:6;48968:15;48961:28;48776:220;:::o;49002:172::-;49142:24;49138:1;49130:6;49126:14;49119:48;49002:172;:::o;49180:233::-;49320:34;49316:1;49308:6;49304:14;49297:58;49389:16;49384:2;49376:6;49372:15;49365:41;49180:233;:::o;49419:181::-;49559:33;49555:1;49547:6;49543:14;49536:57;49419:181;:::o;49606:234::-;49746:34;49742:1;49734:6;49730:14;49723:58;49815:17;49810:2;49802:6;49798:15;49791:42;49606:234;:::o;49846:232::-;49986:34;49982:1;49974:6;49970:14;49963:58;50055:15;50050:2;50042:6;50038:15;50031:40;49846:232;:::o;50084:221::-;50224:34;50220:1;50212:6;50208:14;50201:58;50293:4;50288:2;50280:6;50276:15;50269:29;50084:221;:::o;50311:122::-;50384:24;50402:5;50384:24;:::i;:::-;50377:5;50374:35;50364:63;;50423:1;50420;50413:12;50364:63;50311:122;:::o;50439:116::-;50509:21;50524:5;50509:21;:::i;:::-;50502:5;50499:32;50489:60;;50545:1;50542;50535:12;50489:60;50439:116;:::o;50561:120::-;50633:23;50650:5;50633:23;:::i;:::-;50626:5;50623:34;50613:62;;50671:1;50668;50661:12;50613:62;50561:120;:::o;50687:122::-;50760:24;50778:5;50760:24;:::i;:::-;50753:5;50750:35;50740:63;;50799:1;50796;50789:12;50740:63;50687:122;:::o

Swarm Source

ipfs://9a2dc00855e729235473b4550bb4a80674dd565036ec123ca8cee0ce6e3c1219

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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