{
  "_format": "hh-sol-artifact-1",
  "contractName": "AdventureERC721CWithImmutableMinterRoyalties",
  "sourceName": "contracts/examples/adventure-erc721c/AdventureERC721CWithImmutableMinterRoyalties.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "royaltyFeeNumerator_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxSimultaneousQuests_",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__AdventureApprovalToCaller",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__AlreadyOnQuest",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__AnActiveQuestIsPreventingTransfers",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__CallerNotApprovedForAdventure",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__CallerNotTokenOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__MaxSimultaneousQuestsCannotBeZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__MaxSimultaneousQuestsExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__NotOnQuest",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__QuestIdOutOfRange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__TooManyActiveQuests",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__AdventureIsStillWhitelisted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__AlreadyWhitelisted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__ArrayIndexOverflowsUint128",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__CallerNotAWhitelistedAdventure",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__InvalidAdventureContract",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__NotWhitelisted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CreatorTokenBase__InvalidTransferValidatorContract",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CreatorTokenBase__SetTransferValidatorFirst",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ImmutableMinterRoyalties__MinterCannotBeZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ImmutableMinterRoyalties__MinterHasAlreadyBeenAssignedToTokenId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ImmutableMinterRoyalties__RoyaltyFeeWillExceedSalePrice",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ShouldNotMintToBurnAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "AdventureApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "whitelisted",
          "type": "bool"
        }
      ],
      "name": "AdventureWhitelistUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "booted",
          "type": "bool"
        }
      ],
      "name": "QuestUpdated",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldValidator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newValidator",
          "type": "address"
        }
      ],
      "name": "TransferValidatorUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_OPERATOR_WHITELIST_ID",
      "outputs": [
        {
          "internalType": "uint120",
          "name": "",
          "type": "uint120"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_TRANSFER_SECURITY_LEVEL",
      "outputs": [
        {
          "internalType": "enum TransferSecurityLevels",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_TRANSFER_VALIDATOR",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FEE_DENOMINATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "activeQuestList",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "activeQuestLookup",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isActive",
          "type": "bool"
        },
        {
          "internalType": "uint32",
          "name": "questId",
          "type": "uint32"
        },
        {
          "internalType": "uint64",
          "name": "startTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "uint32",
          "name": "arrayIndex",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "adventureBurn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "adventureSafeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "adventureTransferFrom",
      "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"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "areAdventuresApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "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": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "bootFromAllQuests",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "enterQuest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "exitQuest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "getActiveQuests",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "isActive",
              "type": "bool"
            },
            {
              "internalType": "uint32",
              "name": "questId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "startTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "arrayIndex",
              "type": "uint32"
            }
          ],
          "internalType": "struct Quest[]",
          "name": "activeQuests",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPermittedContractReceivers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "getQuestCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSecurityPolicy",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum TransferSecurityLevels",
              "name": "transferSecurityLevel",
              "type": "uint8"
            },
            {
              "internalType": "uint120",
              "name": "operatorWhitelistId",
              "type": "uint120"
            },
            {
              "internalType": "uint120",
              "name": "permittedContractReceiversId",
              "type": "uint120"
            }
          ],
          "internalType": "struct CollectionSecurityPolicy",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "getTimeOnQuest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTransferValidator",
      "outputs": [
        {
          "internalType": "contract ICreatorTokenTransferValidator",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getWhitelistedOperators",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isAdventureWhitelisted",
      "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": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "isContractReceiverPermitted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isOperatorWhitelisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "isParticipatingInQuest",
      "outputs": [
        {
          "internalType": "bool",
          "name": "participatingInQuest",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "startTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "isTransferAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxSimultaneousQuests",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "royaltyFeeNumerator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "salePrice",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "royaltyAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setAdventuresApprovedForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum TransferSecurityLevels",
          "name": "level",
          "type": "uint8"
        },
        {
          "internalType": "uint120",
          "name": "operatorWhitelistId",
          "type": "uint120"
        },
        {
          "internalType": "uint120",
          "name": "permittedContractReceiversAllowlistId",
          "type": "uint120"
        }
      ],
      "name": "setToCustomSecurityPolicy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "validator",
          "type": "address"
        },
        {
          "internalType": "enum TransferSecurityLevels",
          "name": "level",
          "type": "uint8"
        },
        {
          "internalType": "uint120",
          "name": "operatorWhitelistId",
          "type": "uint120"
        },
        {
          "internalType": "uint120",
          "name": "permittedContractReceiversAllowlistId",
          "type": "uint120"
        }
      ],
      "name": "setToCustomValidatorAndSecurityPolicy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setToDefaultSecurityPolicy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "transferValidator_",
          "type": "address"
        }
      ],
      "name": "setTransferValidator",
      "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": [
        {
          "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": [
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "unwhitelistAdventure",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "userExitAllQuests",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "userExitQuest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "whitelistAdventure",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "whitelistedAdventureList",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "whitelistedAdventures",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isWhitelisted",
          "type": "bool"
        },
        {
          "internalType": "uint128",
          "name": "arrayIndex",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b5060405162004c7438038062004c74833981016040819052620000349162000356565b838383836040518060200160405280600081525060405180602001604052806000815250620000726200006c620000dc60201b60201c565b620000e0565b815162000087906009906020850190620001e3565b5080516200009d90600a906020840190620001e3565b505050620000b282826200013060201b60201c565b50620000c090508162000160565b608052620000ce8162000175565b60a052506200041192505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81516200014590600f906020850190620001e3565b5080516200015b906010906020840190620001e3565b505050565b6200016b816200019e565b6003556001600455565b6127108111156200019957604051634ca36f5f60e11b815260040160405180910390fd5b601255565b80620001bd5760405163ed21f5e560e01b815260040160405180910390fd5b6064811115620001e05760405163dbb0ece360e01b815260040160405180910390fd5b50565b828054620001f190620003d4565b90600052602060002090601f01602090048101928262000215576000855562000260565b82601f106200023057805160ff191683800117855562000260565b8280016001018555821562000260579182015b828111156200026057825182559160200191906001019062000243565b506200026e92915062000272565b5090565b5b808211156200026e576000815560010162000273565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002b157600080fd5b81516001600160401b0380821115620002ce57620002ce62000289565b604051601f8301601f19908116603f01168101908282118183101715620002f957620002f962000289565b816040528381526020925086838588010111156200031657600080fd5b600091505b838210156200033a57858201830151818301840152908201906200031b565b838211156200034c5760008385830101525b9695505050505050565b600080600080608085870312156200036d57600080fd5b84516020860151604087015191955093506001600160401b03808211156200039457600080fd5b620003a2888389016200029f565b93506060870151915080821115620003b957600080fd5b50620003c8878288016200029f565b91505092959194509250565b600181811c90821680620003e957607f821691505b602082108114156200040b57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161482f620004456000396000818161078501526111ce0152600081816107ab01526130aa015261482f6000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c806370a08231116101de578063a9fc664e1161010f578063d007af5c116100ad578063e985e9c51161007c578063e985e9c514610979578063f1e923c5146109b5578063f2fde38b146109c8578063fd762d92146109db57600080fd5b8063d007af5c14610942578063d73792a91461094a578063e2989f4c14610953578063e370ab461461096657600080fd5b8063b88d4fde116100e9578063b88d4fde146108f4578063be537f4314610907578063c05e2f441461091c578063c87b56dd1461092f57600080fd5b8063a9fc664e1461086a578063aa6cab5a1461087d578063aca139f7146108e157600080fd5b80638da5cb5b1161017c5780639bc17ea4116101565780639bc17ea41461081e5780639d645a4414610831578063a144819414610844578063a22cb4651461085757600080fd5b80638da5cb5b146107cf57806391623718146107e057806395d89b411461081657600080fd5b80637f1a5ce1116101b85780637f1a5ce114610734578063816a15011461077057806381ddcc1f14610783578063869f9110146107a957600080fd5b806370a08231146106f8578063715018a6146107195780637e10b35b1461072157600080fd5b80632e8da829116102c35780634e02c078116102615780636134716211610230578063613471621461069a5780636352211e146106ad5780636c3b8699146106c0578063703fa929146106c857600080fd5b80634e02c0781461062457806351dadc281461063757806353401df91461065f5780635d4c1d461461067257600080fd5b806340c10f191161029d57806340c10f19146105d657806342842e0e146105e957806342966c68146105fc578063495c8bf91461060f57600080fd5b80632e8da829146105845780632ebb386a14610597578063301be740146105aa57600080fd5b80630f3d911c116103305780631b25b0771161030a5780631b25b077146105175780631c33b3281461052a57806323b872dd1461053f5780632a55205a1461055257600080fd5b80630f3d911c1461044d578063113405571461046d57806311ad40811461050457600080fd5b8063070cba171161036c578063070cba1714610401578063081812fc14610416578063095ea7b314610429578063098144d41461043c57600080fd5b8063014635461461039357806301ffc9a7146103c957806306fdde03146103ec575b600080fd5b6103ac71721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b6103dc6103d7366004613f45565b6109ee565b60405190151581526020016103c0565b6103f46109ff565b6040516103c09190613fba565b61041461040f366004613fe2565b610a91565b005b6103ac610424366004613fff565b610cf4565b610414610437366004614018565b610d1b565b6011546001600160a01b03166103ac565b61046061045b366004614044565b610e52565b6040516103c09190614074565b6104cd61047b3660046140ed565b600860209081526000938452604080852082529284528284209052825290205460ff81169063ffffffff610100820481169167ffffffffffffffff6501000000000082041691600160681b9091041684565b60408051941515855263ffffffff938416602086015267ffffffffffffffff909216918401919091521660608201526080016103c0565b610414610512366004614138565b61106c565b6103dc61052536600461415a565b61108c565b610532600181565b6040516103c091906141bc565b61041461054d3660046141ca565b611125565b610565610560366004614138565b6111ac565b604080516001600160a01b0390931683526020830191909152016103c0565b6103dc610592366004613fe2565b611208565b6104146105a5366004614044565b61133a565b6103dc6105b8366004613fe2565b6001600160a01b031660009081526002602052604090205460ff1690565b6104146105e4366004614018565b611358565b6104146105f73660046141ca565b611362565b61041461060a366004613fff565b61137d565b610617611389565b6040516103c0919061420b565b610414610632366004614258565b6114c0565b61064a610645366004614258565b6114dd565b60405163ffffffff90911681526020016103c0565b61041461066d366004614138565b611533565b61067a600181565b6040516effffffffffffffffffffffffffffff90911681526020016103c0565b6104146106a83660046142a9565b61154f565b6103ac6106bb366004613fff565b6116f4565b610414611759565b6106db6106d6366004614258565b611851565b6040805193151584526020840192909252908201526060016103c0565b61070b610706366004613fe2565b6118f1565b6040519081526020016103c0565b61041461198b565b61041461072f366004613fe2565b61199f565b6103dc6107423660046142e9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b61070b61077e366004614258565b611bd8565b7f000000000000000000000000000000000000000000000000000000000000000061070b565b7f000000000000000000000000000000000000000000000000000000000000000061070b565b6000546001600160a01b03166103ac565b61070b6107ee366004614044565b60009182526007602090815260408084206001600160a01b0393909316845291905290205490565b6103f4611c0d565b61041461082c366004613fff565b611c1c565b6103dc61083f366004613fe2565b611c43565b610414610852366004614018565b611d22565b610414610865366004614325565b611d2c565b610414610878366004613fe2565b611d37565b6108b961088b366004613fe2565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b6040805192151583526fffffffffffffffffffffffffffffffff9091166020830152016103c0565b6104146108ef3660046141ca565b611e84565b61041461090236600461439a565b611ec2565b61090f611f4a565b6040516103c0919061445e565b61041461092a366004614325565b612014565b6103f461093d366004613fff565b6120c6565b610617612139565b61070b61271081565b6103ac610961366004613fff565b612209565b6104146109743660046141ca565b612233565b6103dc6109873660046142e9565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205460ff1690565b6104146109c3366004614044565b612254565b6104146109d6366004613fe2565b612271565b6104146109e93660046144a2565b6122fe565b60006109f982612422565b92915050565b6060600f8054610a0e906144fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3a906144fe565b8015610a875780601f10610a5c57610100808354040283529160200191610a87565b820191906000526020600020905b815481529060010190602001808311610a6a57829003601f168201915b5050505050905090565b610a99612460565b6001600160a01b03811660009081526002602052604090205460ff16610aeb576040517f385f0cec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600090815260026020526040812054600180546101009092046fffffffffffffffffffffffffffffffff169291610b2c919061454f565b905080826fffffffffffffffffffffffffffffffff1614610c5a5760018181548110610b5a57610b5a614566565b600091825260209091200154600180546001600160a01b03909216916fffffffffffffffffffffffffffffffff8516908110610b9857610b98614566565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600260006001856fffffffffffffffffffffffffffffffff1681548110610bf057610bf0614566565b60009182526020808320909101546001600160a01b03168352820192909252604001902080546fffffffffffffffffffffffffffffffff92909216610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9092169190911790555b6001805480610c6b57610c6b61457c565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352600282526040808420805470ffffffffffffffffffffffffffffffffff1916905551928352917fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a2505050565b6000610cff82612468565b506000908152600d60205260409020546001600160a01b031690565b6000610d26826116f4565b9050806001600160a01b0316836001600160a01b03161415610db55760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b0382161480610dd15750610dd18133610987565b610e435760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610dac565b610e4d83836124cc565b505050565b60008281526007602090815260408083206001600160a01b03851684529091529020546060908067ffffffffffffffff811115610e9157610e91614353565b604051908082528060200260200182016040528015610ee357816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610eaf5790505b5060008581526007602090815260408083206001600160a01b0388168452825280832080548251818502810185019093528083529496509293909291830182828015610f7a57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f3d5790505b5050505050905060005b828110156110635760008681526008602090815260408083206001600160a01b038916845290915281208351909190849084908110610fc557610fc5614566565b60209081029190910181015163ffffffff90811683528282019390935260409182016000208251608081018452905460ff811615158252610100810485169282019290925267ffffffffffffffff6501000000000083041692810192909252600160681b90049091166060820152845185908390811061104757611047614566565b60200260200101819052508061105c90614592565b9050610f84565b50505092915050565b61107461253a565b61107d82612579565b6110888233836125c1565b5050565b6011546000906001600160a01b03161561111a5760115460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b1580156110f557600080fd5b505afa925050508015611106575060015b6111125750600061111e565b50600161111e565b5060015b9392505050565b61112f33826129ec565b6111a15760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610dac565b610e4d838383612a6b565b60008281526013602052604081205481906001600160a01b03166127106111f37f0000000000000000000000000000000000000000000000000000000000000000866145ad565b6111fd91906145cc565b915091509250929050565b6011546000906001600160a01b03161561133257601154604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b95545529060240160606040518083038186803b15801561126757600080fd5b505afa15801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f91906145ee565b602001516040516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526001600160a01b03851660248201526044015b60206040518083038186803b1580156112fa57600080fd5b505afa15801561130e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190614660565b506000919050565b61134381612c79565b61134c82612ccc565b61108882826000612d16565b6110888282613001565b610e4d83838360405180602001604052806000815250611ec2565b61138681613015565b50565b6011546060906001600160a01b0316156114ad57601154604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b95545529060240160606040518083038186803b1580156113e857600080fd5b505afa1580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142091906145ee565b602001516040516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526024015b60006040518083038186803b15801561146c57600080fd5b505afa158015611480573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114a8919081019061467d565b905090565b5060408051600081526020810190915290565b6114c982612c79565b6114d283612ccc565b610e4d8383836125c1565b6007602052826000526040600020602052816000526040600020818154811061150557600080fd5b906000526020600020906008918282040191900660040292509250509054906101000a900463ffffffff1681565b61153b61253a565b61154482612579565b61108882338361303c565b611557612460565b600061156b6011546001600160a01b031690565b90506001600160a01b0381166115ad576040517f39ffc7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c0906115db903090889060040161472f565b600060405180830381600087803b1580156115f557600080fd5b505af1158015611609573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526effffffffffffffffffffffffffffff861660248201526001600160a01b0384169250632304aa029150604401600060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b505060405163235d10c560e21b81523060048201526effffffffffffffffffffffffffffff851660248201526001600160a01b0384169250638d74431491506044015b600060405180830381600087803b1580156116d657600080fd5b505af11580156116ea573d6000803e3d6000fd5b5050505050505050565b6000818152600b60205260408120546001600160a01b0316806109f95760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610dac565b611761612460565b61177c71721c310194ccfc01e523fc93c9cccfa2a0ac611d37565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c0906117b490309060019060040161472f565b600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526001602482015271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa029150604401600060405180830381600087803b15801561183757600080fd5b505af115801561184b573d6000803e3d6000fd5b50505050565b6000808063ffffffff841115611893576040517f0b2530f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505060009283526008602090815260408085206001600160a01b0394909416855292815282842063ffffffff9283168552905291205460ff81169265010000000000820467ffffffffffffffff1692600160681b90920490911690565b60006001600160a01b03821661196f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610dac565b506001600160a01b03166000908152600c602052604090205490565b611993613379565b61199d60006133d3565b565b6119a7612460565b6001600160a01b03811660009081526002602052604090205460ff16156119fa576040517fd8110a5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516301ffc9a760e01b81527f977e0c1c0000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b158015611a5957600080fd5b505afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190614660565b611ac7576040517fb50e580c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546fffffffffffffffffffffffffffffffff811115611b14576040517f6daf72d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660008181526002602090815260408083208054600170ffffffffffffffffffffffffffffffffff199091166101006fffffffffffffffffffffffffffffffff89160217811790915580548082018255938190527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180546001600160a01b03191685179055519182527fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a25050565b6000806000611be8868686611851565b509150915081611bf9576000611c03565b611c03814261454f565b9695505050505050565b606060108054610a0e906144fe565b611c2461253a565b611c2d81612579565b6002600455611c3b8161137d565b506001600455565b6011546000906001600160a01b03161561133257601154604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b95545529060240160606040518083038186803b158015611ca257600080fd5b505afa158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda91906145ee565b60409081015190516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526001600160a01b03851660248201526044016112e2565b6110888282613423565b61108833838361343d565b611d3f612460565b60006001600160a01b0382163b15611dcd576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a79060240160206040518083038186803b158015611d9157600080fd5b505afa925050508015611dc1575060408051601f3d908101601f19168201909252611dbe91810190614660565b60015b611dca57611dcd565b90505b6001600160a01b03821615801590611de3575080155b15611e1a576040517f32483afb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601154604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150601180546001600160a01b0319166001600160a01b0392909216919091179055565b611e8c61253a565b611e9581612579565b6002600481905550611eb883838360405180602001604052806000815250611f3e565b5050600160045550565b611ecc33836129ec565b611f3e5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610dac565b61184b84848484613504565b60408051606081018252600080825260208201819052918101919091526011546001600160a01b031615611ff357601154604051635caaa2a960e11b81523060048201526001600160a01b039091169063b95545529060240160606040518083038186803b158015611fbb57600080fd5b505afa158015611fcf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a891906145ee565b50604080516060810182526000808252602082018190529181019190915290565b336001600160a01b038316811415612058576040517fc934974800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03818116600081815260066020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f83347dcc77580bb841ae3bac834b5b8ac5ccd2326276d265e638987eb6b2c05691015b60405180910390a3505050565b60606120d182612468565b60006120e860408051602081019091526000815290565b90506000815111612108576040518060200160405280600081525061111e565b806121128461358d565b60405160200161212392919061474c565b6040516020818303038152906040529392505050565b6011546060906001600160a01b0316156114ad57601154604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b95545529060240160606040518083038186803b15801561219857600080fd5b505afa1580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d091906145ee565b60409081015190516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff9091166004820152602401611454565b6001818154811061221957600080fd5b6000918252602090912001546001600160a01b0316905081565b61223b61253a565b61224481612579565b6002600455611eb88383836111a1565b61225c612460565b61226581612c79565b61108882826001612d16565b612279613379565b6001600160a01b0381166122f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610dac565b611386816133d3565b612306612460565b61230f84611d37565b604051630368065360e61b81526001600160a01b0385169063da0194c09061233d903090879060040161472f565b600060405180830381600087803b15801561235757600080fd5b505af115801561236b573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526effffffffffffffffffffffffffffff851660248201526001600160a01b0387169250632304aa029150604401600060405180830381600087803b1580156123c757600080fd5b505af11580156123db573d6000803e3d6000fd5b505060405163235d10c560e21b81523060048201526effffffffffffffffffffffffffffff841660248201526001600160a01b0387169250638d74431491506044016116bc565b60006001600160e01b031982167f2a55205a0000000000000000000000000000000000000000000000000000000014806109f957506109f982613637565b61199d613379565b6000818152600b60205260409020546001600160a01b03166113865760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610dac565b6000818152600d6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612501826116f4565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612543336105b8565b61199d576040517ff4b8028800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61258b61258582613675565b33610742565b611386576040517fdb07237500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006125d1868686611851565b9250925092508261260e576040517f85fceded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008681526007602090815260408083206001600160a01b03891684529091528120548591906126409060019061454f565b90508083146127c55760008881526007602090815260408083206001600160a01b038b168452909152902080548290811061267d5761267d614566565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16600760008a81526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002084815481106126ea576126ea614566565b600091825260208083206008808404909101805463ffffffff96871660046007968716026101000a90810297021916959095179094558b835292835260408083206001600160a01b038c168085529085528184208d8552928552818420908452909352918120805486939291908590811061276757612767614566565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff90811684529083019390935260409091019020805470ffffffff000000000000000000000000001916600160681b93909216929092021790555b60008881526007602090815260408083206001600160a01b038b16845290915290208054806127f6576127f661457c565b600082815260208082206008600019909401848104909101805463ffffffff600460078516026101000a81021990911690915594558b825291825260408082206001600160a01b038c1683528352808220938616825292909152908120805470ffffffffffffffffffffffffffffffffff1916905561287489613675565b9050876001600160a01b0316816001600160a01b03168a7f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee8a6000806040516128d29392919092835290151560208301521515604082015260600190565b60405180910390a4876001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561291357600080fd5b505afa158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b9190614660565b15612971576000898152600560205260408120805490919061296c9061477b565b909155505b604051636d4229c960e01b81526001600160a01b038281166004830152602482018b90526044820189905260648201879052891690636d4229c990608401600060405180830381600087803b1580156129c957600080fd5b505af11580156129dd573d6000803e3d6000fd5b50505050505050505050505050565b6000806129f8836116f4565b9050806001600160a01b0316846001600160a01b03161480612a3f57506001600160a01b038082166000908152600e602090815260408083209388168352929052205460ff165b80612a635750836001600160a01b0316612a5884610cf4565b6001600160a01b0316145b949350505050565b826001600160a01b0316612a7e826116f4565b6001600160a01b031614612ae25760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dac565b6001600160a01b038216612b5d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610dac565b612b6a8383836001613680565b826001600160a01b0316612b7d826116f4565b6001600160a01b031614612be15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dac565b6000818152600d6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600c8552838620805460001901905590871680865283862080546001019055868652600b90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4610e4d8383836001613705565b6001600160a01b03811660009081526002602052604090205460ff1615611386576040517fb6708d9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33612cd682613675565b6001600160a01b031614611386576040517fb1160e7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612d2184613675565b60008581526007602090815260408083206001600160a01b038816845290915281205491925050836001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8157600080fd5b505afa158015612d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db99190614660565b15612de25760008581526005602052604081208054839290612ddc90849061454f565b90915550505b60005b81811015612fce5760008681526007602090815260408083206001600160a01b03891684529091528120805483908110612e2157612e21614566565b600091825260208083206008808404909101548b855290825260408085206001600160a01b038c8116808852918552828720600790961660040261010090810a90940463ffffffff9081168089529686528388208451608081018652905460ff81161515825295860482168188015265010000000000860467ffffffffffffffff16818601819052600160681b9096049091166060808301919091528451888152968701989098528c151593860193909352949650909491939092908916918c917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee910160405180910390a460008981526008602090815260408083206001600160a01b038c811680865291845282852063ffffffff8916808752945293829020805470ffffffffffffffffffffffffffffffffff191690559051636d4229c960e01b81529289166004840152602483018c905260448301919091526064820183905290636d4229c990608401600060405180830381600087803b158015612fa857600080fd5b505af1158015612fbc573d6000803e3d6000fd5b50505050836001019350505050612de5565b5060008581526007602090815260408083206001600160a01b03881684529091528120612ffa91613ef6565b5050505050565b61300b828261372c565b61108882826137e9565b61301e8161398c565b600090815260136020526040902080546001600160a01b0319169055565b6000613049848484611851565b505090508015613085576040517fbf2bc3b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526007602090815260408083206001600160a01b03871684529091529020547f00000000000000000000000000000000000000000000000000000000000000008110613101576040517f026a381300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526007602081815260408084206001600160a01b038916808652908352818520805460018082018355918752848720600880830490910180549290971660040261010090810a63ffffffff818102199094168d8516918202179098558d895290865284882093885292855283872086885290945291852080547fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff0016650100000000004267ffffffffffffffff1602179092177fffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ff16930270ffffffff00000000000000000000000000191692909217600160681b91851691909102179055839061320d87613675565b604080518781526001602082015260008183015290519192506001600160a01b0388811692908416918a917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee9181900360600190a4856001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561329b57600080fd5b505afa1580156132af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d39190614660565b156132ee576000878152600560205260409020805460010190555b6040517f688a37410000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018990526044820187905287169063688a374190606401600060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b0316331461199d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dac565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611088828260405180602001604052806000815250613a39565b816001600160a01b0316836001600160a01b0316141561349f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dac565b6001600160a01b038381166000818152600e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016120b9565b61350f848484612a6b565b61351b84848484613ac2565b61184b5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610dac565b6060600061359a83613c25565b600101905060008167ffffffffffffffff8111156135ba576135ba614353565b6040519080825280601f01601f1916602001820160405280156135e4576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461362a5761362f565b6135ee565b509392505050565b60006001600160e01b031982167f86455d280000000000000000000000000000000000000000000000000000000014806109f957506109f982613d07565b60006109f9826116f4565b6000805b828110156136fd576136968185614792565b600081815260056020526040902054909250156136df576040517fe49dac6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160045414156136f5576136f5868684613d45565b600101613684565b505050505050565b60005b81811015612ffa57613724858561371f8487614792565b613da1565b600101613708565b6001600160a01b03821661376c576040517fa921732400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601360205260409020546001600160a01b0316156137bb576040517f3343309b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600090815260136020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821661383f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dac565b6000818152600b60205260409020546001600160a01b0316156138a45760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dac565b6138b2600083836001613680565b6000818152600b60205260409020546001600160a01b0316156139175760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dac565b6001600160a01b0382166000818152600c6020908152604080832080546001019055848352600b90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611088600083836001613705565b6000613997826116f4565b90506139a7816000846001613680565b6139b0826116f4565b6000838152600d6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552600c84528285208054600019019055878552600b909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4611088816000846001613705565b613a438383613001565b613a506000848484613ac2565b610e4d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610dac565b60006001600160a01b0384163b15613c1a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613b069033908990889088906004016147aa565b602060405180830381600087803b158015613b2057600080fd5b505af1925050508015613b50575060408051601f3d908101601f19168201909252613b4d918101906147dc565b60015b613c00573d808015613b7e576040519150601f19603f3d011682016040523d82523d6000602084013e613b83565b606091505b508051613bf85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610dac565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612a63565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613c6e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613c9a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613cb857662386f26fc10000830492506010015b6305f5e1008310613cd0576305f5e100830492506008015b6127108310613ce457612710830492506004015b60648310613cf6576064830492506002015b600a83106109f95760010192915050565b60006001600160e01b031982167ff9f7ab410000000000000000000000000000000000000000000000000000000014806109f957506109f982613def565b6001600160a01b038381161590831615818015613d5f5750805b15613d7d57604051635cbd944160e01b815260040160405180910390fd5b8115613d89575b612ffa565b8015613d9457613d84565b612ffa3386868634613e71565b6001600160a01b038381161590831615818015613dbb5750805b15613dd957604051635cbd944160e01b815260040160405180910390fd5b8115613de457613d84565b8015613d8457613d84565b60006001600160e01b031982167f80ac58cd000000000000000000000000000000000000000000000000000000001480613e5257506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806109f957506301ffc9a760e01b6001600160e01b03198316146109f9565b6011546001600160a01b031615612ffa5760115460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b158015613ed757600080fd5b505afa158015613eeb573d6000803e3d6000fd5b505050505050505050565b50805460008255600701600890049060005260206000209081019061138691905b80821115613f2b5760008155600101613f17565b5090565b6001600160e01b03198116811461138657600080fd5b600060208284031215613f5757600080fd5b813561111e81613f2f565b60005b83811015613f7d578181015183820152602001613f65565b8381111561184b5750506000910152565b60008151808452613fa6816020860160208601613f62565b601f01601f19169290920160200192915050565b60208152600061111e6020830184613f8e565b6001600160a01b038116811461138657600080fd5b600060208284031215613ff457600080fd5b813561111e81613fcd565b60006020828403121561401157600080fd5b5035919050565b6000806040838503121561402b57600080fd5b823561403681613fcd565b946020939093013593505050565b6000806040838503121561405757600080fd5b82359150602083013561406981613fcd565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156140e05781518051151585528681015163ffffffff908116888701528682015167ffffffffffffffff1687870152606091820151169085015260809093019290850190600101614091565b5091979650505050505050565b60008060006060848603121561410257600080fd5b83359250602084013561411481613fcd565b9150604084013563ffffffff8116811461412d57600080fd5b809150509250925092565b6000806040838503121561414b57600080fd5b50508035926020909101359150565b60008060006060848603121561416f57600080fd5b833561417a81613fcd565b9250602084013561418a81613fcd565b9150604084013561412d81613fcd565b600781106141b857634e487b7160e01b600052602160045260246000fd5b9052565b602081016109f9828461419a565b6000806000606084860312156141df57600080fd5b83356141ea81613fcd565b925060208401356141fa81613fcd565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b8181101561424c5783516001600160a01b031683529284019291840191600101614227565b50909695505050505050565b60008060006060848603121561426d57600080fd5b8335925060208401356141fa81613fcd565b6007811061138657600080fd5b6effffffffffffffffffffffffffffff8116811461138657600080fd5b6000806000606084860312156142be57600080fd5b83356142c98161427f565b925060208401356142d98161428c565b9150604084013561412d8161428c565b600080604083850312156142fc57600080fd5b823561430781613fcd565b9150602083013561406981613fcd565b801515811461138657600080fd5b6000806040838503121561433857600080fd5b823561434381613fcd565b9150602083013561406981614317565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561439257614392614353565b604052919050565b600080600080608085870312156143b057600080fd5b84356143bb81613fcd565b93506020858101356143cc81613fcd565b935060408601359250606086013567ffffffffffffffff808211156143f057600080fd5b818801915088601f83011261440457600080fd5b81358181111561441657614416614353565b614428601f8201601f19168501614369565b9150808252898482850101111561443e57600080fd5b808484018584013760008482840101525080935050505092959194509250565b600060608201905061447182845161419a565b60208301516effffffffffffffffffffffffffffff8082166020850152806040860151166040850152505092915050565b600080600080608085870312156144b857600080fd5b84356144c381613fcd565b935060208501356144d38161427f565b925060408501356144e38161428c565b915060608501356144f38161428c565b939692955090935050565b600181811c9082168061451257607f821691505b6020821081141561453357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561456157614561614539565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006000198214156145a6576145a6614539565b5060010190565b60008160001904831182151516156145c7576145c7614539565b500290565b6000826145e957634e487b7160e01b600052601260045260246000fd5b500490565b60006060828403121561460057600080fd5b6040516060810181811067ffffffffffffffff8211171561462357614623614353565b60405282516146318161427f565b815260208301516146418161428c565b602082015260408301516146548161428c565b60408201529392505050565b60006020828403121561467257600080fd5b815161111e81614317565b6000602080838503121561469057600080fd5b825167ffffffffffffffff808211156146a857600080fd5b818501915085601f8301126146bc57600080fd5b8151818111156146ce576146ce614353565b8060051b91506146df848301614369565b81815291830184019184810190888411156146f957600080fd5b938501935b83851015614723578451925061471383613fcd565b82825293850193908501906146fe565b98975050505050505050565b6001600160a01b03831681526040810161111e602083018461419a565b6000835161475e818460208801613f62565b835190830190614772818360208801613f62565b01949350505050565b60008161478a5761478a614539565b506000190190565b600082198211156147a5576147a5614539565b500190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611c036080830184613f8e565b6000602082840312156147ee57600080fd5b815161111e81613f2f56fea264697066735822122022c3b6fe7526b955e893fe52ffb28f1bc29d0e278b701fc243efae60a7e328c464736f6c63430008090033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061038e5760003560e01c806370a08231116101de578063a9fc664e1161010f578063d007af5c116100ad578063e985e9c51161007c578063e985e9c514610979578063f1e923c5146109b5578063f2fde38b146109c8578063fd762d92146109db57600080fd5b8063d007af5c14610942578063d73792a91461094a578063e2989f4c14610953578063e370ab461461096657600080fd5b8063b88d4fde116100e9578063b88d4fde146108f4578063be537f4314610907578063c05e2f441461091c578063c87b56dd1461092f57600080fd5b8063a9fc664e1461086a578063aa6cab5a1461087d578063aca139f7146108e157600080fd5b80638da5cb5b1161017c5780639bc17ea4116101565780639bc17ea41461081e5780639d645a4414610831578063a144819414610844578063a22cb4651461085757600080fd5b80638da5cb5b146107cf57806391623718146107e057806395d89b411461081657600080fd5b80637f1a5ce1116101b85780637f1a5ce114610734578063816a15011461077057806381ddcc1f14610783578063869f9110146107a957600080fd5b806370a08231146106f8578063715018a6146107195780637e10b35b1461072157600080fd5b80632e8da829116102c35780634e02c078116102615780636134716211610230578063613471621461069a5780636352211e146106ad5780636c3b8699146106c0578063703fa929146106c857600080fd5b80634e02c0781461062457806351dadc281461063757806353401df91461065f5780635d4c1d461461067257600080fd5b806340c10f191161029d57806340c10f19146105d657806342842e0e146105e957806342966c68146105fc578063495c8bf91461060f57600080fd5b80632e8da829146105845780632ebb386a14610597578063301be740146105aa57600080fd5b80630f3d911c116103305780631b25b0771161030a5780631b25b077146105175780631c33b3281461052a57806323b872dd1461053f5780632a55205a1461055257600080fd5b80630f3d911c1461044d578063113405571461046d57806311ad40811461050457600080fd5b8063070cba171161036c578063070cba1714610401578063081812fc14610416578063095ea7b314610429578063098144d41461043c57600080fd5b8063014635461461039357806301ffc9a7146103c957806306fdde03146103ec575b600080fd5b6103ac71721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b6103dc6103d7366004613f45565b6109ee565b60405190151581526020016103c0565b6103f46109ff565b6040516103c09190613fba565b61041461040f366004613fe2565b610a91565b005b6103ac610424366004613fff565b610cf4565b610414610437366004614018565b610d1b565b6011546001600160a01b03166103ac565b61046061045b366004614044565b610e52565b6040516103c09190614074565b6104cd61047b3660046140ed565b600860209081526000938452604080852082529284528284209052825290205460ff81169063ffffffff610100820481169167ffffffffffffffff6501000000000082041691600160681b9091041684565b60408051941515855263ffffffff938416602086015267ffffffffffffffff909216918401919091521660608201526080016103c0565b610414610512366004614138565b61106c565b6103dc61052536600461415a565b61108c565b610532600181565b6040516103c091906141bc565b61041461054d3660046141ca565b611125565b610565610560366004614138565b6111ac565b604080516001600160a01b0390931683526020830191909152016103c0565b6103dc610592366004613fe2565b611208565b6104146105a5366004614044565b61133a565b6103dc6105b8366004613fe2565b6001600160a01b031660009081526002602052604090205460ff1690565b6104146105e4366004614018565b611358565b6104146105f73660046141ca565b611362565b61041461060a366004613fff565b61137d565b610617611389565b6040516103c0919061420b565b610414610632366004614258565b6114c0565b61064a610645366004614258565b6114dd565b60405163ffffffff90911681526020016103c0565b61041461066d366004614138565b611533565b61067a600181565b6040516effffffffffffffffffffffffffffff90911681526020016103c0565b6104146106a83660046142a9565b61154f565b6103ac6106bb366004613fff565b6116f4565b610414611759565b6106db6106d6366004614258565b611851565b6040805193151584526020840192909252908201526060016103c0565b61070b610706366004613fe2565b6118f1565b6040519081526020016103c0565b61041461198b565b61041461072f366004613fe2565b61199f565b6103dc6107423660046142e9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b61070b61077e366004614258565b611bd8565b7f000000000000000000000000000000000000000000000000000000000000000061070b565b7f000000000000000000000000000000000000000000000000000000000000000061070b565b6000546001600160a01b03166103ac565b61070b6107ee366004614044565b60009182526007602090815260408084206001600160a01b0393909316845291905290205490565b6103f4611c0d565b61041461082c366004613fff565b611c1c565b6103dc61083f366004613fe2565b611c43565b610414610852366004614018565b611d22565b610414610865366004614325565b611d2c565b610414610878366004613fe2565b611d37565b6108b961088b366004613fe2565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b6040805192151583526fffffffffffffffffffffffffffffffff9091166020830152016103c0565b6104146108ef3660046141ca565b611e84565b61041461090236600461439a565b611ec2565b61090f611f4a565b6040516103c0919061445e565b61041461092a366004614325565b612014565b6103f461093d366004613fff565b6120c6565b610617612139565b61070b61271081565b6103ac610961366004613fff565b612209565b6104146109743660046141ca565b612233565b6103dc6109873660046142e9565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205460ff1690565b6104146109c3366004614044565b612254565b6104146109d6366004613fe2565b612271565b6104146109e93660046144a2565b6122fe565b60006109f982612422565b92915050565b6060600f8054610a0e906144fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3a906144fe565b8015610a875780601f10610a5c57610100808354040283529160200191610a87565b820191906000526020600020905b815481529060010190602001808311610a6a57829003601f168201915b5050505050905090565b610a99612460565b6001600160a01b03811660009081526002602052604090205460ff16610aeb576040517f385f0cec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600090815260026020526040812054600180546101009092046fffffffffffffffffffffffffffffffff169291610b2c919061454f565b905080826fffffffffffffffffffffffffffffffff1614610c5a5760018181548110610b5a57610b5a614566565b600091825260209091200154600180546001600160a01b03909216916fffffffffffffffffffffffffffffffff8516908110610b9857610b98614566565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600260006001856fffffffffffffffffffffffffffffffff1681548110610bf057610bf0614566565b60009182526020808320909101546001600160a01b03168352820192909252604001902080546fffffffffffffffffffffffffffffffff92909216610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9092169190911790555b6001805480610c6b57610c6b61457c565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352600282526040808420805470ffffffffffffffffffffffffffffffffff1916905551928352917fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a2505050565b6000610cff82612468565b506000908152600d60205260409020546001600160a01b031690565b6000610d26826116f4565b9050806001600160a01b0316836001600160a01b03161415610db55760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b0382161480610dd15750610dd18133610987565b610e435760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610dac565b610e4d83836124cc565b505050565b60008281526007602090815260408083206001600160a01b03851684529091529020546060908067ffffffffffffffff811115610e9157610e91614353565b604051908082528060200260200182016040528015610ee357816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610eaf5790505b5060008581526007602090815260408083206001600160a01b0388168452825280832080548251818502810185019093528083529496509293909291830182828015610f7a57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f3d5790505b5050505050905060005b828110156110635760008681526008602090815260408083206001600160a01b038916845290915281208351909190849084908110610fc557610fc5614566565b60209081029190910181015163ffffffff90811683528282019390935260409182016000208251608081018452905460ff811615158252610100810485169282019290925267ffffffffffffffff6501000000000083041692810192909252600160681b90049091166060820152845185908390811061104757611047614566565b60200260200101819052508061105c90614592565b9050610f84565b50505092915050565b61107461253a565b61107d82612579565b6110888233836125c1565b5050565b6011546000906001600160a01b03161561111a5760115460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b1580156110f557600080fd5b505afa925050508015611106575060015b6111125750600061111e565b50600161111e565b5060015b9392505050565b61112f33826129ec565b6111a15760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610dac565b610e4d838383612a6b565b60008281526013602052604081205481906001600160a01b03166127106111f37f0000000000000000000000000000000000000000000000000000000000000000866145ad565b6111fd91906145cc565b915091509250929050565b6011546000906001600160a01b03161561133257601154604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b95545529060240160606040518083038186803b15801561126757600080fd5b505afa15801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f91906145ee565b602001516040516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526001600160a01b03851660248201526044015b60206040518083038186803b1580156112fa57600080fd5b505afa15801561130e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190614660565b506000919050565b61134381612c79565b61134c82612ccc565b61108882826000612d16565b6110888282613001565b610e4d83838360405180602001604052806000815250611ec2565b61138681613015565b50565b6011546060906001600160a01b0316156114ad57601154604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b95545529060240160606040518083038186803b1580156113e857600080fd5b505afa1580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142091906145ee565b602001516040516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526024015b60006040518083038186803b15801561146c57600080fd5b505afa158015611480573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114a8919081019061467d565b905090565b5060408051600081526020810190915290565b6114c982612c79565b6114d283612ccc565b610e4d8383836125c1565b6007602052826000526040600020602052816000526040600020818154811061150557600080fd5b906000526020600020906008918282040191900660040292509250509054906101000a900463ffffffff1681565b61153b61253a565b61154482612579565b61108882338361303c565b611557612460565b600061156b6011546001600160a01b031690565b90506001600160a01b0381166115ad576040517f39ffc7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c0906115db903090889060040161472f565b600060405180830381600087803b1580156115f557600080fd5b505af1158015611609573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526effffffffffffffffffffffffffffff861660248201526001600160a01b0384169250632304aa029150604401600060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b505060405163235d10c560e21b81523060048201526effffffffffffffffffffffffffffff851660248201526001600160a01b0384169250638d74431491506044015b600060405180830381600087803b1580156116d657600080fd5b505af11580156116ea573d6000803e3d6000fd5b5050505050505050565b6000818152600b60205260408120546001600160a01b0316806109f95760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610dac565b611761612460565b61177c71721c310194ccfc01e523fc93c9cccfa2a0ac611d37565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c0906117b490309060019060040161472f565b600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526001602482015271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa029150604401600060405180830381600087803b15801561183757600080fd5b505af115801561184b573d6000803e3d6000fd5b50505050565b6000808063ffffffff841115611893576040517f0b2530f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505060009283526008602090815260408085206001600160a01b0394909416855292815282842063ffffffff9283168552905291205460ff81169265010000000000820467ffffffffffffffff1692600160681b90920490911690565b60006001600160a01b03821661196f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610dac565b506001600160a01b03166000908152600c602052604090205490565b611993613379565b61199d60006133d3565b565b6119a7612460565b6001600160a01b03811660009081526002602052604090205460ff16156119fa576040517fd8110a5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516301ffc9a760e01b81527f977e0c1c0000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b158015611a5957600080fd5b505afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190614660565b611ac7576040517fb50e580c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546fffffffffffffffffffffffffffffffff811115611b14576040517f6daf72d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660008181526002602090815260408083208054600170ffffffffffffffffffffffffffffffffff199091166101006fffffffffffffffffffffffffffffffff89160217811790915580548082018255938190527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180546001600160a01b03191685179055519182527fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a25050565b6000806000611be8868686611851565b509150915081611bf9576000611c03565b611c03814261454f565b9695505050505050565b606060108054610a0e906144fe565b611c2461253a565b611c2d81612579565b6002600455611c3b8161137d565b506001600455565b6011546000906001600160a01b03161561133257601154604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b95545529060240160606040518083038186803b158015611ca257600080fd5b505afa158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda91906145ee565b60409081015190516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526001600160a01b03851660248201526044016112e2565b6110888282613423565b61108833838361343d565b611d3f612460565b60006001600160a01b0382163b15611dcd576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a79060240160206040518083038186803b158015611d9157600080fd5b505afa925050508015611dc1575060408051601f3d908101601f19168201909252611dbe91810190614660565b60015b611dca57611dcd565b90505b6001600160a01b03821615801590611de3575080155b15611e1a576040517f32483afb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601154604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150601180546001600160a01b0319166001600160a01b0392909216919091179055565b611e8c61253a565b611e9581612579565b6002600481905550611eb883838360405180602001604052806000815250611f3e565b5050600160045550565b611ecc33836129ec565b611f3e5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610dac565b61184b84848484613504565b60408051606081018252600080825260208201819052918101919091526011546001600160a01b031615611ff357601154604051635caaa2a960e11b81523060048201526001600160a01b039091169063b95545529060240160606040518083038186803b158015611fbb57600080fd5b505afa158015611fcf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a891906145ee565b50604080516060810182526000808252602082018190529181019190915290565b336001600160a01b038316811415612058576040517fc934974800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03818116600081815260066020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f83347dcc77580bb841ae3bac834b5b8ac5ccd2326276d265e638987eb6b2c05691015b60405180910390a3505050565b60606120d182612468565b60006120e860408051602081019091526000815290565b90506000815111612108576040518060200160405280600081525061111e565b806121128461358d565b60405160200161212392919061474c565b6040516020818303038152906040529392505050565b6011546060906001600160a01b0316156114ad57601154604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b95545529060240160606040518083038186803b15801561219857600080fd5b505afa1580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d091906145ee565b60409081015190516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff9091166004820152602401611454565b6001818154811061221957600080fd5b6000918252602090912001546001600160a01b0316905081565b61223b61253a565b61224481612579565b6002600455611eb88383836111a1565b61225c612460565b61226581612c79565b61108882826001612d16565b612279613379565b6001600160a01b0381166122f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610dac565b611386816133d3565b612306612460565b61230f84611d37565b604051630368065360e61b81526001600160a01b0385169063da0194c09061233d903090879060040161472f565b600060405180830381600087803b15801561235757600080fd5b505af115801561236b573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526effffffffffffffffffffffffffffff851660248201526001600160a01b0387169250632304aa029150604401600060405180830381600087803b1580156123c757600080fd5b505af11580156123db573d6000803e3d6000fd5b505060405163235d10c560e21b81523060048201526effffffffffffffffffffffffffffff841660248201526001600160a01b0387169250638d74431491506044016116bc565b60006001600160e01b031982167f2a55205a0000000000000000000000000000000000000000000000000000000014806109f957506109f982613637565b61199d613379565b6000818152600b60205260409020546001600160a01b03166113865760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610dac565b6000818152600d6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612501826116f4565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612543336105b8565b61199d576040517ff4b8028800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61258b61258582613675565b33610742565b611386576040517fdb07237500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006125d1868686611851565b9250925092508261260e576040517f85fceded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008681526007602090815260408083206001600160a01b03891684529091528120548591906126409060019061454f565b90508083146127c55760008881526007602090815260408083206001600160a01b038b168452909152902080548290811061267d5761267d614566565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16600760008a81526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002084815481106126ea576126ea614566565b600091825260208083206008808404909101805463ffffffff96871660046007968716026101000a90810297021916959095179094558b835292835260408083206001600160a01b038c168085529085528184208d8552928552818420908452909352918120805486939291908590811061276757612767614566565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff90811684529083019390935260409091019020805470ffffffff000000000000000000000000001916600160681b93909216929092021790555b60008881526007602090815260408083206001600160a01b038b16845290915290208054806127f6576127f661457c565b600082815260208082206008600019909401848104909101805463ffffffff600460078516026101000a81021990911690915594558b825291825260408082206001600160a01b038c1683528352808220938616825292909152908120805470ffffffffffffffffffffffffffffffffff1916905561287489613675565b9050876001600160a01b0316816001600160a01b03168a7f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee8a6000806040516128d29392919092835290151560208301521515604082015260600190565b60405180910390a4876001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561291357600080fd5b505afa158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b9190614660565b15612971576000898152600560205260408120805490919061296c9061477b565b909155505b604051636d4229c960e01b81526001600160a01b038281166004830152602482018b90526044820189905260648201879052891690636d4229c990608401600060405180830381600087803b1580156129c957600080fd5b505af11580156129dd573d6000803e3d6000fd5b50505050505050505050505050565b6000806129f8836116f4565b9050806001600160a01b0316846001600160a01b03161480612a3f57506001600160a01b038082166000908152600e602090815260408083209388168352929052205460ff165b80612a635750836001600160a01b0316612a5884610cf4565b6001600160a01b0316145b949350505050565b826001600160a01b0316612a7e826116f4565b6001600160a01b031614612ae25760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dac565b6001600160a01b038216612b5d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610dac565b612b6a8383836001613680565b826001600160a01b0316612b7d826116f4565b6001600160a01b031614612be15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dac565b6000818152600d6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600c8552838620805460001901905590871680865283862080546001019055868652600b90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4610e4d8383836001613705565b6001600160a01b03811660009081526002602052604090205460ff1615611386576040517fb6708d9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33612cd682613675565b6001600160a01b031614611386576040517fb1160e7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612d2184613675565b60008581526007602090815260408083206001600160a01b038816845290915281205491925050836001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8157600080fd5b505afa158015612d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db99190614660565b15612de25760008581526005602052604081208054839290612ddc90849061454f565b90915550505b60005b81811015612fce5760008681526007602090815260408083206001600160a01b03891684529091528120805483908110612e2157612e21614566565b600091825260208083206008808404909101548b855290825260408085206001600160a01b038c8116808852918552828720600790961660040261010090810a90940463ffffffff9081168089529686528388208451608081018652905460ff81161515825295860482168188015265010000000000860467ffffffffffffffff16818601819052600160681b9096049091166060808301919091528451888152968701989098528c151593860193909352949650909491939092908916918c917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee910160405180910390a460008981526008602090815260408083206001600160a01b038c811680865291845282852063ffffffff8916808752945293829020805470ffffffffffffffffffffffffffffffffff191690559051636d4229c960e01b81529289166004840152602483018c905260448301919091526064820183905290636d4229c990608401600060405180830381600087803b158015612fa857600080fd5b505af1158015612fbc573d6000803e3d6000fd5b50505050836001019350505050612de5565b5060008581526007602090815260408083206001600160a01b03881684529091528120612ffa91613ef6565b5050505050565b61300b828261372c565b61108882826137e9565b61301e8161398c565b600090815260136020526040902080546001600160a01b0319169055565b6000613049848484611851565b505090508015613085576040517fbf2bc3b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526007602090815260408083206001600160a01b03871684529091529020547f00000000000000000000000000000000000000000000000000000000000000008110613101576040517f026a381300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526007602081815260408084206001600160a01b038916808652908352818520805460018082018355918752848720600880830490910180549290971660040261010090810a63ffffffff818102199094168d8516918202179098558d895290865284882093885292855283872086885290945291852080547fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff0016650100000000004267ffffffffffffffff1602179092177fffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ff16930270ffffffff00000000000000000000000000191692909217600160681b91851691909102179055839061320d87613675565b604080518781526001602082015260008183015290519192506001600160a01b0388811692908416918a917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee9181900360600190a4856001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561329b57600080fd5b505afa1580156132af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d39190614660565b156132ee576000878152600560205260409020805460010190555b6040517f688a37410000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018990526044820187905287169063688a374190606401600060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b0316331461199d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dac565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611088828260405180602001604052806000815250613a39565b816001600160a01b0316836001600160a01b0316141561349f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dac565b6001600160a01b038381166000818152600e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016120b9565b61350f848484612a6b565b61351b84848484613ac2565b61184b5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610dac565b6060600061359a83613c25565b600101905060008167ffffffffffffffff8111156135ba576135ba614353565b6040519080825280601f01601f1916602001820160405280156135e4576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461362a5761362f565b6135ee565b509392505050565b60006001600160e01b031982167f86455d280000000000000000000000000000000000000000000000000000000014806109f957506109f982613d07565b60006109f9826116f4565b6000805b828110156136fd576136968185614792565b600081815260056020526040902054909250156136df576040517fe49dac6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160045414156136f5576136f5868684613d45565b600101613684565b505050505050565b60005b81811015612ffa57613724858561371f8487614792565b613da1565b600101613708565b6001600160a01b03821661376c576040517fa921732400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601360205260409020546001600160a01b0316156137bb576040517f3343309b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600090815260136020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821661383f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dac565b6000818152600b60205260409020546001600160a01b0316156138a45760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dac565b6138b2600083836001613680565b6000818152600b60205260409020546001600160a01b0316156139175760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dac565b6001600160a01b0382166000818152600c6020908152604080832080546001019055848352600b90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611088600083836001613705565b6000613997826116f4565b90506139a7816000846001613680565b6139b0826116f4565b6000838152600d6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552600c84528285208054600019019055878552600b909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4611088816000846001613705565b613a438383613001565b613a506000848484613ac2565b610e4d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610dac565b60006001600160a01b0384163b15613c1a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613b069033908990889088906004016147aa565b602060405180830381600087803b158015613b2057600080fd5b505af1925050508015613b50575060408051601f3d908101601f19168201909252613b4d918101906147dc565b60015b613c00573d808015613b7e576040519150601f19603f3d011682016040523d82523d6000602084013e613b83565b606091505b508051613bf85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610dac565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612a63565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613c6e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613c9a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613cb857662386f26fc10000830492506010015b6305f5e1008310613cd0576305f5e100830492506008015b6127108310613ce457612710830492506004015b60648310613cf6576064830492506002015b600a83106109f95760010192915050565b60006001600160e01b031982167ff9f7ab410000000000000000000000000000000000000000000000000000000014806109f957506109f982613def565b6001600160a01b038381161590831615818015613d5f5750805b15613d7d57604051635cbd944160e01b815260040160405180910390fd5b8115613d89575b612ffa565b8015613d9457613d84565b612ffa3386868634613e71565b6001600160a01b038381161590831615818015613dbb5750805b15613dd957604051635cbd944160e01b815260040160405180910390fd5b8115613de457613d84565b8015613d8457613d84565b60006001600160e01b031982167f80ac58cd000000000000000000000000000000000000000000000000000000001480613e5257506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806109f957506301ffc9a760e01b6001600160e01b03198316146109f9565b6011546001600160a01b031615612ffa5760115460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b158015613ed757600080fd5b505afa158015613eeb573d6000803e3d6000fd5b505050505050505050565b50805460008255600701600890049060005260206000209081019061138691905b80821115613f2b5760008155600101613f17565b5090565b6001600160e01b03198116811461138657600080fd5b600060208284031215613f5757600080fd5b813561111e81613f2f565b60005b83811015613f7d578181015183820152602001613f65565b8381111561184b5750506000910152565b60008151808452613fa6816020860160208601613f62565b601f01601f19169290920160200192915050565b60208152600061111e6020830184613f8e565b6001600160a01b038116811461138657600080fd5b600060208284031215613ff457600080fd5b813561111e81613fcd565b60006020828403121561401157600080fd5b5035919050565b6000806040838503121561402b57600080fd5b823561403681613fcd565b946020939093013593505050565b6000806040838503121561405757600080fd5b82359150602083013561406981613fcd565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156140e05781518051151585528681015163ffffffff908116888701528682015167ffffffffffffffff1687870152606091820151169085015260809093019290850190600101614091565b5091979650505050505050565b60008060006060848603121561410257600080fd5b83359250602084013561411481613fcd565b9150604084013563ffffffff8116811461412d57600080fd5b809150509250925092565b6000806040838503121561414b57600080fd5b50508035926020909101359150565b60008060006060848603121561416f57600080fd5b833561417a81613fcd565b9250602084013561418a81613fcd565b9150604084013561412d81613fcd565b600781106141b857634e487b7160e01b600052602160045260246000fd5b9052565b602081016109f9828461419a565b6000806000606084860312156141df57600080fd5b83356141ea81613fcd565b925060208401356141fa81613fcd565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b8181101561424c5783516001600160a01b031683529284019291840191600101614227565b50909695505050505050565b60008060006060848603121561426d57600080fd5b8335925060208401356141fa81613fcd565b6007811061138657600080fd5b6effffffffffffffffffffffffffffff8116811461138657600080fd5b6000806000606084860312156142be57600080fd5b83356142c98161427f565b925060208401356142d98161428c565b9150604084013561412d8161428c565b600080604083850312156142fc57600080fd5b823561430781613fcd565b9150602083013561406981613fcd565b801515811461138657600080fd5b6000806040838503121561433857600080fd5b823561434381613fcd565b9150602083013561406981614317565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561439257614392614353565b604052919050565b600080600080608085870312156143b057600080fd5b84356143bb81613fcd565b93506020858101356143cc81613fcd565b935060408601359250606086013567ffffffffffffffff808211156143f057600080fd5b818801915088601f83011261440457600080fd5b81358181111561441657614416614353565b614428601f8201601f19168501614369565b9150808252898482850101111561443e57600080fd5b808484018584013760008482840101525080935050505092959194509250565b600060608201905061447182845161419a565b60208301516effffffffffffffffffffffffffffff8082166020850152806040860151166040850152505092915050565b600080600080608085870312156144b857600080fd5b84356144c381613fcd565b935060208501356144d38161427f565b925060408501356144e38161428c565b915060608501356144f38161428c565b939692955090935050565b600181811c9082168061451257607f821691505b6020821081141561453357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561456157614561614539565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006000198214156145a6576145a6614539565b5060010190565b60008160001904831182151516156145c7576145c7614539565b500290565b6000826145e957634e487b7160e01b600052601260045260246000fd5b500490565b60006060828403121561460057600080fd5b6040516060810181811067ffffffffffffffff8211171561462357614623614353565b60405282516146318161427f565b815260208301516146418161428c565b602082015260408301516146548161428c565b60408201529392505050565b60006020828403121561467257600080fd5b815161111e81614317565b6000602080838503121561469057600080fd5b825167ffffffffffffffff808211156146a857600080fd5b818501915085601f8301126146bc57600080fd5b8151818111156146ce576146ce614353565b8060051b91506146df848301614369565b81815291830184019184810190888411156146f957600080fd5b938501935b83851015614723578451925061471383613fcd565b82825293850193908501906146fe565b98975050505050505050565b6001600160a01b03831681526040810161111e602083018461419a565b6000835161475e818460208801613f62565b835190830190614772818360208801613f62565b01949350505050565b60008161478a5761478a614539565b506000190190565b600082198211156147a5576147a5614539565b500190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611c036080830184613f8e565b6000602082840312156147ee57600080fd5b815161111e81613f2f56fea264697066735822122022c3b6fe7526b955e893fe52ffb28f1bc29d0e278b701fc243efae60a7e328c464736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
