ETH Price: $2,106.98 (-10.21%)

Token

Origamasks (⭐)
 

Overview

Max Total Supply

4,999

Holders

1,477

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
daterdunk.eth
Balance
0 ⭐
0x3c1c2b7cd1011f8332c1d2cdf31b7243ceab1a1e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A collection of 5,000 kid-avatars that gives you membership access to The Playground.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Origamasks

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license
File 1 of 24 : Origamasks.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// Creator: OrigamasksTeam
pragma solidity ^0.8.13;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "operator-filter-registry/src/DefaultOperatorFilterer.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/common/ERC2981.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@chainlink/contracts/src/v0.8/VRFV2WrapperConsumerBase.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
abstract contract RewardContract {
function mintReward(address to_, uint256 tokenId_) public payable virtual returns (uint256);
}
error ProvenanceHashNotSetYet();
error LevelNotReachedToClaim();
error RewardAddressNotSetYet();
error LimitPerWalletExceeded();
error RewardAlreadyClaimed();
error StartingIndexExisted();
error WrongFieldTripLevel();
error ExceedReservedSpots();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 24 : VRFV2WrapperConsumerBase.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./interfaces/LinkTokenInterface.sol";
import "./interfaces/VRFV2WrapperInterface.sol";
/** *******************************************************************************
* @notice Interface for contracts using VRF randomness through the VRF V2 wrapper
* ********************************************************************************
* @dev PURPOSE
*
* @dev Create VRF V2 requests without the need for subscription management. Rather than creating
* @dev and funding a VRF V2 subscription, a user can use this wrapper to create one off requests,
* @dev paying up front rather than at fulfillment.
*
* @dev Since the price is determined using the gas price of the request transaction rather than
* @dev the fulfillment transaction, the wrapper charges an additional premium on callback gas
* @dev usage, in addition to some extra overhead costs associated with the VRFV2Wrapper contract.
* *****************************************************************************
* @dev USAGE
*
* @dev Calling contracts must inherit from VRFV2WrapperConsumerBase. The consumer must be funded
* @dev with enough LINK to make the request, otherwise requests will revert. To request randomness,
* @dev call the 'requestRandomness' function with the desired VRF parameters. This function handles
* @dev paying for the request based on the current pricing.
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 24 : LinkTokenInterface.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface LinkTokenInterface {
function allowance(address owner, address spender) external view returns (uint256 remaining);
function approve(address spender, uint256 value) external returns (bool success);
function balanceOf(address owner) external view returns (uint256 balance);
function decimals() external view returns (uint8 decimalPlaces);
function decreaseApproval(address spender, uint256 addedValue) external returns (bool success);
function increaseApproval(address spender, uint256 subtractedValue) external;
function name() external view returns (string memory tokenName);
function symbol() external view returns (string memory tokenSymbol);
function totalSupply() external view returns (uint256 totalTokensIssued);
function transfer(address to, uint256 value) external returns (bool success);
function transferAndCall(
address to,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 24 : VRFV2WrapperInterface.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface VRFV2WrapperInterface {
/**
* @return the request ID of the most recent VRF V2 request made by this wrapper. This should only
* be relied option within the same transaction that the request was made.
*/
function lastRequestId() external view returns (uint256);
/**
* @notice Calculates the price of a VRF request with the given callbackGasLimit at the current
* @notice block.
*
* @dev This function relies on the transaction gas price which is not automatically set during
* @dev simulation. To estimate the price at a specific gas price, use the estimatePrice function.
*
* @param _callbackGasLimit is the gas limit used to estimate the price.
*/
function calculateRequestPrice(uint32 _callbackGasLimit) external view returns (uint256);
/**
* @notice Estimates the price of a VRF request with a specific gas limit and gas price.
*
* @dev This is a convenience function that can be called in simulation to better understand
* @dev pricing.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 24 : AccessControl.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (access/AccessControl.sol)
pragma solidity ^0.8.0;
import "./IAccessControl.sol";
import "../utils/Context.sol";
import "../utils/Strings.sol";
import "../utils/introspection/ERC165.sol";
/**
* @dev Contract module that allows children to implement role-based access
* control mechanisms. This is a lightweight version that doesn't allow enumerating role
* members except through off-chain means by accessing the contract event logs. Some
* applications may benefit from on-chain enumerability, for those cases see
* {AccessControlEnumerable}.
*
* Roles are referred to by their `bytes32` identifier. These should be exposed
* in the external API and be unique. The best way to achieve this is by
* using `public constant` hash digests:
*
* ```
* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
* ```
*
* Roles can be used to represent a set of permissions. To restrict access to a
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 24 : IAccessControl.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
pragma solidity ^0.8.0;
/**
* @dev External interface of AccessControl declared to support ERC165 detection.
*/
interface IAccessControl {
/**
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
*
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
* {RoleAdminChanged} not being emitted signaling this.
*
* _Available since v3.1._
*/
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
/**
* @dev Emitted when `account` is granted `role`.
*
* `sender` is the account that originated the contract call, an admin role
* bearer except when using {AccessControl-_setupRole}.
*/
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 24 : Ownable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 24 : IERC2981.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)
pragma solidity ^0.8.0;
import "../utils/introspection/IERC165.sol";
/**
* @dev Interface for the NFT Royalty Standard.
*
* A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal
* support for royalty payments across all NFT marketplaces and ecosystem participants.
*
* _Available since v4.5._
*/
interface IERC2981 is IERC165 {
/**
* @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of
* exchange. The royalty amount is denominated and should be paid in that same unit of exchange.
*/
function royaltyInfo(uint256 tokenId, uint256 salePrice)
external
view
returns (address receiver, uint256 royaltyAmount);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 24 : ReentrancyGuard.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 24 : ERC721.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/ERC721.sol)
pragma solidity ^0.8.0;
import "./IERC721.sol";
import "./IERC721Receiver.sol";
import "./extensions/IERC721Metadata.sol";
import "../../utils/Address.sol";
import "../../utils/Context.sol";
import "../../utils/Strings.sol";
import "../../utils/introspection/ERC165.sol";
/**
* @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
* the Metadata extension, but not including the Enumerable extension, which is available separately as
* {ERC721Enumerable}.
*/
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
// Token name
string private _name;
// Token symbol
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 24 : IERC721.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 24 : IERC721Receiver.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)
pragma solidity ^0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
*/
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 24 : IERC721Metadata.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC721.sol";
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Metadata is IERC721 {
/**
* @dev Returns the token collection name.
*/
function name() external view returns (string memory);
/**
* @dev Returns the token collection symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
*/
function tokenURI(uint256 tokenId) external view returns (string memory);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 24 : ERC2981.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/common/ERC2981.sol)
pragma solidity ^0.8.0;
import "../../interfaces/IERC2981.sol";
import "../../utils/introspection/ERC165.sol";
/**
* @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.
*
* Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for
* specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.
*
* Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the
* fee is specified in basis points by default.
*
* IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See
* https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to
* voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.
*
* _Available since v4.5._
*/
abstract contract ERC2981 is IERC2981, ERC165 {
struct RoyaltyInfo {
address receiver;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 15 of 24 : Address.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 24 : Context.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 17 of 24 : Strings.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)
pragma solidity ^0.8.0;
import "./math/Math.sol";
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _SYMBOLS = "0123456789abcdef";
uint8 private constant _ADDRESS_LENGTH = 20;
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
unchecked {
uint256 length = Math.log10(value) + 1;
string memory buffer = new string(length);
uint256 ptr;
/// @solidity memory-safe-assembly
assembly {
ptr := add(buffer, add(32, length))
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 18 of 24 : ECDSA.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)
pragma solidity ^0.8.0;
import "../Strings.sol";
/**
* @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
*
* These functions can be used to verify that a message was signed by the holder
* of the private keys of a given address.
*/
library ECDSA {
enum RecoverError {
NoError,
InvalidSignature,
InvalidSignatureLength,
InvalidSignatureS,
InvalidSignatureV // Deprecated in v4.8
}
function _throwError(RecoverError error) private pure {
if (error == RecoverError.NoError) {
return; // no error: do nothing
} else if (error == RecoverError.InvalidSignature) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 19 of 24 : ERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 20 of 24 : IERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 21 of 24 : Math.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
enum Rounding {
Down, // Toward negative infinity
Up, // Toward infinity
Zero // Toward zero
}
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 22 of 24 : DefaultOperatorFilterer.sol
1
2
3
4
5
6
7
8
9
10
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import {OperatorFilterer} from "./OperatorFilterer.sol";
abstract contract DefaultOperatorFilterer is OperatorFilterer {
address constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);
constructor() OperatorFilterer(DEFAULT_SUBSCRIPTION, true) {}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 23 of 24 : IOperatorFilterRegistry.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
interface IOperatorFilterRegistry {
function isOperatorAllowed(address registrant, address operator) external view returns (bool);
function register(address registrant) external;
function registerAndSubscribe(address registrant, address subscription) external;
function registerAndCopyEntries(address registrant, address registrantToCopy) external;
function updateOperator(address registrant, address operator, bool filtered) external;
function updateOperators(address registrant, address[] calldata operators, bool filtered) external;
function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;
function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;
function subscribe(address registrant, address registrantToSubscribe) external;
function unsubscribe(address registrant, bool copyExistingEntries) external;
function subscriptionOf(address addr) external returns (address registrant);
function subscribers(address registrant) external returns (address[] memory);
function subscriberAt(address registrant, uint256 index) external returns (address);
function copyEntriesOf(address registrant, address registrantToCopy) external;
function isOperatorFiltered(address registrant, address operator) external returns (bool);
function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);
function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);
function filteredOperators(address addr) external returns (address[] memory);
function filteredCodeHashes(address addr) external returns (bytes32[] memory);
function filteredOperatorAt(address registrant, uint256 index) external returns (address);
function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);
function isRegistered(address addr) external returns (bool);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 24 of 24 : OperatorFilterer.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import {IOperatorFilterRegistry} from "./IOperatorFilterRegistry.sol";
abstract contract OperatorFilterer {
error OperatorNotAllowed(address operator);
IOperatorFilterRegistry constant operatorFilterRegistry =
IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);
constructor(address subscriptionOrRegistrantToCopy, bool subscribe) {
// If an inheriting token contract is deployed to a network without the registry deployed, the modifier
// will not revert, but the contract will need to be registered with the registry once it is deployed in
// order for the modifier to filter addresses.
if (address(operatorFilterRegistry).code.length > 0) {
if (subscribe) {
operatorFilterRegistry.registerAndSubscribe(address(this), subscriptionOrRegistrantToCopy);
} else {
if (subscriptionOrRegistrantToCopy != address(0)) {
operatorFilterRegistry.registerAndCopyEntries(address(this), subscriptionOrRegistrantToCopy);
} else {
operatorFilterRegistry.register(address(this));
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 500
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"signer_","type":"address"},{"internalType":"address payable","name":"origamasksAddress_","type":"address"},{"internalType":"address","name":"linkAddress_","type":"address"},{"internalType":"address","name":"wrapperAddress_","type":"address"},{"internalType":"uint256","name":"vipSupply_","type":"uint256"},{"internalType":"uint256","name":"minimumReserved_","type":"uint256"},{"internalType":"uint256","name":"initialMaxLevel_","type":"uint256"},{"internalType":"uint256","name":"initialDaysToLevelUp_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ExceedReservedSpots","type":"error"},{"inputs":[],"name":"ExceedVIPSpots","type":"error"},{"inputs":[],"name":"FieldTripClosed","type":"error"},{"inputs":[],"name":"IncorrectPrice","type":"error"},{"inputs":[],"name":"InvalidSaleState","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"Level0","type":"error"},{"inputs":[],"name":"LevelExisted","type":"error"},{"inputs":[],"name":"LevelNotAvailable","type":"error"},{"inputs":[],"name":"LevelNotReachedToClaim","type":"error"},{"inputs":[],"name":"LimitPerWalletExceeded","type":"error"},{"inputs":[],"name":"NotOnFieldTrip","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotUser","type":"error"},{"inputs":[],"name":"OnFieldTrip","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"inputs":[],"name":"ProvenanceHashNotSetYet","type":"error"},{"inputs":[],"name":"PublicNotReady","type":"error"},{"inputs":[],"name":"RewardAddressNotSetYet","type":"error"},{"inputs":[],"name":"RewardAlreadyClaimed","type":"error"},{"inputs":[],"name":"SizeNotSame","type":"error"},{"inputs":[],"name":"SoldOut","type":"error"},{"inputs":[],"name":"StartingIndexExisted","type":"error"},{"inputs":[],"name":"TokenOutOfRange","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"WrongDaysToLevelUp","type":"error"},{"inputs":[],"name":"WrongMaxLevel","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"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":"uint256","name":"tokenId","type":"uint256"}],"name":"Dismissed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"enum Origamasks.SaleState","name":"state","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"randomWords","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"payment","type":"uint256"}],"name":"RequestFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"numWords","type":"uint32"}],"name":"RequestSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum Origamasks.SaleState","name":"saleState","type":"uint8"}],"name":"SaleStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"nextLevel","type":"uint256"}],"name":"StartedFieldTrip","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"StoppedFieldTrip","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":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DISMISS_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"signature_","type":"bytes"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"VIPMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"VIP_LIMIT_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tos_","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"baseTokenUriPerLevel","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buddyListLimitPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"signature_","type":"bytes"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"buddyListMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level_","type":"uint256"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"claimReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"collectionSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"dismissFromFieldTrip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"experienceData","outputs":[{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"daysToLevelUp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"fieldTripOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"fieldTripStatus","outputs":[{"internalType":"bool","name":"isFieldTrip","type":"bool"},{"internalType":"uint256","name":"currentPeriod","type":"uint256"},{"internalType":"uint256","name":"prevLevel","type":"uint256"},{"internalType":"bool","name":"isLeveledUp","type":"bool"}],"stateMutability":"view","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":"getLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ownerAddress_","type":"address"}],"name":"getMintedTokenIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_requestId","type":"uint256"}],"name":"getRequestStatus","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"},{"internalType":"bool","name":"fulfilled","type":"bool"},{"internalType":"uint256[]","name":"randomWords","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"isLeveledUpFromCurrentFieldTrip","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRequestId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"levelData","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"linkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"numberMintedBuddyList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"numberMintedPublic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"numberMintedWaitList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"origamasksAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"provenanceHash","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicLimitPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"signature_","type":"bytes"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_requestId","type":"uint256"},{"internalType":"uint256[]","name":"_randomWords","type":"uint256[]"}],"name":"rawFulfillRandomWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requestRandomStartingIndex","outputs":[{"internalType":"uint256","name":"requestId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"receiver_","type":"address"}],"name":"reserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardAlreadyClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardOpenToClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"s_requests","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"},{"internalType":"bool","name":"fulfilled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleState","outputs":[{"internalType":"enum Origamasks.SaleState","name":"","type":"uint8"}],"stateMutability":"view","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":"baseTokenURI_","type":"string"},{"internalType":"uint256","name":"level_","type":"uint256"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit_","type":"uint256"}],"name":"setBuddyListLimitPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"size","type":"uint256"}],"name":"setCollectionSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"contractMetadataURI_","type":"string"}],"name":"setContractMetadataURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level_","type":"uint256"},{"internalType":"bool","name":"open_","type":"bool"}],"name":"setFieldTripOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"linkAddress_","type":"address"}],"name":"setLinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintPrice_","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxLevel_","type":"uint256"},{"internalType":"uint256","name":"daysToLevelUp_","type":"uint256"}],"name":"setNewMaxLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberReserved_","type":"uint256"}],"name":"setNumberReservedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"origamasksAddress_","type":"address"}],"name":"setOrigamasksAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"provenanceHash_","type":"string"}],"name":"setProvenanceHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit_","type":"uint256"}],"name":"setPublicLimitPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"publicMintPrice_","type":"uint256"}],"name":"setPublicMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level_","type":"uint256"},{"internalType":"address","name":"contractAddress_","type":"address"}],"name":"setRewardContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level_","type":"uint256"},{"internalType":"bool","name":"open_","type":"bool"}],"name":"setRewardOpenToClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint96","name":"royaltyPercentage_","type":"uint96"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"saleState_","type":"uint256"}],"name":"setSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"signerAddress_","type":"address"}],"name":"setSignerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply_","type":"uint256"}],"name":"setVIPSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit_","type":"uint256"}],"name":"setWaitListLimitPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"startManyFieldTrips","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"stopManyFieldTrips","outputs":[],"stateMutability":"nonpayable","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":"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":"vipSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waitListLimitPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"signature_","type":"bytes"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"waitListMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"waitListMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawLink","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c060405261138860105560006011556658d15e17628000601355667c58508723800060145560026016819055601781905560185560c8601955602a80546001600160501b03191666010003000186a01790553480156200005f57600080fd5b506040516200652338038062006523833981016040819052620000829162000994565b8585733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600a8152602001694f726967616d61736b7360b01b815250604051806040016040528060038152602001620e2ad960ec1b8152508160009080519060200190620000f2929190620008d8565b50805162000108906001906020840190620008d8565b50506001600855506daaeb6d7670e522a718067333cd4e3b1562000255578015620001a357604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200018457600080fd5b505af115801562000199573d6000803e3d6000fd5b5050505062000255565b6001600160a01b03821615620001f45760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af29039060440162000169565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b1580156200023b57600080fd5b505af115801562000250573d6000803e3d6000fd5b505050505b506200026390503362000301565b6001600160a01b039182166080521660a052620002808862000353565b6200028b87620003a7565b620002986101f4620003fb565b620002a56000336200044a565b602a8054600160501b600160f01b0319166a01000000000000000000006001600160a01b0389160217905560128490556019839055620002e682826200045a565b620002f3876001620004fc565b505050505050505062000a86565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200035d620006a1565b6001600160a01b038116620003855760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b620003b1620006a1565b6001600160a01b038116620003d95760405163d92e233d60e01b815260040160405180910390fd5b602b80546001600160a01b0319166001600160a01b0392909216919091179055565b62000405620006a1565b602b546001600160a01b03166200042f5760405163d92e233d60e01b815260040160405180910390fd5b602b5462000447906001600160a01b031682620006ff565b50565b62000456828262000800565b5050565b62000464620006a1565b6000828152602260205260409020541562000492576040516347c7b8b560e11b815260040160405180910390fd5b60008111620004b45760405163648a146160e01b815260040160405180910390fd5b602054620004c490600162000a23565b8214620004e45760405163269a18e560e01b815260040160405180910390fd5b60008281526022602090815260409091209190915555565b6001600160a01b038216620005585760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620005bf5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016200054f565b620005cf600083836001620008a4565b6000818152600260205260409020546001600160a01b031615620006365760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016200054f565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600a546001600160a01b03163314620006fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200054f565b565b6127106001600160601b03821611156200076f5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016200054f565b6001600160a01b038216620007c75760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200054f565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16620004565760008281526009602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620008603390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526021602052604090205415620008d2576040516365a2f84360e11b815260040160405180910390fd5b50505050565b828054620008e69062000a4a565b90600052602060002090601f0160209004810192826200090a576000855562000955565b82601f106200092557805160ff191683800117855562000955565b8280016001018555821562000955579182015b828111156200095557825182559160200191906001019062000938565b506200096392915062000967565b5090565b5b8082111562000963576000815560010162000968565b6001600160a01b03811681146200044757600080fd5b600080600080600080600080610100898b031215620009b257600080fd5b8851620009bf816200097e565b60208a0151909850620009d2816200097e565b60408a0151909750620009e5816200097e565b60608a0151909650620009f8816200097e565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b6000821982111562000a4557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168062000a5f57607f821691505b60208210810362000a8057634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051615a6262000ac1600039600081816118ec01528181611a4f01528181613a370152613b4001526000613a0d0152615a626000f3fe6080604052600436106106085760003560e01c80636ea3d6a211610322578063a217fddf116101a5578063d547741f116100ec578063e8fd152b11610095578063f2fde38b1161006f578063f2fde38b1461127f578063f4a0a5281461129f578063fc2a88c3146112bf57600080fd5b8063e8fd152b1461120d578063e907090314611223578063e985e9c51461123657600080fd5b8063d8a4676f116100c6578063d8a4676f146111b5578063dc53fd92146111e4578063e375a938146111fa57600080fd5b8063d547741f14611160578063d5abeb0114611180578063d6397c611461119557600080fd5b8063c46da04a1161014e578063cb774d4711610128578063cb774d4714611107578063cbc9e8271461111d578063cc06c3591461114a57600080fd5b8063c46da04a146110b2578063c6ab67a3146110d2578063c87b56dd146110e757600080fd5b8063aca8ffe71161017f578063aca8ffe71461102e578063b88d4fde1461104e578063c22b28051461106e57600080fd5b8063a217fddf14610fd9578063a22cb46514610fee578063a574da231461100e57600080fd5b80638796ba8c116102695780639b2573ee11610212578063a011a4b6116101ec578063a011a4b614610f4d578063a168fa8914610f6d578063a201fc5014610fb957600080fd5b80639b2573ee14610ee35780639d6eab8214610ef95780639eb978aa14610f1957600080fd5b806391d148541161024357806391d1485414610e5257806394611b8a14610e9857806395d89b4114610ece57600080fd5b80638796ba8c14610dff5780638da5cb5b14610e1f5780638dc654a214610e3d57600080fd5b8063798c7d9a116102cb5780638535923f116102a55780638535923f14610d9657806386481d4014610dcc57806386bb8f3714610dec57600080fd5b8063798c7d9a14610d2a578063845b505f14610d4057806384a0125a14610d6057600080fd5b80637183e226116102fc5780637183e22614610cba57806375e589a314610cea57806376aa6b7e14610d0a57600080fd5b80636ea3d6a214610c6557806370a0823114610c85578063715018a614610ca557600080fd5b8063324d1510116104aa5780635925b7b9116103f157806360a5dded1161039a5780636817c76c116103745780636817c76c14610c0c5780636b1ad36714610c225780636debc0b814610c3857600080fd5b806360a5dded14610bac5780636352211e14610bcc5780636724348214610bec57600080fd5b80635d82cf6e116103cb5780635d82cf6e14610b28578063603f4d5214610b485780636045817414610b7657600080fd5b80635925b7b914610ac8578063593f391514610ae85780635b7633d014610b0857600080fd5b80634af9345e11610453578063547f4f3a1161042d578063547f4f3a14610a685780635713b93514610a88578063575e609814610aa857600080fd5b80634af9345e14610a055780634c0fb3c014610a255780635073356414610a5557600080fd5b80633ccfd60b116104845780633ccfd60b146109ba57806342842e0e146109cf57806345c0f533146109ef57600080fd5b8063324d15101461093b57806336568abe146109515780633b6914531461097157600080fd5b806318160ddd1161056e57806323b872dd116105175780632a55205a116104f15780632a55205a146108bc5780632c26313a146108fb5780632f2ff15d1461091b57600080fd5b806323b872dd1461084c578063248a9ca31461086c57806324ff766e1461089c57600080fd5b80631fe543e3116105485780631fe543e3146107e557806321dcd43a14610805578063235cea981461082557600080fd5b806318160ddd1461079a57806318935732146107b05780631d89dab2146107d057600080fd5b8063084c4088116105d057806310969523116105aa5780631096952314610741578063148097021461076157806315b58f9c1461078457600080fd5b8063084c4088146106ee578063095ea7b31461070e5780630ea5ff561461072e57600080fd5b806301ffc9a71461060d578063031fdd1f14610642578063046dc1661461067257806306fdde0314610694578063081812fc146106b6575b600080fd5b34801561061957600080fd5b5061062d610628366004614f28565b6112d5565b60405190151581526020015b60405180910390f35b34801561064e57600080fd5b5061062d61065d366004614f45565b60236020526000908152604090205460ff1681565b34801561067e57600080fd5b5061069261068d366004614f73565b6112f5565b005b3480156106a057600080fd5b506106a9611346565b6040516106399190614fe8565b3480156106c257600080fd5b506106d66106d1366004614f45565b6113d8565b6040516001600160a01b039091168152602001610639565b3480156106fa57600080fd5b50610692610709366004614f45565b6113ff565b34801561071a57600080fd5b50610692610729366004614ffb565b61148a565b61069261073c366004615027565b6115a4565b34801561074d57600080fd5b5061069261075c36600461515e565b61180b565b34801561076d57600080fd5b50610776600181565b604051908152602001610639565b34801561079057600080fd5b5061077660145481565b3480156107a657600080fd5b5061077660115481565b3480156107bc57600080fd5b506106926107cb366004614f45565b61182a565b3480156107dc57600080fd5b50610776611837565b3480156107f157600080fd5b50610692610800366004615222565b611a44565b34801561081157600080fd5b50610692610820366004615269565b611ac6565b34801561083157600080fd5b50602a546106d690600160501b90046001600160a01b031681565b34801561085857600080fd5b50610692610867366004615299565b611afc565b34801561087857600080fd5b50610776610887366004614f45565b60009081526009602052604090206001015490565b3480156108a857600080fd5b506106926108b7366004614f73565b611c58565b3480156108c857600080fd5b506108dc6108d73660046152da565b611ca1565b604080516001600160a01b039093168352602083019190915201610639565b34801561090757600080fd5b506106926109163660046152da565b611d4f565b34801561092757600080fd5b50610692610936366004615269565b611dea565b34801561094757600080fd5b5061077660195481565b34801561095d57600080fd5b5061069261096c366004615269565b611e0f565b34801561097d57600080fd5b506109a561098c366004614f45565b601e602052600090815260409020805460019091015482565b60408051928352602083019190915201610639565b3480156109c657600080fd5b50610692611e97565b3480156109db57600080fd5b506106926109ea366004615299565b611f16565b3480156109fb57600080fd5b5061077660105481565b348015610a1157600080fd5b50610692610a203660046152fc565b612067565b348015610a3157600080fd5b5061062d610a40366004614f45565b60246020526000908152604090205460ff1681565b610692610a63366004615027565b6120ae565b348015610a7457600080fd5b50610692610a83366004615333565b6122be565b348015610a9457600080fd5b50610692610aa3366004615333565b61232a565b348015610ab457600080fd5b50610692610ac3366004615358565b612387565b348015610ad457600080fd5b50610692610ae33660046153cd565b612401565b348015610af457600080fd5b50610692610b03366004614f73565b612501565b348015610b1457600080fd5b50600b546106d6906001600160a01b031681565b348015610b3457600080fd5b50610692610b43366004614f45565b612552565b348015610b5457600080fd5b50600b54610b6990600160a01b900460ff1681565b604051610639919061542a565b348015610b8257600080fd5b50610776610b91366004614f73565b6001600160a01b03166000908152600e602052604090205490565b348015610bb857600080fd5b50610692610bc7366004614f45565b61255f565b348015610bd857600080fd5b506106d6610be7366004614f45565b612657565b348015610bf857600080fd5b50610692610c07366004615452565b6126bc565b348015610c1857600080fd5b5061077660135481565b348015610c2e57600080fd5b5061077660185481565b348015610c4457600080fd5b50610c58610c53366004614f73565b612822565b6040516106399190615545565b348015610c7157600080fd5b50610692610c80366004614f45565b61288e565b348015610c9157600080fd5b50610776610ca0366004614f73565b61289b565b348015610cb157600080fd5b50610692612921565b348015610cc657600080fd5b5061062d610cd5366004614f45565b60266020526000908152604090205460ff1681565b348015610cf657600080fd5b50610692610d05366004614f45565b612935565b348015610d1657600080fd5b50602b546106d6906001600160a01b031681565b348015610d3657600080fd5b5061077660165481565b348015610d4c57600080fd5b50610692610d5b366004614f45565b612942565b348015610d6c57600080fd5b50610776610d7b366004614f73565b6001600160a01b03166000908152600d602052604090205490565b348015610da257600080fd5b50610776610db1366004614f73565b6001600160a01b03166000908152600f602052604090205490565b348015610dd857600080fd5b50610776610de7366004614f45565b61294f565b610692610dfa3660046152da565b61297e565b348015610e0b57600080fd5b50610776610e1a366004614f45565b612ada565b348015610e2b57600080fd5b50600a546001600160a01b03166106d6565b348015610e4957600080fd5b50610692612afb565b348015610e5e57600080fd5b5061062d610e6d366004615269565b60009182526009602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610ea457600080fd5b506106d6610eb3366004614f45565b6025602052600090815260409020546001600160a01b031681565b348015610eda57600080fd5b506106a9612c3c565b348015610eef57600080fd5b5061077660125481565b348015610f0557600080fd5b50610692610f14366004615358565b612c4b565b348015610f2557600080fd5b506107767f2486b27fa81d5092a513ddb984a65deb0df3f677fc467c072b096791a56773dc81565b348015610f5957600080fd5b50610692610f68366004614f45565b612c8a565b348015610f7957600080fd5b50610fa4610f88366004614f45565b6027602052600090815260409020805460019091015460ff1682565b60408051928352901515602083015201610639565b348015610fc557600080fd5b50610692610fd436600461515e565b612c97565b348015610fe557600080fd5b50610776600081565b348015610ffa57600080fd5b50610692611009366004615558565b612cb2565b34801561101a57600080fd5b506106a9611029366004614f45565b612cbd565b34801561103a57600080fd5b50610692611049366004614f45565b612d57565b34801561105a57600080fd5b50610692611069366004615586565b612d64565b34801561107a57600080fd5b5061108e611089366004614f45565b612ec3565b60408051941515855260208501939093529183015215156060820152608001610639565b3480156110be57600080fd5b5061062d6110cd366004614f45565b612f4e565b3480156110de57600080fd5b506106a9612f64565b3480156110f357600080fd5b506106a9611102366004614f45565b612f71565b34801561111357600080fd5b50610776601d5481565b34801561112957600080fd5b50610776611138366004614f45565b60226020526000908152604090205481565b34801561115657600080fd5b5061077660205481565b34801561116c57600080fd5b5061069261117b366004615269565b613025565b34801561118c57600080fd5b5061077661304a565b3480156111a157600080fd5b506106926111b0366004615606565b613061565b3480156111c157600080fd5b506111d56111d0366004614f45565b613088565b6040516106399392919061564b565b3480156111f057600080fd5b5061077660155481565b610692611208366004615027565b613176565b34801561121957600080fd5b5061077660175481565b610692611231366004615027565b61337a565b34801561124257600080fd5b5061062d611251366004615675565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561128b57600080fd5b5061069261129a366004614f73565b613589565b3480156112ab57600080fd5b506106926112ba366004614f45565b6135ff565b3480156112cb57600080fd5b5061077660295481565b60006112e08261360c565b806112ef57506112ef8261365c565b92915050565b6112fd613681565b6001600160a01b0381166113245760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b606060008054611355906156a3565b80601f0160208091040260200160405190810160405280929190818152602001828054611381906156a3565b80156113ce5780601f106113a3576101008083540402835291602001916113ce565b820191906000526020600020905b8154815290600101906020018083116113b157829003601f168201915b5050505050905090565b60006113e3826136db565b506000908152600460205260409020546001600160a01b031690565b611407613681565b80600681111561141957611419615414565b600b805460ff60a01b1916600160a01b83600681111561143b5761143b615414565b0217905550600b54600160a01b900460ff16600681111561145e5761145e615414565b6040517f92a17b827ee9d42ea9454bb4ca941a1800870e6d01c0842d09ba23ccc0190ee190600090a250565b600061149582612657565b9050806001600160a01b0316836001600160a01b0316036115075760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061152357506115238133611251565b6115955760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016114fe565b61159f838361373f565b505050565b60043332146115c657604051637aafae9760e01b815260040160405180910390fd5b8060068111156115d8576115d8615414565b600b54600160a01b900460ff1660068111156115f6576115f6615414565b1461161457604051633482502f60e01b815260040160405180910390fd5b601554600003611637576040516327d9031160e11b815260040160405180910390fd5b6001821080611647575060105482115b156116655760405163744f82e360e01b815260040160405180910390fd5b6116c284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260068152655075626c696360d01b602082015291506137ad9050565b6116df57604051638baa579f60e01b815260040160405180910390fd5b6116e761304a565b6011546116f59060016156f3565b1115611714576040516352df9fe560e01b815260040160405180910390fd5b6015543414611736576040516399b5cb1d60e01b815260040160405180910390fd5b601854336000908152600f602052604090205410611767576040516313f9b25d60e21b815260040160405180910390fd5b336000818152600c6020908152604080832080546001818101835591855283852001879055938352600f909152812080549091906117a69084906156f3565b909155506117b69050338361384e565b601180549060006117c68361570b565b9091555082905060045b60405134815233907fba4ff9d44bbafa5bd145a99f6e3381a0f9da59c4b68dc8621e54c3d7032f07b49060200160405180910390a450505050565b611813613681565b805161182690601c906020840190614e3f565b5050565b611832613681565b601955565b6000611841613681565b6000601c8054611850906156a3565b905011611870576040516342f1e79360e01b815260040160405180910390fd5b601d5415611891576040516393a79bd960e01b815260040160405180910390fd5b602a546118bf9063ffffffff8082169161ffff640100000000820416916601000000000000909104166139e7565b604080516060810191829052602a546310c1b4d560e21b90925263ffffffff9091166064820152909150807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634306d35460848301602060405180830381865afa15801561193a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195e9190615724565b815260006020808301829052604080518381528083018252938101939093528482526027815290829020835181558382015160018201805460ff19169115159190911790559183015180516119b99260028501920190614ec3565b5050602880546001810182556000919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501829055506029819055602a5460408051838152660100000000000090920463ffffffff1660208301527fcc58b13ad3eab50626c6a6300b1d139cd6ebb1688a7cced9461c2f7e762665ee910160405180910390a190565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611abc5760405162461bcd60e51b815260206004820152601f60248201527f6f6e6c792056524620563220777261707065722063616e2066756c66696c6c0060448201526064016114fe565b6118268282613bc8565b611ace613681565b60009182526025602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b826daaeb6d7670e522a718067333cd4e3b15611c4757336001600160a01b03821603611b3257611b2d848484613cc8565b611c52565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba5919061573d565b8015611c285750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c28919061573d565b611c4757604051633b79c77360e21b81523360048201526024016114fe565b611c52848484613cc8565b50505050565b611c60613681565b602a80546001600160a01b03909216600160501b027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909216919091179055565b60008281526007602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291611d165750604080518082019091526006546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090611d35906001600160601b03168761575a565b611d3f919061578f565b91519350909150505b9250929050565b611d57613681565b60008281526022602052604090205415611d84576040516347c7b8b560e11b815260040160405180910390fd5b60008111611da55760405163648a146160e01b815260040160405180910390fd5b602054611db39060016156f3565b8214611dd25760405163269a18e560e01b815260040160405180910390fd5b60008281526022602090815260409091209190915555565b600082815260096020526040902060010154611e0581613d3f565b61159f8383613d49565b6001600160a01b0381163314611e8d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016114fe565b6118268282613deb565b611e9f613681565b602b546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611eec576040519150601f19603f3d011682016040523d82523d6000602084013e611ef1565b606091505b5050905080611f13576040516312171d8360e31b815260040160405180910390fd5b50565b826daaeb6d7670e522a718067333cd4e3b1561205c57336001600160a01b03821603611f4757611b2d848484613e6e565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fba919061573d565b801561203d5750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015612019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203d919061573d565b61205c57604051633b79c77360e21b81523360048201526024016114fe565b611c52848484613e6e565b61206f613681565b602b546001600160a01b03166120985760405163d92e233d60e01b815260040160405180910390fd5b602b54611f13906001600160a01b031682613e89565b60023332146120d057604051637aafae9760e01b815260040160405180910390fd5b8060068111156120e2576120e2615414565b600b54600160a01b900460ff16600681111561210057612100615414565b1461211e57604051633482502f60e01b815260040160405180910390fd5b600182108061212e575060105482115b1561214c5760405163744f82e360e01b815260040160405180910390fd5b6121ac84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526009815268109d59191e531a5cdd60ba1b602082015291506137ad9050565b6121c957604051638baa579f60e01b815260040160405180910390fd5b6121d161304a565b6011546121df9060016156f3565b11156121fe576040516352df9fe560e01b815260040160405180910390fd5b6013543414612220576040516399b5cb1d60e01b815260040160405180910390fd5b601654336000908152600d602052604090205410612251576040516313f9b25d60e21b815260040160405180910390fd5b336000818152600c6020908152604080832080546001818101835591855283852001879055938352600d909152812080549091906122909084906156f3565b909155506122a09050338361384e565b601180549060006122b08361570b565b9091555082905060026117d0565b6122c6613681565b600082116122e757604051638f65cf4160e01b815260040160405180910390fd5b60205482111561230a5760405163f4cb421f60e01b815260040160405180910390fd5b600091825260236020526040909120805460ff1916911515919091179055565b612332613681565b6000828152602560205260409020546001600160a01b031661236757604051631a5a25d360e11b815260040160405180910390fd5b600091825260266020526040909120805460ff1916911515919091179055565b8060005b81811015611c525760006123b68585848181106123aa576123aa6157a3565b9050602002013561294f565b6123c19060016156f3565b905060205481116123ee576123ee8585848181106123e1576123e16157a3565b9050602002013582613f86565b50806123f98161570b565b91505061238b565b612409613681565b600633321461242b57604051637aafae9760e01b815260040160405180910390fd5b80600681111561243d5761243d615414565b600b54600160a01b900460ff16600681111561245b5761245b615414565b1461247957604051633482502f60e01b815260040160405180910390fd5b601054835160115461248b91906156f3565b11156124aa57604051631279e56160e11b815260040160405180910390fd5b60005b8351811015611c52576124d9838583815181106124cc576124cc6157a3565b602002602001015161384e565b601180549060006124e98361570b565b919050555080806124f99061570b565b9150506124ad565b612509613681565b6001600160a01b0381166125305760405163d92e233d60e01b815260040160405180910390fd5b602b80546001600160a01b0319166001600160a01b0392909216919091179055565b61255a613681565b601555565b7f2486b27fa81d5092a513ddb984a65deb0df3f677fc467c072b096791a56773dc61258981613d3f565b60008281526021602052604081205490036125b75760405163290da5e160e01b815260040160405180910390fd5b6125c082612f4e565b156125f0576000828152601f60205260409020546125df8160016156f3565b6000848152601f6020526040902055505b6000828152602160205260408082208290555183917f687f2bdd19dccc556cb5455661050c9b9c1d8e5ea08012290cbeb69da4ec28a891a260405182907f3b834a47ba67ef104aea456265866673a3f6b0a58e7201148d17a57a991892e890600090a25050565b6000818152600260205260408120546001600160a01b0316806112ef5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016114fe565b6126c4613681565b6126cc6140c1565b60053332146126ee57604051637aafae9760e01b815260040160405180910390fd5b80600681111561270057612700615414565b600b54600160a01b900460ff16600681111561271e5761271e615414565b1461273c57604051633482502f60e01b815260040160405180910390fd5b815183511461275e5760405163b3fd7b3b60e01b815260040160405180910390fd5b60005b835181101561281657600084828151811061277e5761277e6157a3565b60200260200101519050600084838151811061279c5761279c6157a3565b602002602001015190506001600d6000846001600160a01b03166001600160a01b0316815260200190815260200160002060008282546127dc91906156f3565b909155506127ec9050828261384e565b601180549060006127fc8361570b565b91905055505050808061280e9061570b565b915050612761565b50506118266001600855565b6001600160a01b0381166000908152600c602090815260409182902080548351818402810184019094528084526060939283018282801561288257602002820191906000526020600020905b81548152602001906001019080831161286e575b50505050509050919050565b612896613681565b601855565b60006001600160a01b0382166129055760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016114fe565b506001600160a01b031660009081526003602052604090205490565b612929613681565b612933600061411a565b565b61293d613681565b601255565b61294a613681565b601755565b6000818152601f602052604081205461296783612f4e565b156112ef576129776001826156f3565b9392505050565b3361298882612657565b6001600160a01b0316146129af576040516330cd747160e01b815260040160405180910390fd5b816129b98261294f565b10156129d85760405163d1cb832f60e01b815260040160405180910390fd5b60008181526024602052604090205460ff1615612a0857604051632cfe303760e21b815260040160405180910390fd5b6000828152602560205260409020546001600160a01b0316612a3d57604051631a5a25d360e11b815260040160405180910390fd5b6000818152602460208181526040808420805460ff19166001179055858452602590915291829020549151634d24848760e11b81523360048201529081018390526001600160a01b03909116908190639a49090e90349060440160206040518083038185885af1158015612ab5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c529190615724565b60288181548110612aea57600080fd5b600091825260209091200154905081565b612b03613681565b602a546040516370a0823160e01b8152306004820152600160501b9091046001600160a01b031690819063a9059cbb90339083906370a0823190602401602060405180830381865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b819190615724565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf0919061573d565b611f135760405162461bcd60e51b815260206004820152601260248201527f556e61626c6520746f207472616e73666572000000000000000000000000000060448201526064016114fe565b606060018054611355906156a3565b8060005b81811015611c5257612c78848483818110612c6c57612c6c6157a3565b9050602002013561416c565b80612c828161570b565b915050612c4f565b612c92613681565b601655565b612c9f613681565b805161182690601b906020840190614e3f565b61182633838361428b565b601a6020526000908152604090208054612cd6906156a3565b80601f0160208091040260200160405190810160405280929190818152602001828054612d02906156a3565b8015612d4f5780601f10612d2457610100808354040283529160200191612d4f565b820191906000526020600020905b815481529060010190602001808311612d3257829003601f168201915b505050505081565b612d5f613681565b601055565b836daaeb6d7670e522a718067333cd4e3b15612eb057336001600160a01b03821603612d9b57612d9685858585614359565b612ebc565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e919061573d565b8015612e915750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015612e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e91919061573d565b612eb057604051633b79c77360e21b81523360048201526024016114fe565b612ebc85858585614359565b5050505050565b6000818152602160205260408120548190819081908015612eef5760019450612eec81426157b9565b93505b6000868152601f60205260408120549350602281612f0e8660016156f3565b8152602001908152602001600020549050600081118015612f3b5750612f37816201518061575a565b8510155b15612f4557600192505b50509193509193565b600080612f5a83612ec3565b9695505050505050565b601c8054612cd6906156a3565b6000818152600260205260409020546060906001600160a01b0316612fd85760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20646f65736e27742065786973742100000000000000000000000060448201526064016114fe565b6000612fe38361294f565b6000818152601a60205260409020909150612ffd846143d1565b60405160200161300e9291906157ec565b604051602081830303815290604052915050919050565b60008281526009602052604090206001015461304081613d3f565b61159f8383613deb565b600060195460105461305c91906157b9565b905090565b613069613681565b6000818152601a60209081526040909120835161159f92850190614e3f565b60008181526027602052604081205481906060906130dc5760405162461bcd60e51b81526020600482015260116024820152701c995c5d595cdd081b9bdd08199bdd5b99607a1b60448201526064016114fe565b6000848152602760209081526040808320815160608101835281548152600182015460ff1615158185015260028201805484518187028101870186528181529295939486019383018282801561315157602002820191906000526020600020905b81548152602001906001019080831161313d575b5050509190925250508151602083015160409093015190989297509550909350505050565b600133321461319857604051637aafae9760e01b815260040160405180910390fd5b8060068111156131aa576131aa615414565b600b54600160a01b900460ff1660068111156131c8576131c8615414565b146131e657604051633482502f60e01b815260040160405180910390fd5b60018210806131f6575060105482115b156132145760405163744f82e360e01b815260040160405180910390fd5b61326e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600381526205649560ec1b602082015291506137ad9050565b61328b57604051638baa579f60e01b815260040160405180910390fd5b60125460115461329c9060016156f3565b11156132bb5760405163664dad0f60e11b815260040160405180910390fd5b60135434146132dd576040516399b5cb1d60e01b815260040160405180910390fd5b336000908152600d602052604090205460011161330d576040516313f9b25d60e21b815260040160405180910390fd5b336000818152600c6020908152604080832080546001818101835591855283852001879055938352600d9091528120805490919061334c9084906156f3565b9091555061335c9050338361384e565b6011805490600061336c8361570b565b9091555082905060016117d0565b600333321461339c57604051637aafae9760e01b815260040160405180910390fd5b8060068111156133ae576133ae615414565b600b54600160a01b900460ff1660068111156133cc576133cc615414565b146133ea57604051633482502f60e01b815260040160405180910390fd5b60018210806133fa575060105482115b156134185760405163744f82e360e01b815260040160405180910390fd5b61347784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600881526715d85a5d131a5cdd60c21b602082015291506137ad9050565b61349457604051638baa579f60e01b815260040160405180910390fd5b61349c61304a565b6011546134aa9060016156f3565b11156134c9576040516352df9fe560e01b815260040160405180910390fd5b60145434146134eb576040516399b5cb1d60e01b815260040160405180910390fd5b601754336000908152600e60205260409020541061351c576040516313f9b25d60e21b815260040160405180910390fd5b336000818152600c6020908152604080832080546001818101835591855283852001879055938352600e9091528120805490919061355b9084906156f3565b9091555061356b9050338361384e565b6011805490600061357b8361570b565b9091555082905060036117d0565b613591613681565b6001600160a01b0381166135f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016114fe565b611f138161411a565b613607613681565b601355565b60006001600160e01b031982166380ac58cd60e01b148061363d57506001600160e01b03198216635b5e139f60e01b145b806112ef57506301ffc9a760e01b6001600160e01b03198316146112ef565b60006001600160e01b0319821663152a902d60e11b14806112ef57506112ef8261360c565b600a546001600160a01b031633146129335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016114fe565b6000818152600260205260409020546001600160a01b0316611f135760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016114fe565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061377482612657565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006138368333846040516020016137c6929190615889565b6040516020818303038152906040526137de906158bc565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c810191909152605c016040516020818303038152906040528051906020012061446490919063ffffffff16565b600b546001600160a01b039182169116149392505050565b6001600160a01b0382166138a45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016114fe565b6000818152600260205260409020546001600160a01b0316156139095760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016114fe565b613917600083836001614488565b6000818152600260205260409020546001600160a01b03161561397c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016114fe565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040516310c1b4d560e21b815263ffffffff841660048201526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691634000aea0917f00000000000000000000000000000000000000000000000000000000000000009190821690634306d35490602401602060405180830381865afa158015613a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa59190615724565b6040805163ffffffff808b16602083015261ffff8a169282019290925290871660608201526080016040516020818303038152906040526040518463ffffffff1660e01b8152600401613afa939291906158e0565b6020604051808303816000875af1158015613b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3d919061573d565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fc2a88c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bc09190615724565b949350505050565b600082815260276020526040902054613c175760405162461bcd60e51b81526020600482015260116024820152701c995c5d595cdd081b9bdd08199bdd5b99607a1b60448201526064016114fe565b60008281526027602052604081206001908101805460ff19169091179055601054825190918391613c4a57613c4a6157a3565b6020026020010151613c5c9190615908565b601d819055600003613c7a57601d54613c769060016156f3565b601d555b600082815260276020526040908190205490517f147eb1ff0c82f87f2b03e2c43f5a36488ff63ec6b730195fde4605f612f8db5191613cbc918591859161591c565b60405180910390a15050565b613cd233826144b5565b613d345760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016114fe565b61159f838383614533565b611f138133614720565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff166118265760008281526009602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613da73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16156118265760008281526009602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61159f83838360405180602001604052806000815250612d64565b6127106001600160601b0382161115613ef75760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016114fe565b6001600160a01b038216613f4d5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016114fe565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b8133613f9182612657565b6001600160a01b03161480613fb6575033613fab826113d8565b6001600160a01b0316145b6140025760405162461bcd60e51b815260206004820152601e60248201527f4552433732313a204e6f7420617070726f766564206e6f72206f776e6572000060448201526064016114fe565b60008281526023602052604090205460ff1661403157604051630f65b44560e01b815260040160405180910390fd5b6000838152602160205260409020541561405e576040516365a2f84360e11b815260040160405180910390fd5b6020548211156140815760405163f4cb421f60e01b815260040160405180910390fd5b60008381526021602052604080822042905551839185917f1595e8771273259bf12e7d81d3e7b998f01eeaca6cd0172b56d01cd966177ab69190a3505050565b6002600854036141135760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016114fe565b6002600855565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b803361417782612657565b6001600160a01b0316148061419c575033614191826113d8565b6001600160a01b0316145b6141e85760405162461bcd60e51b815260206004820152601e60248201527f4552433732313a204e6f7420617070726f766564206e6f72206f776e6572000060448201526064016114fe565b60008281526021602052604081205490036142165760405163290da5e160e01b815260040160405180910390fd5b61421f82612f4e565b1561424f576000828152601f602052604090205461423e8160016156f3565b6000848152601f6020526040902055505b6000828152602160205260408082208290555183917f687f2bdd19dccc556cb5455661050c9b9c1d8e5ea08012290cbeb69da4ec28a891a25050565b816001600160a01b0316836001600160a01b0316036142ec5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016114fe565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61436333836144b5565b6143c55760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016114fe565b611c5284848484614795565b606060006143de83614813565b600101905060008167ffffffffffffffff8111156143fe576143fe61509f565b6040519080825280601f01601f191660200182016040528015614428576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461443257509392505050565b600080600061447385856148f5565b9150915061448081614937565b509392505050565b60008281526021602052604090205415611c52576040516365a2f84360e11b815260040160405180910390fd5b6000806144c183612657565b9050806001600160a01b0316846001600160a01b0316148061450857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80613bc05750836001600160a01b0316614521846113d8565b6001600160a01b031614949350505050565b826001600160a01b031661454682612657565b6001600160a01b0316146145aa5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016114fe565b6001600160a01b03821661460c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016114fe565b6146198383836001614488565b826001600160a01b031661462c82612657565b6001600160a01b0316146146905760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016114fe565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff166118265761475381614a81565b61475e836020614a93565b60405160200161476f929190615945565b60408051601f198184030181529082905262461bcd60e51b82526114fe91600401614fe8565b6147a0848484614533565b6147ac84848484614c2f565b611c525760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016114fe565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061485c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310614888576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106148a657662386f26fc10000830492506010015b6305f5e10083106148be576305f5e100830492506008015b61271083106148d257612710830492506004015b606483106148e4576064830492506002015b600a83106112ef5760010192915050565b600080825160410361492b5760208301516040840151606085015160001a61491f87828585614d7b565b94509450505050611d48565b50600090506002611d48565b600081600481111561494b5761494b615414565b036149535750565b600181600481111561496757614967615414565b036149b45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016114fe565b60028160048111156149c8576149c8615414565b03614a155760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016114fe565b6003816004811115614a2957614a29615414565b03611f135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016114fe565b60606112ef6001600160a01b03831660145b60606000614aa283600261575a565b614aad9060026156f3565b67ffffffffffffffff811115614ac557614ac561509f565b6040519080825280601f01601f191660200182016040528015614aef576020820181803683370190505b509050600360fc1b81600081518110614b0a57614b0a6157a3565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614b3957614b396157a3565b60200101906001600160f81b031916908160001a9053506000614b5d84600261575a565b614b689060016156f3565b90505b6001811115614be0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614b9c57614b9c6157a3565b1a60f81b828281518110614bb257614bb26157a3565b60200101906001600160f81b031916908160001a90535060049490941c93614bd9816159c6565b9050614b6b565b5083156129775760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016114fe565b60006001600160a01b0384163b15614d7057604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614c739033908990889088906004016159dd565b6020604051808303816000875af1925050508015614cae575060408051601f3d908101601f19168201909252614cab91810190615a0f565b60015b614d56573d808015614cdc576040519150601f19603f3d011682016040523d82523d6000602084013e614ce1565b606091505b508051600003614d4e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016114fe565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613bc0565b506001949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614db25750600090506003614e36565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614e06573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614e2f57600060019250925050614e36565b9150600090505b94509492505050565b828054614e4b906156a3565b90600052602060002090601f016020900481019282614e6d5760008555614eb3565b82601f10614e8657805160ff1916838001178555614eb3565b82800160010185558215614eb3579182015b82811115614eb3578251825591602001919060010190614e98565b50614ebf929150614efd565b5090565b828054828255906000526020600020908101928215614eb35791602002820182811115614eb3578251825591602001919060010190614e98565b5b80821115614ebf5760008155600101614efe565b6001600160e01b031981168114611f1357600080fd5b600060208284031215614f3a57600080fd5b813561297781614f12565b600060208284031215614f5757600080fd5b5035919050565b6001600160a01b0381168114611f1357600080fd5b600060208284031215614f8557600080fd5b813561297781614f5e565b60005b83811015614fab578181015183820152602001614f93565b83811115611c525750506000910152565b60008151808452614fd4816020860160208601614f90565b601f01601f19169290920160200192915050565b6020815260006129776020830184614fbc565b6000806040838503121561500e57600080fd5b823561501981614f5e565b946020939093013593505050565b60008060006040848603121561503c57600080fd5b833567ffffffffffffffff8082111561505457600080fd5b818601915086601f83011261506857600080fd5b81358181111561507757600080fd5b87602082850101111561508957600080fd5b6020928301989097509590910135949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156150de576150de61509f565b604052919050565b600067ffffffffffffffff8311156151005761510061509f565b615113601f8401601f19166020016150b5565b905082815283838301111561512757600080fd5b828260208301376000602084830101529392505050565b600082601f83011261514f57600080fd5b612977838335602085016150e6565b60006020828403121561517057600080fd5b813567ffffffffffffffff81111561518757600080fd5b613bc08482850161513e565b600067ffffffffffffffff8211156151ad576151ad61509f565b5060051b60200190565b600082601f8301126151c857600080fd5b813560206151dd6151d883615193565b6150b5565b82815260059290921b840181019181810190868411156151fc57600080fd5b8286015b848110156152175780358352918301918301615200565b509695505050505050565b6000806040838503121561523557600080fd5b82359150602083013567ffffffffffffffff81111561525357600080fd5b61525f858286016151b7565b9150509250929050565b6000806040838503121561527c57600080fd5b82359150602083013561528e81614f5e565b809150509250929050565b6000806000606084860312156152ae57600080fd5b83356152b981614f5e565b925060208401356152c981614f5e565b929592945050506040919091013590565b600080604083850312156152ed57600080fd5b50508035926020909101359150565b60006020828403121561530e57600080fd5b81356001600160601b038116811461297757600080fd5b8015158114611f1357600080fd5b6000806040838503121561534657600080fd5b82359150602083013561528e81615325565b6000806020838503121561536b57600080fd5b823567ffffffffffffffff8082111561538357600080fd5b818501915085601f83011261539757600080fd5b8135818111156153a657600080fd5b8660208260051b85010111156153bb57600080fd5b60209290920196919550909350505050565b600080604083850312156153e057600080fd5b823567ffffffffffffffff8111156153f757600080fd5b615403858286016151b7565b925050602083013561528e81614f5e565b634e487b7160e01b600052602160045260246000fd5b602081016007831061544c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561546557600080fd5b823567ffffffffffffffff8082111561547d57600080fd5b818501915085601f83011261549157600080fd5b813560206154a16151d883615193565b82815260059290921b840181019181810190898411156154c057600080fd5b948201945b838610156154e75785356154d881614f5e565b825294820194908201906154c5565b965050860135925050808211156154fd57600080fd5b5061525f858286016151b7565b600081518084526020808501945080840160005b8381101561553a5781518752958201959082019060010161551e565b509495945050505050565b602081526000612977602083018461550a565b6000806040838503121561556b57600080fd5b823561557681614f5e565b9150602083013561528e81615325565b6000806000806080858703121561559c57600080fd5b84356155a781614f5e565b935060208501356155b781614f5e565b925060408501359150606085013567ffffffffffffffff8111156155da57600080fd5b8501601f810187136155eb57600080fd5b6155fa878235602084016150e6565b91505092959194509250565b6000806040838503121561561957600080fd5b823567ffffffffffffffff81111561563057600080fd5b61563c8582860161513e565b95602094909401359450505050565b838152821515602082015260606040820152600061566c606083018461550a565b95945050505050565b6000806040838503121561568857600080fd5b823561569381614f5e565b9150602083013561528e81614f5e565b600181811c908216806156b757607f821691505b6020821081036156d757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115615706576157066156dd565b500190565b60006001820161571d5761571d6156dd565b5060010190565b60006020828403121561573657600080fd5b5051919050565b60006020828403121561574f57600080fd5b815161297781615325565b6000816000190483118215151615615774576157746156dd565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261579e5761579e615779565b500490565b634e487b7160e01b600052603260045260246000fd5b6000828210156157cb576157cb6156dd565b500390565b600081516157e2818560208601614f90565b9290920192915050565b600080845481600182811c91508083168061580857607f831692505b6020808410820361582757634e487b7160e01b86526022600452602486fd5b81801561583b576001811461584c57615879565b60ff19861689528489019650615879565b60008b81526020902060005b868110156158715781548b820152908501908301615858565b505084890196505b50505050505061566c81856157d0565b6001600160601b03198360601b168152600082516158ae816014850160208701614f90565b919091016014019392505050565b805160208083015191908110156156d75760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600061566c6060830184614fbc565b60008261591757615917615779565b500690565b838152606060208201526000615935606083018561550a565b9050826040830152949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161597d816017850160208801614f90565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516159ba816028840160208801614f90565b01602801949350505050565b6000816159d5576159d56156dd565b506000190190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612f5a6080830184614fbc565b600060208284031215615a2157600080fd5b815161297781614f1256fea26469706673582212206d68727eb3b3ccf8945c530d870e49d9a3330d4048a61729221dfd8c56d1fa1964736f6c634300080d003300000000000000000000000012367227acba32e16febb990a7a35e61c08664d50000000000000000000000004fb7c9c32017c49cf598a6f9ade7038ef5f6d8dd000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000005a861794b927983406fce1d062e00b9368d97df6000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001e

Deployed Bytecode

0x6080604052600436106106085760003560e01c80636ea3d6a211610322578063a217fddf116101a5578063d547741f116100ec578063e8fd152b11610095578063f2fde38b1161006f578063f2fde38b1461127f578063f4a0a5281461129f578063fc2a88c3146112bf57600080fd5b8063e8fd152b1461120d578063e907090314611223578063e985e9c51461123657600080fd5b8063d8a4676f116100c6578063d8a4676f146111b5578063dc53fd92146111e4578063e375a938146111fa57600080fd5b8063d547741f14611160578063d5abeb0114611180578063d6397c611461119557600080fd5b8063c46da04a1161014e578063cb774d4711610128578063cb774d4714611107578063cbc9e8271461111d578063cc06c3591461114a57600080fd5b8063c46da04a146110b2578063c6ab67a3146110d2578063c87b56dd146110e757600080fd5b8063aca8ffe71161017f578063aca8ffe71461102e578063b88d4fde1461104e578063c22b28051461106e57600080fd5b8063a217fddf14610fd9578063a22cb46514610fee578063a574da231461100e57600080fd5b80638796ba8c116102695780639b2573ee11610212578063a011a4b6116101ec578063a011a4b614610f4d578063a168fa8914610f6d578063a201fc5014610fb957600080fd5b80639b2573ee14610ee35780639d6eab8214610ef95780639eb978aa14610f1957600080fd5b806391d148541161024357806391d1485414610e5257806394611b8a14610e9857806395d89b4114610ece57600080fd5b80638796ba8c14610dff5780638da5cb5b14610e1f5780638dc654a214610e3d57600080fd5b8063798c7d9a116102cb5780638535923f116102a55780638535923f14610d9657806386481d4014610dcc57806386bb8f3714610dec57600080fd5b8063798c7d9a14610d2a578063845b505f14610d4057806384a0125a14610d6057600080fd5b80637183e226116102fc5780637183e22614610cba57806375e589a314610cea57806376aa6b7e14610d0a57600080fd5b80636ea3d6a214610c6557806370a0823114610c85578063715018a614610ca557600080fd5b8063324d1510116104aa5780635925b7b9116103f157806360a5dded1161039a5780636817c76c116103745780636817c76c14610c0c5780636b1ad36714610c225780636debc0b814610c3857600080fd5b806360a5dded14610bac5780636352211e14610bcc5780636724348214610bec57600080fd5b80635d82cf6e116103cb5780635d82cf6e14610b28578063603f4d5214610b485780636045817414610b7657600080fd5b80635925b7b914610ac8578063593f391514610ae85780635b7633d014610b0857600080fd5b80634af9345e11610453578063547f4f3a1161042d578063547f4f3a14610a685780635713b93514610a88578063575e609814610aa857600080fd5b80634af9345e14610a055780634c0fb3c014610a255780635073356414610a5557600080fd5b80633ccfd60b116104845780633ccfd60b146109ba57806342842e0e146109cf57806345c0f533146109ef57600080fd5b8063324d15101461093b57806336568abe146109515780633b6914531461097157600080fd5b806318160ddd1161056e57806323b872dd116105175780632a55205a116104f15780632a55205a146108bc5780632c26313a146108fb5780632f2ff15d1461091b57600080fd5b806323b872dd1461084c578063248a9ca31461086c57806324ff766e1461089c57600080fd5b80631fe543e3116105485780631fe543e3146107e557806321dcd43a14610805578063235cea981461082557600080fd5b806318160ddd1461079a57806318935732146107b05780631d89dab2146107d057600080fd5b8063084c4088116105d057806310969523116105aa5780631096952314610741578063148097021461076157806315b58f9c1461078457600080fd5b8063084c4088146106ee578063095ea7b31461070e5780630ea5ff561461072e57600080fd5b806301ffc9a71461060d578063031fdd1f14610642578063046dc1661461067257806306fdde0314610694578063081812fc146106b6575b600080fd5b34801561061957600080fd5b5061062d610628366004614f28565b6112d5565b60405190151581526020015b60405180910390f35b34801561064e57600080fd5b5061062d61065d366004614f45565b60236020526000908152604090205460ff1681565b34801561067e57600080fd5b5061069261068d366004614f73565b6112f5565b005b3480156106a057600080fd5b506106a9611346565b6040516106399190614fe8565b3480156106c257600080fd5b506106d66106d1366004614f45565b6113d8565b6040516001600160a01b039091168152602001610639565b3480156106fa57600080fd5b50610692610709366004614f45565b6113ff565b34801561071a57600080fd5b50610692610729366004614ffb565b61148a565b61069261073c366004615027565b6115a4565b34801561074d57600080fd5b5061069261075c36600461515e565b61180b565b34801561076d57600080fd5b50610776600181565b604051908152602001610639565b34801561079057600080fd5b5061077660145481565b3480156107a657600080fd5b5061077660115481565b3480156107bc57600080fd5b506106926107cb366004614f45565b61182a565b3480156107dc57600080fd5b50610776611837565b3480156107f157600080fd5b50610692610800366004615222565b611a44565b34801561081157600080fd5b50610692610820366004615269565b611ac6565b34801561083157600080fd5b50602a546106d690600160501b90046001600160a01b031681565b34801561085857600080fd5b50610692610867366004615299565b611afc565b34801561087857600080fd5b50610776610887366004614f45565b60009081526009602052604090206001015490565b3480156108a857600080fd5b506106926108b7366004614f73565b611c58565b3480156108c857600080fd5b506108dc6108d73660046152da565b611ca1565b604080516001600160a01b039093168352602083019190915201610639565b34801561090757600080fd5b506106926109163660046152da565b611d4f565b34801561092757600080fd5b50610692610936366004615269565b611dea565b34801561094757600080fd5b5061077660195481565b34801561095d57600080fd5b5061069261096c366004615269565b611e0f565b34801561097d57600080fd5b506109a561098c366004614f45565b601e602052600090815260409020805460019091015482565b60408051928352602083019190915201610639565b3480156109c657600080fd5b50610692611e97565b3480156109db57600080fd5b506106926109ea366004615299565b611f16565b3480156109fb57600080fd5b5061077660105481565b348015610a1157600080fd5b50610692610a203660046152fc565b612067565b348015610a3157600080fd5b5061062d610a40366004614f45565b60246020526000908152604090205460ff1681565b610692610a63366004615027565b6120ae565b348015610a7457600080fd5b50610692610a83366004615333565b6122be565b348015610a9457600080fd5b50610692610aa3366004615333565b61232a565b348015610ab457600080fd5b50610692610ac3366004615358565b612387565b348015610ad457600080fd5b50610692610ae33660046153cd565b612401565b348015610af457600080fd5b50610692610b03366004614f73565b612501565b348015610b1457600080fd5b50600b546106d6906001600160a01b031681565b348015610b3457600080fd5b50610692610b43366004614f45565b612552565b348015610b5457600080fd5b50600b54610b6990600160a01b900460ff1681565b604051610639919061542a565b348015610b8257600080fd5b50610776610b91366004614f73565b6001600160a01b03166000908152600e602052604090205490565b348015610bb857600080fd5b50610692610bc7366004614f45565b61255f565b348015610bd857600080fd5b506106d6610be7366004614f45565b612657565b348015610bf857600080fd5b50610692610c07366004615452565b6126bc565b348015610c1857600080fd5b5061077660135481565b348015610c2e57600080fd5b5061077660185481565b348015610c4457600080fd5b50610c58610c53366004614f73565b612822565b6040516106399190615545565b348015610c7157600080fd5b50610692610c80366004614f45565b61288e565b348015610c9157600080fd5b50610776610ca0366004614f73565b61289b565b348015610cb157600080fd5b50610692612921565b348015610cc657600080fd5b5061062d610cd5366004614f45565b60266020526000908152604090205460ff1681565b348015610cf657600080fd5b50610692610d05366004614f45565b612935565b348015610d1657600080fd5b50602b546106d6906001600160a01b031681565b348015610d3657600080fd5b5061077660165481565b348015610d4c57600080fd5b50610692610d5b366004614f45565b612942565b348015610d6c57600080fd5b50610776610d7b366004614f73565b6001600160a01b03166000908152600d602052604090205490565b348015610da257600080fd5b50610776610db1366004614f73565b6001600160a01b03166000908152600f602052604090205490565b348015610dd857600080fd5b50610776610de7366004614f45565b61294f565b610692610dfa3660046152da565b61297e565b348015610e0b57600080fd5b50610776610e1a366004614f45565b612ada565b348015610e2b57600080fd5b50600a546001600160a01b03166106d6565b348015610e4957600080fd5b50610692612afb565b348015610e5e57600080fd5b5061062d610e6d366004615269565b60009182526009602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610ea457600080fd5b506106d6610eb3366004614f45565b6025602052600090815260409020546001600160a01b031681565b348015610eda57600080fd5b506106a9612c3c565b348015610eef57600080fd5b5061077660125481565b348015610f0557600080fd5b50610692610f14366004615358565b612c4b565b348015610f2557600080fd5b506107767f2486b27fa81d5092a513ddb984a65deb0df3f677fc467c072b096791a56773dc81565b348015610f5957600080fd5b50610692610f68366004614f45565b612c8a565b348015610f7957600080fd5b50610fa4610f88366004614f45565b6027602052600090815260409020805460019091015460ff1682565b60408051928352901515602083015201610639565b348015610fc557600080fd5b50610692610fd436600461515e565b612c97565b348015610fe557600080fd5b50610776600081565b348015610ffa57600080fd5b50610692611009366004615558565b612cb2565b34801561101a57600080fd5b506106a9611029366004614f45565b612cbd565b34801561103a57600080fd5b50610692611049366004614f45565b612d57565b34801561105a57600080fd5b50610692611069366004615586565b612d64565b34801561107a57600080fd5b5061108e611089366004614f45565b612ec3565b60408051941515855260208501939093529183015215156060820152608001610639565b3480156110be57600080fd5b5061062d6110cd366004614f45565b612f4e565b3480156110de57600080fd5b506106a9612f64565b3480156110f357600080fd5b506106a9611102366004614f45565b612f71565b34801561111357600080fd5b50610776601d5481565b34801561112957600080fd5b50610776611138366004614f45565b60226020526000908152604090205481565b34801561115657600080fd5b5061077660205481565b34801561116c57600080fd5b5061069261117b366004615269565b613025565b34801561118c57600080fd5b5061077661304a565b3480156111a157600080fd5b506106926111b0366004615606565b613061565b3480156111c157600080fd5b506111d56111d0366004614f45565b613088565b6040516106399392919061564b565b3480156111f057600080fd5b5061077660155481565b610692611208366004615027565b613176565b34801561121957600080fd5b5061077660175481565b610692611231366004615027565b61337a565b34801561124257600080fd5b5061062d611251366004615675565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561128b57600080fd5b5061069261129a366004614f73565b613589565b3480156112ab57600080fd5b506106926112ba366004614f45565b6135ff565b3480156112cb57600080fd5b5061077660295481565b60006112e08261360c565b806112ef57506112ef8261365c565b92915050565b6112fd613681565b6001600160a01b0381166113245760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b606060008054611355906156a3565b80601f0160208091040260200160405190810160405280929190818152602001828054611381906156a3565b80156113ce5780601f106113a3576101008083540402835291602001916113ce565b820191906000526020600020905b8154815290600101906020018083116113b157829003601f168201915b5050505050905090565b60006113e3826136db565b506000908152600460205260409020546001600160a01b031690565b611407613681565b80600681111561141957611419615414565b600b805460ff60a01b1916600160a01b83600681111561143b5761143b615414565b0217905550600b54600160a01b900460ff16600681111561145e5761145e615414565b6040517f92a17b827ee9d42ea9454bb4ca941a1800870e6d01c0842d09ba23ccc0190ee190600090a250565b600061149582612657565b9050806001600160a01b0316836001600160a01b0316036115075760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061152357506115238133611251565b6115955760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016114fe565b61159f838361373f565b505050565b60043332146115c657604051637aafae9760e01b815260040160405180910390fd5b8060068111156115d8576115d8615414565b600b54600160a01b900460ff1660068111156115f6576115f6615414565b1461161457604051633482502f60e01b815260040160405180910390fd5b601554600003611637576040516327d9031160e11b815260040160405180910390fd5b6001821080611647575060105482115b156116655760405163744f82e360e01b815260040160405180910390fd5b6116c284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260068152655075626c696360d01b602082015291506137ad9050565b6116df57604051638baa579f60e01b815260040160405180910390fd5b6116e761304a565b6011546116f59060016156f3565b1115611714576040516352df9fe560e01b815260040160405180910390fd5b6015543414611736576040516399b5cb1d60e01b815260040160405180910390fd5b601854336000908152600f602052604090205410611767576040516313f9b25d60e21b815260040160405180910390fd5b336000818152600c6020908152604080832080546001818101835591855283852001879055938352600f909152812080549091906117a69084906156f3565b909155506117b69050338361384e565b601180549060006117c68361570b565b9091555082905060045b60405134815233907fba4ff9d44bbafa5bd145a99f6e3381a0f9da59c4b68dc8621e54c3d7032f07b49060200160405180910390a450505050565b611813613681565b805161182690601c906020840190614e3f565b5050565b611832613681565b601955565b6000611841613681565b6000601c8054611850906156a3565b905011611870576040516342f1e79360e01b815260040160405180910390fd5b601d5415611891576040516393a79bd960e01b815260040160405180910390fd5b602a546118bf9063ffffffff8082169161ffff640100000000820416916601000000000000909104166139e7565b604080516060810191829052602a546310c1b4d560e21b90925263ffffffff9091166064820152909150807f0000000000000000000000005a861794b927983406fce1d062e00b9368d97df66001600160a01b0316634306d35460848301602060405180830381865afa15801561193a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195e9190615724565b815260006020808301829052604080518381528083018252938101939093528482526027815290829020835181558382015160018201805460ff19169115159190911790559183015180516119b99260028501920190614ec3565b5050602880546001810182556000919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501829055506029819055602a5460408051838152660100000000000090920463ffffffff1660208301527fcc58b13ad3eab50626c6a6300b1d139cd6ebb1688a7cced9461c2f7e762665ee910160405180910390a190565b336001600160a01b037f0000000000000000000000005a861794b927983406fce1d062e00b9368d97df61614611abc5760405162461bcd60e51b815260206004820152601f60248201527f6f6e6c792056524620563220777261707065722063616e2066756c66696c6c0060448201526064016114fe565b6118268282613bc8565b611ace613681565b60009182526025602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b826daaeb6d7670e522a718067333cd4e3b15611c4757336001600160a01b03821603611b3257611b2d848484613cc8565b611c52565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba5919061573d565b8015611c285750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c28919061573d565b611c4757604051633b79c77360e21b81523360048201526024016114fe565b611c52848484613cc8565b50505050565b611c60613681565b602a80546001600160a01b03909216600160501b027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909216919091179055565b60008281526007602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291611d165750604080518082019091526006546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090611d35906001600160601b03168761575a565b611d3f919061578f565b91519350909150505b9250929050565b611d57613681565b60008281526022602052604090205415611d84576040516347c7b8b560e11b815260040160405180910390fd5b60008111611da55760405163648a146160e01b815260040160405180910390fd5b602054611db39060016156f3565b8214611dd25760405163269a18e560e01b815260040160405180910390fd5b60008281526022602090815260409091209190915555565b600082815260096020526040902060010154611e0581613d3f565b61159f8383613d49565b6001600160a01b0381163314611e8d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016114fe565b6118268282613deb565b611e9f613681565b602b546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611eec576040519150601f19603f3d011682016040523d82523d6000602084013e611ef1565b606091505b5050905080611f13576040516312171d8360e31b815260040160405180910390fd5b50565b826daaeb6d7670e522a718067333cd4e3b1561205c57336001600160a01b03821603611f4757611b2d848484613e6e565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fba919061573d565b801561203d5750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015612019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203d919061573d565b61205c57604051633b79c77360e21b81523360048201526024016114fe565b611c52848484613e6e565b61206f613681565b602b546001600160a01b03166120985760405163d92e233d60e01b815260040160405180910390fd5b602b54611f13906001600160a01b031682613e89565b60023332146120d057604051637aafae9760e01b815260040160405180910390fd5b8060068111156120e2576120e2615414565b600b54600160a01b900460ff16600681111561210057612100615414565b1461211e57604051633482502f60e01b815260040160405180910390fd5b600182108061212e575060105482115b1561214c5760405163744f82e360e01b815260040160405180910390fd5b6121ac84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526009815268109d59191e531a5cdd60ba1b602082015291506137ad9050565b6121c957604051638baa579f60e01b815260040160405180910390fd5b6121d161304a565b6011546121df9060016156f3565b11156121fe576040516352df9fe560e01b815260040160405180910390fd5b6013543414612220576040516399b5cb1d60e01b815260040160405180910390fd5b601654336000908152600d602052604090205410612251576040516313f9b25d60e21b815260040160405180910390fd5b336000818152600c6020908152604080832080546001818101835591855283852001879055938352600d909152812080549091906122909084906156f3565b909155506122a09050338361384e565b601180549060006122b08361570b565b9091555082905060026117d0565b6122c6613681565b600082116122e757604051638f65cf4160e01b815260040160405180910390fd5b60205482111561230a5760405163f4cb421f60e01b815260040160405180910390fd5b600091825260236020526040909120805460ff1916911515919091179055565b612332613681565b6000828152602560205260409020546001600160a01b031661236757604051631a5a25d360e11b815260040160405180910390fd5b600091825260266020526040909120805460ff1916911515919091179055565b8060005b81811015611c525760006123b68585848181106123aa576123aa6157a3565b9050602002013561294f565b6123c19060016156f3565b905060205481116123ee576123ee8585848181106123e1576123e16157a3565b9050602002013582613f86565b50806123f98161570b565b91505061238b565b612409613681565b600633321461242b57604051637aafae9760e01b815260040160405180910390fd5b80600681111561243d5761243d615414565b600b54600160a01b900460ff16600681111561245b5761245b615414565b1461247957604051633482502f60e01b815260040160405180910390fd5b601054835160115461248b91906156f3565b11156124aa57604051631279e56160e11b815260040160405180910390fd5b60005b8351811015611c52576124d9838583815181106124cc576124cc6157a3565b602002602001015161384e565b601180549060006124e98361570b565b919050555080806124f99061570b565b9150506124ad565b612509613681565b6001600160a01b0381166125305760405163d92e233d60e01b815260040160405180910390fd5b602b80546001600160a01b0319166001600160a01b0392909216919091179055565b61255a613681565b601555565b7f2486b27fa81d5092a513ddb984a65deb0df3f677fc467c072b096791a56773dc61258981613d3f565b60008281526021602052604081205490036125b75760405163290da5e160e01b815260040160405180910390fd5b6125c082612f4e565b156125f0576000828152601f60205260409020546125df8160016156f3565b6000848152601f6020526040902055505b6000828152602160205260408082208290555183917f687f2bdd19dccc556cb5455661050c9b9c1d8e5ea08012290cbeb69da4ec28a891a260405182907f3b834a47ba67ef104aea456265866673a3f6b0a58e7201148d17a57a991892e890600090a25050565b6000818152600260205260408120546001600160a01b0316806112ef5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016114fe565b6126c4613681565b6126cc6140c1565b60053332146126ee57604051637aafae9760e01b815260040160405180910390fd5b80600681111561270057612700615414565b600b54600160a01b900460ff16600681111561271e5761271e615414565b1461273c57604051633482502f60e01b815260040160405180910390fd5b815183511461275e5760405163b3fd7b3b60e01b815260040160405180910390fd5b60005b835181101561281657600084828151811061277e5761277e6157a3565b60200260200101519050600084838151811061279c5761279c6157a3565b602002602001015190506001600d6000846001600160a01b03166001600160a01b0316815260200190815260200160002060008282546127dc91906156f3565b909155506127ec9050828261384e565b601180549060006127fc8361570b565b91905055505050808061280e9061570b565b915050612761565b50506118266001600855565b6001600160a01b0381166000908152600c602090815260409182902080548351818402810184019094528084526060939283018282801561288257602002820191906000526020600020905b81548152602001906001019080831161286e575b50505050509050919050565b612896613681565b601855565b60006001600160a01b0382166129055760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016114fe565b506001600160a01b031660009081526003602052604090205490565b612929613681565b612933600061411a565b565b61293d613681565b601255565b61294a613681565b601755565b6000818152601f602052604081205461296783612f4e565b156112ef576129776001826156f3565b9392505050565b3361298882612657565b6001600160a01b0316146129af576040516330cd747160e01b815260040160405180910390fd5b816129b98261294f565b10156129d85760405163d1cb832f60e01b815260040160405180910390fd5b60008181526024602052604090205460ff1615612a0857604051632cfe303760e21b815260040160405180910390fd5b6000828152602560205260409020546001600160a01b0316612a3d57604051631a5a25d360e11b815260040160405180910390fd5b6000818152602460208181526040808420805460ff19166001179055858452602590915291829020549151634d24848760e11b81523360048201529081018390526001600160a01b03909116908190639a49090e90349060440160206040518083038185885af1158015612ab5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c529190615724565b60288181548110612aea57600080fd5b600091825260209091200154905081565b612b03613681565b602a546040516370a0823160e01b8152306004820152600160501b9091046001600160a01b031690819063a9059cbb90339083906370a0823190602401602060405180830381865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b819190615724565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf0919061573d565b611f135760405162461bcd60e51b815260206004820152601260248201527f556e61626c6520746f207472616e73666572000000000000000000000000000060448201526064016114fe565b606060018054611355906156a3565b8060005b81811015611c5257612c78848483818110612c6c57612c6c6157a3565b9050602002013561416c565b80612c828161570b565b915050612c4f565b612c92613681565b601655565b612c9f613681565b805161182690601b906020840190614e3f565b61182633838361428b565b601a6020526000908152604090208054612cd6906156a3565b80601f0160208091040260200160405190810160405280929190818152602001828054612d02906156a3565b8015612d4f5780601f10612d2457610100808354040283529160200191612d4f565b820191906000526020600020905b815481529060010190602001808311612d3257829003601f168201915b505050505081565b612d5f613681565b601055565b836daaeb6d7670e522a718067333cd4e3b15612eb057336001600160a01b03821603612d9b57612d9685858585614359565b612ebc565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e919061573d565b8015612e915750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015612e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e91919061573d565b612eb057604051633b79c77360e21b81523360048201526024016114fe565b612ebc85858585614359565b5050505050565b6000818152602160205260408120548190819081908015612eef5760019450612eec81426157b9565b93505b6000868152601f60205260408120549350602281612f0e8660016156f3565b8152602001908152602001600020549050600081118015612f3b5750612f37816201518061575a565b8510155b15612f4557600192505b50509193509193565b600080612f5a83612ec3565b9695505050505050565b601c8054612cd6906156a3565b6000818152600260205260409020546060906001600160a01b0316612fd85760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20646f65736e27742065786973742100000000000000000000000060448201526064016114fe565b6000612fe38361294f565b6000818152601a60205260409020909150612ffd846143d1565b60405160200161300e9291906157ec565b604051602081830303815290604052915050919050565b60008281526009602052604090206001015461304081613d3f565b61159f8383613deb565b600060195460105461305c91906157b9565b905090565b613069613681565b6000818152601a60209081526040909120835161159f92850190614e3f565b60008181526027602052604081205481906060906130dc5760405162461bcd60e51b81526020600482015260116024820152701c995c5d595cdd081b9bdd08199bdd5b99607a1b60448201526064016114fe565b6000848152602760209081526040808320815160608101835281548152600182015460ff1615158185015260028201805484518187028101870186528181529295939486019383018282801561315157602002820191906000526020600020905b81548152602001906001019080831161313d575b5050509190925250508151602083015160409093015190989297509550909350505050565b600133321461319857604051637aafae9760e01b815260040160405180910390fd5b8060068111156131aa576131aa615414565b600b54600160a01b900460ff1660068111156131c8576131c8615414565b146131e657604051633482502f60e01b815260040160405180910390fd5b60018210806131f6575060105482115b156132145760405163744f82e360e01b815260040160405180910390fd5b61326e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600381526205649560ec1b602082015291506137ad9050565b61328b57604051638baa579f60e01b815260040160405180910390fd5b60125460115461329c9060016156f3565b11156132bb5760405163664dad0f60e11b815260040160405180910390fd5b60135434146132dd576040516399b5cb1d60e01b815260040160405180910390fd5b336000908152600d602052604090205460011161330d576040516313f9b25d60e21b815260040160405180910390fd5b336000818152600c6020908152604080832080546001818101835591855283852001879055938352600d9091528120805490919061334c9084906156f3565b9091555061335c9050338361384e565b6011805490600061336c8361570b565b9091555082905060016117d0565b600333321461339c57604051637aafae9760e01b815260040160405180910390fd5b8060068111156133ae576133ae615414565b600b54600160a01b900460ff1660068111156133cc576133cc615414565b146133ea57604051633482502f60e01b815260040160405180910390fd5b60018210806133fa575060105482115b156134185760405163744f82e360e01b815260040160405180910390fd5b61347784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600881526715d85a5d131a5cdd60c21b602082015291506137ad9050565b61349457604051638baa579f60e01b815260040160405180910390fd5b61349c61304a565b6011546134aa9060016156f3565b11156134c9576040516352df9fe560e01b815260040160405180910390fd5b60145434146134eb576040516399b5cb1d60e01b815260040160405180910390fd5b601754336000908152600e60205260409020541061351c576040516313f9b25d60e21b815260040160405180910390fd5b336000818152600c6020908152604080832080546001818101835591855283852001879055938352600e9091528120805490919061355b9084906156f3565b9091555061356b9050338361384e565b6011805490600061357b8361570b565b9091555082905060036117d0565b613591613681565b6001600160a01b0381166135f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016114fe565b611f138161411a565b613607613681565b601355565b60006001600160e01b031982166380ac58cd60e01b148061363d57506001600160e01b03198216635b5e139f60e01b145b806112ef57506301ffc9a760e01b6001600160e01b03198316146112ef565b60006001600160e01b0319821663152a902d60e11b14806112ef57506112ef8261360c565b600a546001600160a01b031633146129335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016114fe565b6000818152600260205260409020546001600160a01b0316611f135760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016114fe565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061377482612657565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006138368333846040516020016137c6929190615889565b6040516020818303038152906040526137de906158bc565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c810191909152605c016040516020818303038152906040528051906020012061446490919063ffffffff16565b600b546001600160a01b039182169116149392505050565b6001600160a01b0382166138a45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016114fe565b6000818152600260205260409020546001600160a01b0316156139095760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016114fe565b613917600083836001614488565b6000818152600260205260409020546001600160a01b03161561397c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016114fe565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040516310c1b4d560e21b815263ffffffff841660048201526000906001600160a01b037f000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca811691634000aea0917f0000000000000000000000005a861794b927983406fce1d062e00b9368d97df69190821690634306d35490602401602060405180830381865afa158015613a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa59190615724565b6040805163ffffffff808b16602083015261ffff8a169282019290925290871660608201526080016040516020818303038152906040526040518463ffffffff1660e01b8152600401613afa939291906158e0565b6020604051808303816000875af1158015613b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3d919061573d565b507f0000000000000000000000005a861794b927983406fce1d062e00b9368d97df66001600160a01b031663fc2a88c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bc09190615724565b949350505050565b600082815260276020526040902054613c175760405162461bcd60e51b81526020600482015260116024820152701c995c5d595cdd081b9bdd08199bdd5b99607a1b60448201526064016114fe565b60008281526027602052604081206001908101805460ff19169091179055601054825190918391613c4a57613c4a6157a3565b6020026020010151613c5c9190615908565b601d819055600003613c7a57601d54613c769060016156f3565b601d555b600082815260276020526040908190205490517f147eb1ff0c82f87f2b03e2c43f5a36488ff63ec6b730195fde4605f612f8db5191613cbc918591859161591c565b60405180910390a15050565b613cd233826144b5565b613d345760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016114fe565b61159f838383614533565b611f138133614720565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff166118265760008281526009602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613da73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16156118265760008281526009602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61159f83838360405180602001604052806000815250612d64565b6127106001600160601b0382161115613ef75760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016114fe565b6001600160a01b038216613f4d5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016114fe565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b8133613f9182612657565b6001600160a01b03161480613fb6575033613fab826113d8565b6001600160a01b0316145b6140025760405162461bcd60e51b815260206004820152601e60248201527f4552433732313a204e6f7420617070726f766564206e6f72206f776e6572000060448201526064016114fe565b60008281526023602052604090205460ff1661403157604051630f65b44560e01b815260040160405180910390fd5b6000838152602160205260409020541561405e576040516365a2f84360e11b815260040160405180910390fd5b6020548211156140815760405163f4cb421f60e01b815260040160405180910390fd5b60008381526021602052604080822042905551839185917f1595e8771273259bf12e7d81d3e7b998f01eeaca6cd0172b56d01cd966177ab69190a3505050565b6002600854036141135760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016114fe565b6002600855565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b803361417782612657565b6001600160a01b0316148061419c575033614191826113d8565b6001600160a01b0316145b6141e85760405162461bcd60e51b815260206004820152601e60248201527f4552433732313a204e6f7420617070726f766564206e6f72206f776e6572000060448201526064016114fe565b60008281526021602052604081205490036142165760405163290da5e160e01b815260040160405180910390fd5b61421f82612f4e565b1561424f576000828152601f602052604090205461423e8160016156f3565b6000848152601f6020526040902055505b6000828152602160205260408082208290555183917f687f2bdd19dccc556cb5455661050c9b9c1d8e5ea08012290cbeb69da4ec28a891a25050565b816001600160a01b0316836001600160a01b0316036142ec5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016114fe565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61436333836144b5565b6143c55760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016114fe565b611c5284848484614795565b606060006143de83614813565b600101905060008167ffffffffffffffff8111156143fe576143fe61509f565b6040519080825280601f01601f191660200182016040528015614428576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461443257509392505050565b600080600061447385856148f5565b9150915061448081614937565b509392505050565b60008281526021602052604090205415611c52576040516365a2f84360e11b815260040160405180910390fd5b6000806144c183612657565b9050806001600160a01b0316846001600160a01b0316148061450857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80613bc05750836001600160a01b0316614521846113d8565b6001600160a01b031614949350505050565b826001600160a01b031661454682612657565b6001600160a01b0316146145aa5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016114fe565b6001600160a01b03821661460c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016114fe565b6146198383836001614488565b826001600160a01b031661462c82612657565b6001600160a01b0316146146905760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016114fe565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff166118265761475381614a81565b61475e836020614a93565b60405160200161476f929190615945565b60408051601f198184030181529082905262461bcd60e51b82526114fe91600401614fe8565b6147a0848484614533565b6147ac84848484614c2f565b611c525760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016114fe565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061485c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310614888576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106148a657662386f26fc10000830492506010015b6305f5e10083106148be576305f5e100830492506008015b61271083106148d257612710830492506004015b606483106148e4576064830492506002015b600a83106112ef5760010192915050565b600080825160410361492b5760208301516040840151606085015160001a61491f87828585614d7b565b94509450505050611d48565b50600090506002611d48565b600081600481111561494b5761494b615414565b036149535750565b600181600481111561496757614967615414565b036149b45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016114fe565b60028160048111156149c8576149c8615414565b03614a155760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016114fe565b6003816004811115614a2957614a29615414565b03611f135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016114fe565b60606112ef6001600160a01b03831660145b60606000614aa283600261575a565b614aad9060026156f3565b67ffffffffffffffff811115614ac557614ac561509f565b6040519080825280601f01601f191660200182016040528015614aef576020820181803683370190505b509050600360fc1b81600081518110614b0a57614b0a6157a3565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614b3957614b396157a3565b60200101906001600160f81b031916908160001a9053506000614b5d84600261575a565b614b689060016156f3565b90505b6001811115614be0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614b9c57614b9c6157a3565b1a60f81b828281518110614bb257614bb26157a3565b60200101906001600160f81b031916908160001a90535060049490941c93614bd9816159c6565b9050614b6b565b5083156129775760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016114fe565b60006001600160a01b0384163b15614d7057604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614c739033908990889088906004016159dd565b6020604051808303816000875af1925050508015614cae575060408051601f3d908101601f19168201909252614cab91810190615a0f565b60015b614d56573d808015614cdc576040519150601f19603f3d011682016040523d82523d6000602084013e614ce1565b606091505b508051600003614d4e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016114fe565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613bc0565b506001949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614db25750600090506003614e36565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614e06573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614e2f57600060019250925050614e36565b9150600090505b94509492505050565b828054614e4b906156a3565b90600052602060002090601f016020900481019282614e6d5760008555614eb3565b82601f10614e8657805160ff1916838001178555614eb3565b82800160010185558215614eb3579182015b82811115614eb3578251825591602001919060010190614e98565b50614ebf929150614efd565b5090565b828054828255906000526020600020908101928215614eb35791602002820182811115614eb3578251825591602001919060010190614e98565b5b80821115614ebf5760008155600101614efe565b6001600160e01b031981168114611f1357600080fd5b600060208284031215614f3a57600080fd5b813561297781614f12565b600060208284031215614f5757600080fd5b5035919050565b6001600160a01b0381168114611f1357600080fd5b600060208284031215614f8557600080fd5b813561297781614f5e565b60005b83811015614fab578181015183820152602001614f93565b83811115611c525750506000910152565b60008151808452614fd4816020860160208601614f90565b601f01601f19169290920160200192915050565b6020815260006129776020830184614fbc565b6000806040838503121561500e57600080fd5b823561501981614f5e565b946020939093013593505050565b60008060006040848603121561503c57600080fd5b833567ffffffffffffffff8082111561505457600080fd5b818601915086601f83011261506857600080fd5b81358181111561507757600080fd5b87602082850101111561508957600080fd5b6020928301989097509590910135949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156150de576150de61509f565b604052919050565b600067ffffffffffffffff8311156151005761510061509f565b615113601f8401601f19166020016150b5565b905082815283838301111561512757600080fd5b828260208301376000602084830101529392505050565b600082601f83011261514f57600080fd5b612977838335602085016150e6565b60006020828403121561517057600080fd5b813567ffffffffffffffff81111561518757600080fd5b613bc08482850161513e565b600067ffffffffffffffff8211156151ad576151ad61509f565b5060051b60200190565b600082601f8301126151c857600080fd5b813560206151dd6151d883615193565b6150b5565b82815260059290921b840181019181810190868411156151fc57600080fd5b8286015b848110156152175780358352918301918301615200565b509695505050505050565b6000806040838503121561523557600080fd5b82359150602083013567ffffffffffffffff81111561525357600080fd5b61525f858286016151b7565b9150509250929050565b6000806040838503121561527c57600080fd5b82359150602083013561528e81614f5e565b809150509250929050565b6000806000606084860312156152ae57600080fd5b83356152b981614f5e565b925060208401356152c981614f5e565b929592945050506040919091013590565b600080604083850312156152ed57600080fd5b50508035926020909101359150565b60006020828403121561530e57600080fd5b81356001600160601b038116811461297757600080fd5b8015158114611f1357600080fd5b6000806040838503121561534657600080fd5b82359150602083013561528e81615325565b6000806020838503121561536b57600080fd5b823567ffffffffffffffff8082111561538357600080fd5b818501915085601f83011261539757600080fd5b8135818111156153a657600080fd5b8660208260051b85010111156153bb57600080fd5b60209290920196919550909350505050565b600080604083850312156153e057600080fd5b823567ffffffffffffffff8111156153f757600080fd5b615403858286016151b7565b925050602083013561528e81614f5e565b634e487b7160e01b600052602160045260246000fd5b602081016007831061544c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561546557600080fd5b823567ffffffffffffffff8082111561547d57600080fd5b818501915085601f83011261549157600080fd5b813560206154a16151d883615193565b82815260059290921b840181019181810190898411156154c057600080fd5b948201945b838610156154e75785356154d881614f5e565b825294820194908201906154c5565b965050860135925050808211156154fd57600080fd5b5061525f858286016151b7565b600081518084526020808501945080840160005b8381101561553a5781518752958201959082019060010161551e565b509495945050505050565b602081526000612977602083018461550a565b6000806040838503121561556b57600080fd5b823561557681614f5e565b9150602083013561528e81615325565b6000806000806080858703121561559c57600080fd5b84356155a781614f5e565b935060208501356155b781614f5e565b925060408501359150606085013567ffffffffffffffff8111156155da57600080fd5b8501601f810187136155eb57600080fd5b6155fa878235602084016150e6565b91505092959194509250565b6000806040838503121561561957600080fd5b823567ffffffffffffffff81111561563057600080fd5b61563c8582860161513e565b95602094909401359450505050565b838152821515602082015260606040820152600061566c606083018461550a565b95945050505050565b6000806040838503121561568857600080fd5b823561569381614f5e565b9150602083013561528e81614f5e565b600181811c908216806156b757607f821691505b6020821081036156d757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115615706576157066156dd565b500190565b60006001820161571d5761571d6156dd565b5060010190565b60006020828403121561573657600080fd5b5051919050565b60006020828403121561574f57600080fd5b815161297781615325565b6000816000190483118215151615615774576157746156dd565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261579e5761579e615779565b500490565b634e487b7160e01b600052603260045260246000fd5b6000828210156157cb576157cb6156dd565b500390565b600081516157e2818560208601614f90565b9290920192915050565b600080845481600182811c91508083168061580857607f831692505b6020808410820361582757634e487b7160e01b86526022600452602486fd5b81801561583b576001811461584c57615879565b60ff19861689528489019650615879565b60008b81526020902060005b868110156158715781548b820152908501908301615858565b505084890196505b50505050505061566c81856157d0565b6001600160601b03198360601b168152600082516158ae816014850160208701614f90565b919091016014019392505050565b805160208083015191908110156156d75760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600061566c6060830184614fbc565b60008261591757615917615779565b500690565b838152606060208201526000615935606083018561550a565b9050826040830152949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161597d816017850160208801614f90565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516159ba816028840160208801614f90565b01602801949350505050565b6000816159d5576159d56156dd565b506000190190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612f5a6080830184614fbc565b600060208284031215615a2157600080fd5b815161297781614f1256fea26469706673582212206d68727eb3b3ccf8945c530d870e49d9a3330d4048a61729221dfd8c56d1fa1964736f6c634300080d0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000012367227acba32e16febb990a7a35e61c08664d50000000000000000000000004fb7c9c32017c49cf598a6f9ade7038ef5f6d8dd000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000005a861794b927983406fce1d062e00b9368d97df6000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001e

-----Decoded View---------------
Arg [0] : signer_ (address): 0x12367227aCBa32e16FEbb990A7A35E61C08664d5
Arg [1] : origamasksAddress_ (address): 0x4FB7C9C32017c49Cf598a6f9aDe7038EF5F6D8dd
Arg [2] : linkAddress_ (address): 0x514910771AF9Ca656af840dff83E8264EcF986CA
Arg [3] : wrapperAddress_ (address): 0x5A861794B927983406fCE1D062e00b9368d97Df6
Arg [4] : vipSupply_ (uint256): 50
Arg [5] : minimumReserved_ (uint256): 200
Arg [6] : initialMaxLevel_ (uint256): 1
Arg [7] : initialDaysToLevelUp_ (uint256): 30

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 00000000000000000000000012367227acba32e16febb990a7a35e61c08664d5
Arg [1] : 0000000000000000000000004fb7c9c32017c49cf598a6f9ade7038ef5f6d8dd
Arg [2] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Arg [3] : 0000000000000000000000005a861794b927983406fce1d062e00b9368d97df6
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [5] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 000000000000000000000000000000000000000000000000000000000000001e


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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