[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorNotAllowed", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "OPERATOR_FILTER_REGISTRY", "outputs": [ { "internalType": "contract IOperatorFilterRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "airdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "blacklistedTokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "burnAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dwellersAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "ownership", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership[]", "name": "", "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": "hiddenMetadataUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [], "name": "maxMintAmountPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "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": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_tokenId", "type": "uint256[]" }, { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setBlacklistedToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_burnAddress", "type": "address" } ], "name": "setBurnAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setClaimEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_cost", "type": "uint256" } ], "name": "setCost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_dwellersAddress", "type": "address" } ], "name": "setDwellersAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_hiddenMetadataUri", "type": "string" } ], "name": "setHiddenMetadataUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxMintAmountPerTx", "type": "uint256" } ], "name": "setMaxMintAmountPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "name": "setMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setPaused", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setRevealed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokensToBurn", "type": "uint256" } ], "name": "setTokensToBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uriPrefix", "type": "string" } ], "name": "setUriPrefix", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uriSuffix", "type": "string" } ], "name": "setUriSuffix", "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": "uint256", "name": "", "type": "uint256" } ], "name": "tokensClaimed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensToBurn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "uriPrefix", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uriSuffix", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405260405180602001604052805f815250600d908161002191906107fa565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600e908161006691906107fa565b506683185ac0364000601055610d056011556014601255600160135f6101000a81548160ff0219169083151502179055505f601360016101000a81548160ff0219169083151502179055505f601360026101000a81548160ff0219169083151502179055506002601455736bf14d09f5600ed683abce94b6c43f7cb429d30860155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610171575f80fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb66001336040518060400160405280600881526020017f6477656c6c6572730000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f44574c5200000000000000000000000000000000000000000000000000000000815250816002908161020591906107fa565b50806003908161021591906107fa565b506102246104c660201b60201c565b5f819055506102376104c660201b60201c565b6102456104ce60201b60201c565b10156102625761026163fed8210f60e01b6104f560201b60201c565b5b50505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102d4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016102cb9190610908565b60405180910390fd5b6102e3816104fd60201b60201c565b506001600a819055505f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156104bf57801561039a576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401610368929190610921565b5f604051808303815f87803b15801561037f575f80fd5b505af1158015610391573d5f803e3d5ffd5b505050506104be565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610448576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401610416929190610921565b5f604051808303815f87803b15801561042d575f80fd5b505af115801561043f573d5f803e3d5ffd5b505050506104bd565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b815260040161048f9190610908565b5f604051808303815f87803b1580156104a6575f80fd5b505af11580156104b8573d5f803e3d5ffd5b505050505b5b5b5050610948565b5f6001905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b805f5260045ffd5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061063b57607f821691505b60208210810361064e5761064d6105f7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106b07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610675565b6106ba8683610675565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6106fe6106f96106f4846106d2565b6106db565b6106d2565b9050919050565b5f819050919050565b610717836106e4565b61072b61072382610705565b848454610681565b825550505050565b5f90565b61073f610733565b61074a81848461070e565b505050565b5b8181101561076d576107625f82610737565b600181019050610750565b5050565b601f8211156107b25761078381610654565b61078c84610666565b8101602085101561079b578190505b6107af6107a785610666565b83018261074f565b50505b505050565b5f82821c905092915050565b5f6107d25f19846008026107b7565b1980831691505092915050565b5f6107ea83836107c3565b9150826002028217905092915050565b610803826105c0565b67ffffffffffffffff81111561081c5761081b6105ca565b5b6108268254610624565b610831828285610771565b5f60209050601f831160018114610862575f8415610850578287015190505b61085a85826107df565b8655506108c1565b601f19841661087086610654565b5f5b8281101561089757848901518255600182019150602085019450602081019050610872565b868310156108b457848901516108b0601f8916826107c3565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108f2826108c9565b9050919050565b610902816108e8565b82525050565b5f60208201905061091b5f8301846108f9565b92915050565b5f6040820190506109345f8301856108f9565b61094160208301846108f9565b9392505050565b614bdd806109555f395ff3fe608060405260043610610319575f3560e01c80636ba4c138116101aa578063a22cb465116100f6578063c23dc68f11610094578063e0a808531161006e578063e0a8085314610b61578063e985e9c514610b89578063f2fde38b14610bc5578063f574d9c214610bed57610319565b8063c23dc68f14610abf578063c87b56dd14610afb578063d5abeb0114610b3757610319565b8063b277219a116100d0578063b277219a14610a29578063b3c2343014610a51578063b88d4fde14610a7b578063bc63f02e14610a9757610319565b8063a22cb465146109af578063a45ba8e7146109d7578063b071401b14610a0157610319565b80638462151c1161016357806394354fd01161013d57806394354fd01461090357806395d89b411461092d57806399a2557a14610957578063a0712d681461099357610319565b80638462151c146108755780638da5cb5b146108b157806392929a09146108db57610319565b80636ba4c138146107815780636f8b44b0146107a957806370a08231146107d157806370d5ae051461080d578063715018a6146108375780637ec4a6591461084d57610319565b80633f522c8a116102695780634fdd43cb116102225780635bbb2177116101fc5780635bbb2177146106b55780635c975abb146106f157806362b99ad41461071b5780636352211e1461074557610319565b80634fdd43cb1461063957806351830227146106615780635503a0e81461068b57610319565b80633f522c8a1461053f57806340de73921461057b57806341f43434146105a357806342842e0e146105cd57806344a0d68a146105e95780634b0e72161461061157610319565b806316ba10e0116102d657806323b872dd116102b057806323b872dd146104a75780632866ed21146104c357806328c56b99146104ed5780633ccfd60b1461052957610319565b806316ba10e01461042d57806316c38b3c1461045557806318160ddd1461047d57610319565b806301ffc9a71461031d5780630287f8141461035957806306fdde0314610381578063081812fc146103ab578063095ea7b3146103e757806313faede614610403575b5f80fd5b348015610328575f80fd5b50610343600480360381019061033e91906133ef565b610c17565b6040516103509190613434565b60405180910390f35b348015610364575f80fd5b5061037f600480360381019061037a91906135fa565b610ca8565b005b34801561038c575f80fd5b50610395610d0f565b6040516103a291906136b4565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc91906136d4565b610d9f565b6040516103de919061373e565b60405180910390f35b61040160048036038101906103fc9190613781565b610df8565b005b34801561040e575f80fd5b50610417610e11565b60405161042491906137ce565b60405180910390f35b348015610438575f80fd5b50610453600480360381019061044e9190613897565b610e17565b005b348015610460575f80fd5b5061047b600480360381019061047691906138de565b610e32565b005b348015610488575f80fd5b50610491610e56565b60405161049e91906137ce565b60405180910390f35b6104c160048036038101906104bc9190613909565b610ea1565b005b3480156104ce575f80fd5b506104d7610ef0565b6040516104e49190613434565b60405180910390f35b3480156104f8575f80fd5b50610513600480360381019061050e91906136d4565b610f03565b6040516105209190613434565b60405180910390f35b348015610534575f80fd5b5061053d610f20565b005b34801561054a575f80fd5b50610565600480360381019061056091906136d4565b610fb3565b6040516105729190613434565b60405180910390f35b348015610586575f80fd5b506105a1600480360381019061059c91906136d4565b610fd0565b005b3480156105ae575f80fd5b506105b7610fe2565b6040516105c491906139b4565b60405180910390f35b6105e760048036038101906105e29190613909565b610ff4565b005b3480156105f4575f80fd5b5061060f600480360381019061060a91906136d4565b611043565b005b34801561061c575f80fd5b50610637600480360381019061063291906139cd565b611055565b005b348015610644575f80fd5b5061065f600480360381019061065a9190613897565b6110a0565b005b34801561066c575f80fd5b506106756110bb565b6040516106829190613434565b60405180910390f35b348015610696575f80fd5b5061069f6110ce565b6040516106ac91906136b4565b60405180910390f35b3480156106c0575f80fd5b506106db60048036038101906106d69190613a51565b61115a565b6040516106e89190613bf4565b60405180910390f35b3480156106fc575f80fd5b506107056111b6565b6040516107129190613434565b60405180910390f35b348015610726575f80fd5b5061072f6111c8565b60405161073c91906136b4565b60405180910390f35b348015610750575f80fd5b5061076b600480360381019061076691906136d4565b611254565b604051610778919061373e565b60405180910390f35b34801561078c575f80fd5b506107a760048036038101906107a29190613a51565b611265565b005b3480156107b4575f80fd5b506107cf60048036038101906107ca91906136d4565b6116e0565b005b3480156107dc575f80fd5b506107f760048036038101906107f291906139cd565b6116f2565b60405161080491906137ce565b60405180910390f35b348015610818575f80fd5b50610821611786565b60405161082e919061373e565b60405180910390f35b348015610842575f80fd5b5061084b6117ab565b005b348015610858575f80fd5b50610873600480360381019061086e9190613897565b6117be565b005b348015610880575f80fd5b5061089b600480360381019061089691906139cd565b6117d9565b6040516108a89190613ccb565b60405180910390f35b3480156108bc575f80fd5b506108c5611852565b6040516108d2919061373e565b60405180910390f35b3480156108e6575f80fd5b5061090160048036038101906108fc91906138de565b61187a565b005b34801561090e575f80fd5b5061091761189f565b60405161092491906137ce565b60405180910390f35b348015610938575f80fd5b506109416118a5565b60405161094e91906136b4565b60405180910390f35b348015610962575f80fd5b5061097d60048036038101906109789190613ceb565b611935565b60405161098a9190613ccb565b60405180910390f35b6109ad60048036038101906109a891906136d4565b61194b565b005b3480156109ba575f80fd5b506109d560048036038101906109d09190613d3b565b611ab9565b005b3480156109e2575f80fd5b506109eb611ad2565b6040516109f891906136b4565b60405180910390f35b348015610a0c575f80fd5b50610a276004803603810190610a2291906136d4565b611b5e565b005b348015610a34575f80fd5b50610a4f6004803603810190610a4a91906139cd565b611b70565b005b348015610a5c575f80fd5b50610a65611bbb565b604051610a72919061373e565b60405180910390f35b610a956004803603810190610a909190613e17565b611be0565b005b348015610aa2575f80fd5b50610abd6004803603810190610ab89190613e97565b611c31565b005b348015610aca575f80fd5b50610ae56004803603810190610ae091906136d4565b611c9e565b604051610af29190613f28565b60405180910390f35b348015610b06575f80fd5b50610b216004803603810190610b1c91906136d4565b611d13565b604051610b2e91906136b4565b60405180910390f35b348015610b42575f80fd5b50610b4b611e65565b604051610b5891906137ce565b60405180910390f35b348015610b6c575f80fd5b50610b876004803603810190610b8291906138de565b611e6b565b005b348015610b94575f80fd5b50610baf6004803603810190610baa9190613f41565b611e90565b604051610bbc9190613434565b60405180910390f35b348015610bd0575f80fd5b50610beb6004803603810190610be691906139cd565b611f1e565b005b348015610bf8575f80fd5b50610c01611fa2565b604051610c0e91906137ce565b60405180910390f35b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c7157506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ca15750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b610cb0611fa8565b5f5b8251811015610d0a5781600c5f858481518110610cd257610cd1613f7f565b5b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610cb2565b505050565b606060028054610d1e90613fd9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4a90613fd9565b8015610d955780601f10610d6c57610100808354040283529160200191610d95565b820191905f5260205f20905b815481529060010190602001808311610d7857829003601f168201915b5050505050905090565b5f610da98261202f565b610dbe57610dbd63cf4700e460e01b6120d2565b5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b81610e02816120da565b610e0c83836121d4565b505050565b60105481565b610e1f611fa8565b80600e9081610e2e919061419d565b5050565b610e3a611fa8565b8060135f6101000a81548160ff02191690831515021790555050565b5f610e5f6121e4565b6001545f54030390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e916121ec565b14610e9e57600854810190505b90565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610edf57610ede336120da565b5b610eea848484612213565b50505050565b601360019054906101000a900460ff1681565b600c602052805f5260405f205f915054906101000a900460ff1681565b610f28611fa8565b610f306124be565b5f610f39611852565b73ffffffffffffffffffffffffffffffffffffffff1647604051610f5c90614299565b5f6040518083038185875af1925050503d805f8114610f96576040519150601f19603f3d011682016040523d82523d5f602084013e610f9b565b606091505b5050905080610fa8575f80fd5b50610fb161250d565b565b600b602052805f5260405f205f915054906101000a900460ff1681565b610fd8611fa8565b8060148190555050565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461103257611031336120da565b5b61103d848484612517565b50505050565b61104b611fa8565b8060108190555050565b61105d611fa8565b8060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110a8611fa8565b80600f90816110b7919061419d565b5050565b601360029054906101000a900460ff1681565b600e80546110db90613fd9565b80601f016020809104026020016040519081016040528092919081815260200182805461110790613fd9565b80156111525780601f1061112957610100808354040283529160200191611152565b820191905f5260205f20905b81548152906001019060200180831161113557829003601f168201915b505050505081565b6060805f84849050905060405191508082528060051b90508060208301016040525b5f81146111ab575f6020820391508186013590505f61119a82611c9e565b90508083602086010152505061117c565b819250505092915050565b60135f9054906101000a900460ff1681565b600d80546111d590613fd9565b80601f016020809104026020016040519081016040528092919081815260200182805461120190613fd9565b801561124c5780601f106112235761010080835404028352916020019161124c565b820191905f5260205f20905b81548152906001019060200180831161122f57829003601f168201915b505050505081565b5f61125e82612536565b9050919050565b5f6002838390506112769190614307565b9050601360019054906101000a900460ff166112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90614381565b60405180910390fd5b5f6002848490506112d8919061439f565b14611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90614419565b60405180910390fd5b60125481111561135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490614481565b60405180910390fd5b60115481611369610e56565b611373919061449f565b11156113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab9061451c565b60405180910390fd5b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f5b848490508110156116cf573373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e87878581811061142c5761142b613f7f565b5b905060200201356040518263ffffffff1660e01b815260040161144f91906137ce565b602060405180830381865afa15801561146a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148e919061454e565b73ffffffffffffffffffffffffffffffffffffffff16146114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db906145c3565b60405180910390fd5b5f1515600c5f8787858181106114fd576114fc613f7f565b5b9050602002013581526020019081526020015f205f9054906101000a900460ff16151514611560576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115579061462b565b60405180910390fd5b5f1515600b5f87878581811061157957611578613f7f565b5b9050602002013581526020019081526020015f205f9054906101000a900460ff161515146115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d390614693565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688888681811061162e5761162d613f7f565b5b905060200201356040518463ffffffff1660e01b8152600401611653939291906146b1565b5f604051808303815f87803b15801561166a575f80fd5b505af115801561167c573d5f803e3d5ffd5b505050506001600b5f87878581811061169857611697613f7f565b5b9050602002013581526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113db565b506116da3383612645565b50505050565b6116e8611fa8565b8060118190555050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361173757611736638f4eb60460e01b6120d2565b5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117b3611fa8565b6117bc5f612662565b565b6117c6611fa8565b80600d90816117d5919061419d565b5050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6118046121ec565b1461181a5761181963bdba09d760e01b6120d2565b5b5f6118236121e4565b90505f61182e612725565b905060608183146118475761184485848461272d565b90505b809350505050919050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611882611fa8565b80601360016101000a81548160ff02191690831515021790555050565b60125481565b6060600380546118b490613fd9565b80601f01602080910402602001604051908101604052809291908181526020018280546118e090613fd9565b801561192b5780601f106119025761010080835404028352916020019161192b565b820191905f5260205f20905b81548152906001019060200180831161190e57829003601f168201915b5050505050905090565b606061194284848461272d565b90509392505050565b8060115481611958610e56565b611962919061449f565b11156119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a9061451c565b60405180910390fd5b5f811180156119b457506012548111155b6119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90614730565b60405180910390fd5b8180601054611a02919061474e565b341015611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b906147d9565b60405180910390fd5b611a4c6124be565b60135f9054906101000a900460ff1615611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290614841565b60405180910390fd5b611aac611aa66128dc565b84612645565b611ab461250d565b505050565b81611ac3816120da565b611acd83836128e3565b505050565b600f8054611adf90613fd9565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0b90613fd9565b8015611b565780601f10611b2d57610100808354040283529160200191611b56565b820191905f5260205f20905b815481529060010190602001808311611b3957829003601f168201915b505050505081565b611b66611fa8565b8060128190555050565b611b78611fa8565b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c1e57611c1d336120da565b5b611c2a858585856129e9565b5050505050565b611c39611fa8565b60115482611c45610e56565b611c4f919061449f565b1115611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c879061451c565b60405180910390fd5b611c9a8183612645565b5050565b611ca661333e565b611cae6121e4565b8210611d0d57611cbc6121ec565b821115611cd357611ccc82612a3a565b9050611d0e565b611cdb612725565b821015611d0c575b611cec82612a63565b611cfc5781600190039150611ce3565b611d0582612a3a565b9050611d0e565b5b5b919050565b6060611d1e8261202f565b611d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d54906148cf565b60405180910390fd5b5f1515601360029054906101000a900460ff16151503611e0757600f8054611d8490613fd9565b80601f0160208091040260200160405190810160405280929190818152602001828054611db090613fd9565b8015611dfb5780601f10611dd257610100808354040283529160200191611dfb565b820191905f5260205f20905b815481529060010190602001808311611dde57829003601f168201915b50505050509050611e60565b5f611e10612a80565b90505f815111611e2e5760405180602001604052805f815250611e5c565b80611e3884612b10565b600e604051602001611e4c939291906149a7565b6040516020818303038152906040525b9150505b919050565b60115481565b611e73611fa8565b80601360026101000a81548160ff02191690831515021790555050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611f26611fa8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f96575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611f8d919061373e565b60405180910390fd5b611f9f81612662565b50565b60145481565b611fb06128dc565b73ffffffffffffffffffffffffffffffffffffffff16611fce611852565b73ffffffffffffffffffffffffffffffffffffffff161461202d57611ff16128dc565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612024919061373e565b60405180910390fd5b565b5f816120396121e4565b116120cc576120466121ec565b82111561206e5761206760045f8481526020019081526020015f2054612bda565b90506120cd565b5f548210156120cb575f5b5f60045f8581526020019081526020015f2054915081036120a5578261209e906149d7565b9250612079565b5f7c01000000000000000000000000000000000000000000000000000000008216149150505b5b5b919050565b805f5260045ffd5b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156121d1576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016121509291906149fe565b602060405180830381865afa15801561216b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218f9190614a39565b6121d057806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016121c7919061373e565b60405180910390fd5b5b50565b6121e082826001612c1a565b5050565b5f6001905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b5f61221d82612536565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146122925761229163a114810060e01b6120d2565b5b5f8061229d84612d44565b915091506122b381876122ae612d67565b612d6e565b6122de576122c8866122c3612d67565b611e90565b6122dd576122dc6359c896be60e01b6120d2565b5b5b6122eb8686866001612db1565b80156122f5575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600101919050819055506123bd85612399888887612db7565b7c020000000000000000000000000000000000000000000000000000000017612dde565b60045f8681526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000841603612439575f6001850190505f60045f8381526020019081526020015f205403612437575f548114612436578360045f8381526020019081526020015f20819055505b5b505b5f73ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45f81036124a8576124a763ea553b3460e01b6120d2565b5b6124b58787876001612e08565b50505050505050565b6002600a5403612503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fa90614aae565b60405180910390fd5b6002600a81905550565b6001600a81905550565b61253183838360405180602001604052805f815250611be0565b505050565b5f816125406121e4565b1161262f5760045f8381526020019081526020015f205490506125616121ec565b8211156125865761257181612bda565b6126405761258563df2d9b4260e01b6120d2565b5b5f8103612607575f5482106125a6576125a563df2d9b4260e01b6120d2565b5b5b60045f836001900393508381526020019081526020015f205490505f810315612602575f7c0100000000000000000000000000000000000000000000000000000000821603156126405761260163df2d9b4260e01b6120d2565b5b6125a7565b5f7c010000000000000000000000000000000000000000000000000000000082160315612640575b61263f63df2d9b4260e01b6120d2565b5b919050565b61265e828260405180602001604052805f815250612e0e565b5050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8054905090565b6060818310612747576127466332c1995a60e01b6120d2565b5b61274f6121e4565b8310156127615761275e6121e4565b92505b5f61276a612725565b90505f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127966121ec565b036127a157816127a3565b835b90508084106127b0578093505b5f6127ba876116f2565b90508486106127c7575f90505b5f81146128d25780868603116127dd5785850390505b5f60405194506001820160051b85019050806040525f6127fc88611c9e565b90505f816040015161280f57815f015190505b5f5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61283a6121ec565b1461286857868a036128545760016128506121ec565b0199505b61285c6121ec565b8a1115612867575f91505b5b6128718a612a3a565b925060408301515f8114612887575f92506128ad565b83511561289357835192505b8b831860601b6128ac576001820191508a8260051b8a01525b5b5060018a01995083604052888a14806128c557508481145b1561281157808852505050505b5050509392505050565b5f33905090565b8060075f6128ef612d67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612998612d67565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516129dd9190613434565b60405180910390a35050565b6129f4848484610ea1565b5f8373ffffffffffffffffffffffffffffffffffffffff163b14612a3457612a1e84848484612e84565b612a3357612a3263d1a57ed660e01b6120d2565b5b5b50505050565b612a4261333e565b612a5c60045f8481526020019081526020015f2054612fae565b9050919050565b5f8060045f8481526020019081526020015f205414159050919050565b6060600d8054612a8f90613fd9565b80601f0160208091040260200160405190810160405280929190818152602001828054612abb90613fd9565b8015612b065780601f10612add57610100808354040283529160200191612b06565b820191905f5260205f20905b815481529060010190602001808311612ae957829003601f168201915b5050505050905090565b60605f6001612b1e84613062565b0190505f8167ffffffffffffffff811115612b3c57612b3b613461565b5b6040519080825280601f01601f191660200182016040528015612b6e5781602001600182028036833780820191505090505b5090505f82602001820190505b600115612bcf578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612bc457612bc36142ad565b5b0494505f8503612b7b575b819350505050919050565b5f7c0100000000000000000000000000000000000000000000000000000000821673ffffffffffffffffffffffffffffffffffffffff8316119050919050565b5f612c2483611254565b9050818015612c6657508073ffffffffffffffffffffffffffffffffffffffff16612c4d612d67565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612c9257612c7c81612c77612d67565b611e90565b612c9157612c9063cfb3b94260e01b6120d2565b5b5b8360065f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b5f8060e883901c905060e8612dcd8686846131b3565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b612e1883836131bb565b5f8373ffffffffffffffffffffffffffffffffffffffff163b14612e7f575f805490505f83820390505b612e545f868380600101945086612e84565b612e6957612e6863d1a57ed660e01b6120d2565b5b818110612e4257815f5414612e7c575f80fd5b50505b505050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ea9612d67565b8786866040518563ffffffff1660e01b8152600401612ecb9493929190614b1e565b6020604051808303815f875af1925050508015612f0657506040513d601f19601f82011682018060405250810190612f039190614b7c565b60015b612f5b573d805f8114612f34576040519150601f19603f3d011682016040523d82523d5f602084013e612f39565b606091505b505f815103612f5357612f5263d1a57ed660e01b6120d2565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b612fb661333e565b81815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff16815250505f7c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106130be577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816130b4576130b36142ad565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106130fb576d04ee2d6d415b85acef810000000083816130f1576130f06142ad565b5b0492506020810190505b662386f26fc10000831061312a57662386f26fc1000083816131205761311f6142ad565b5b0492506010810190505b6305f5e1008310613153576305f5e1008381613149576131486142ad565b5b0492506008810190505b612710831061317857612710838161316e5761316d6142ad565b5b0492506004810190505b6064831061319b5760648381613191576131906142ad565b5b0492506002810190505b600a83106131aa576001810190505b80915050919050565b5f9392505050565b5f805490505f82036131d8576131d763b562e8dd60e01b6120d2565b5b6131e45f848385612db1565b613202836131f35f865f612db7565b6131fc8561332f565b17612dde565b60045f8381526020019081526020015f2081905550600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f73ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690505f81036132b3576132b2632e07630060e01b6120d2565b5b5f83830190505f8390506132c56121ec565b6001830311156132e0576132df6381647e3a60e01b6120d2565b5b5b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a48181600101915081036132e157815f8190555050505061332a5f848385612e08565b505050565b5f6001821460e11b9050919050565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f151581526020015f62ffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133ce8161339a565b81146133d8575f80fd5b50565b5f813590506133e9816133c5565b92915050565b5f6020828403121561340457613403613392565b5b5f613411848285016133db565b91505092915050565b5f8115159050919050565b61342e8161341a565b82525050565b5f6020820190506134475f830184613425565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61349782613451565b810181811067ffffffffffffffff821117156134b6576134b5613461565b5b80604052505050565b5f6134c8613389565b90506134d4828261348e565b919050565b5f67ffffffffffffffff8211156134f3576134f2613461565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b61351a81613508565b8114613524575f80fd5b50565b5f8135905061353581613511565b92915050565b5f61354d613548846134d9565b6134bf565b905080838252602082019050602084028301858111156135705761356f613504565b5b835b8181101561359957806135858882613527565b845260208401935050602081019050613572565b5050509392505050565b5f82601f8301126135b7576135b661344d565b5b81356135c784826020860161353b565b91505092915050565b6135d98161341a565b81146135e3575f80fd5b50565b5f813590506135f4816135d0565b92915050565b5f80604083850312156136105761360f613392565b5b5f83013567ffffffffffffffff81111561362d5761362c613396565b5b613639858286016135a3565b925050602061364a858286016135e6565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61368682613654565b613690818561365e565b93506136a081856020860161366e565b6136a981613451565b840191505092915050565b5f6020820190508181035f8301526136cc818461367c565b905092915050565b5f602082840312156136e9576136e8613392565b5b5f6136f684828501613527565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613728826136ff565b9050919050565b6137388161371e565b82525050565b5f6020820190506137515f83018461372f565b92915050565b6137608161371e565b811461376a575f80fd5b50565b5f8135905061377b81613757565b92915050565b5f806040838503121561379757613796613392565b5b5f6137a48582860161376d565b92505060206137b585828601613527565b9150509250929050565b6137c881613508565b82525050565b5f6020820190506137e15f8301846137bf565b92915050565b5f80fd5b5f67ffffffffffffffff82111561380557613804613461565b5b61380e82613451565b9050602081019050919050565b828183375f83830152505050565b5f61383b613836846137eb565b6134bf565b905082815260208101848484011115613857576138566137e7565b5b61386284828561381b565b509392505050565b5f82601f83011261387e5761387d61344d565b5b813561388e848260208601613829565b91505092915050565b5f602082840312156138ac576138ab613392565b5b5f82013567ffffffffffffffff8111156138c9576138c8613396565b5b6138d58482850161386a565b91505092915050565b5f602082840312156138f3576138f2613392565b5b5f613900848285016135e6565b91505092915050565b5f805f606084860312156139205761391f613392565b5b5f61392d8682870161376d565b935050602061393e8682870161376d565b925050604061394f86828701613527565b9150509250925092565b5f819050919050565b5f61397c613977613972846136ff565b613959565b6136ff565b9050919050565b5f61398d82613962565b9050919050565b5f61399e82613983565b9050919050565b6139ae81613994565b82525050565b5f6020820190506139c75f8301846139a5565b92915050565b5f602082840312156139e2576139e1613392565b5b5f6139ef8482850161376d565b91505092915050565b5f80fd5b5f8083601f840112613a1157613a1061344d565b5b8235905067ffffffffffffffff811115613a2e57613a2d6139f8565b5b602083019150836020820283011115613a4a57613a49613504565b5b9250929050565b5f8060208385031215613a6757613a66613392565b5b5f83013567ffffffffffffffff811115613a8457613a83613396565b5b613a90858286016139fc565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ace8161371e565b82525050565b5f67ffffffffffffffff82169050919050565b613af081613ad4565b82525050565b613aff8161341a565b82525050565b5f62ffffff82169050919050565b613b1c81613b05565b82525050565b608082015f820151613b365f850182613ac5565b506020820151613b496020850182613ae7565b506040820151613b5c6040850182613af6565b506060820151613b6f6060850182613b13565b50505050565b5f613b808383613b22565b60808301905092915050565b5f602082019050919050565b5f613ba282613a9c565b613bac8185613aa6565b9350613bb783613ab6565b805f5b83811015613be7578151613bce8882613b75565b9750613bd983613b8c565b925050600181019050613bba565b5085935050505092915050565b5f6020820190508181035f830152613c0c8184613b98565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c4681613508565b82525050565b5f613c578383613c3d565b60208301905092915050565b5f602082019050919050565b5f613c7982613c14565b613c838185613c1e565b9350613c8e83613c2e565b805f5b83811015613cbe578151613ca58882613c4c565b9750613cb083613c63565b925050600181019050613c91565b5085935050505092915050565b5f6020820190508181035f830152613ce38184613c6f565b905092915050565b5f805f60608486031215613d0257613d01613392565b5b5f613d0f8682870161376d565b9350506020613d2086828701613527565b9250506040613d3186828701613527565b9150509250925092565b5f8060408385031215613d5157613d50613392565b5b5f613d5e8582860161376d565b9250506020613d6f858286016135e6565b9150509250929050565b5f67ffffffffffffffff821115613d9357613d92613461565b5b613d9c82613451565b9050602081019050919050565b5f613dbb613db684613d79565b6134bf565b905082815260208101848484011115613dd757613dd66137e7565b5b613de284828561381b565b509392505050565b5f82601f830112613dfe57613dfd61344d565b5b8135613e0e848260208601613da9565b91505092915050565b5f805f8060808587031215613e2f57613e2e613392565b5b5f613e3c8782880161376d565b9450506020613e4d8782880161376d565b9350506040613e5e87828801613527565b925050606085013567ffffffffffffffff811115613e7f57613e7e613396565b5b613e8b87828801613dea565b91505092959194509250565b5f8060408385031215613ead57613eac613392565b5b5f613eba85828601613527565b9250506020613ecb8582860161376d565b9150509250929050565b608082015f820151613ee95f850182613ac5565b506020820151613efc6020850182613ae7565b506040820151613f0f6040850182613af6565b506060820151613f226060850182613b13565b50505050565b5f608082019050613f3b5f830184613ed5565b92915050565b5f8060408385031215613f5757613f56613392565b5b5f613f648582860161376d565b9250506020613f758582860161376d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613ff057607f821691505b60208210810361400357614002613fac565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026140657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261402a565b61406f868361402a565b95508019841693508086168417925050509392505050565b5f6140a161409c61409784613508565b613959565b613508565b9050919050565b5f819050919050565b6140ba83614087565b6140ce6140c6826140a8565b848454614036565b825550505050565b5f90565b6140e26140d6565b6140ed8184846140b1565b505050565b5b81811015614110576141055f826140da565b6001810190506140f3565b5050565b601f8211156141555761412681614009565b61412f8461401b565b8101602085101561413e578190505b61415261414a8561401b565b8301826140f2565b50505b505050565b5f82821c905092915050565b5f6141755f198460080261415a565b1980831691505092915050565b5f61418d8383614166565b9150826002028217905092915050565b6141a682613654565b67ffffffffffffffff8111156141bf576141be613461565b5b6141c98254613fd9565b6141d4828285614114565b5f60209050601f831160018114614205575f84156141f3578287015190505b6141fd8582614182565b865550614264565b601f19841661421386614009565b5f5b8281101561423a57848901518255600182019150602085019450602081019050614215565b868310156142575784890151614253601f891682614166565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b50565b5f6142845f8361426c565b915061428f82614276565b5f82019050919050565b5f6142a382614279565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61431182613508565b915061431c83613508565b92508261432c5761432b6142ad565b5b828204905092915050565b7f436c61696d206973206e6f7420656e61626c65642100000000000000000000005f82015250565b5f61436b60158361365e565b915061437682614337565b602082019050919050565b5f6020820190508181035f8301526143988161435f565b9050919050565b5f6143a982613508565b91506143b483613508565b9250826143c4576143c36142ad565b5b828206905092915050565b7f546f6b656e73206d75737420626520696e2032207061697273210000000000005f82015250565b5f614403601a8361365e565b915061440e826143cf565b602082019050919050565b5f6020820190508181035f830152614430816143f7565b9050919050565b7f4d6178206d696e7420616d6f756e7420657863656564656421000000000000005f82015250565b5f61446b60198361365e565b915061447682614437565b602082019050919050565b5f6020820190508181035f8301526144988161445f565b9050919050565b5f6144a982613508565b91506144b483613508565b92508282019050808211156144cc576144cb6142da565b5b92915050565b7f4d617820737570706c79206578636565646564210000000000000000000000005f82015250565b5f61450660148361365e565b9150614511826144d2565b602082019050919050565b5f6020820190508181035f830152614533816144fa565b9050919050565b5f8151905061454881613757565b92915050565b5f6020828403121561456357614562613392565b5b5f6145708482850161453a565b91505092915050565b7f596f7520646f206e6f74206f776e207468697320746f6b656e210000000000005f82015250565b5f6145ad601a8361365e565b91506145b882614579565b602082019050919050565b5f6020820190508181035f8301526145da816145a1565b9050919050565b7f546f6b656e20697320626c61636b6c69737465642100000000000000000000005f82015250565b5f61461560158361365e565b9150614620826145e1565b602082019050919050565b5f6020820190508181035f83015261464281614609565b9050919050565b7f546f6b656e2068617320616c7265616479206265656e20636c61696d656421005f82015250565b5f61467d601f8361365e565b915061468882614649565b602082019050919050565b5f6020820190508181035f8301526146aa81614671565b9050919050565b5f6060820190506146c45f83018661372f565b6146d1602083018561372f565b6146de60408301846137bf565b949350505050565b7f496e76616c6964206d696e7420616d6f756e74210000000000000000000000005f82015250565b5f61471a60148361365e565b9150614725826146e6565b602082019050919050565b5f6020820190508181035f8301526147478161470e565b9050919050565b5f61475882613508565b915061476383613508565b925082820261477181613508565b91508282048414831517614788576147876142da565b5b5092915050565b7f496e73756666696369656e742066756e647321000000000000000000000000005f82015250565b5f6147c360138361365e565b91506147ce8261478f565b602082019050919050565b5f6020820190508181035f8301526147f0816147b7565b9050919050565b7f54686520636f6e747261637420697320706175736564210000000000000000005f82015250565b5f61482b60178361365e565b9150614836826147f7565b602082019050919050565b5f6020820190508181035f8301526148588161481f565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f6148b9602f8361365e565b91506148c48261485f565b604082019050919050565b5f6020820190508181035f8301526148e6816148ad565b9050919050565b5f81905092915050565b5f61490182613654565b61490b81856148ed565b935061491b81856020860161366e565b80840191505092915050565b5f815461493381613fd9565b61493d81866148ed565b9450600182165f8114614957576001811461496c5761499e565b60ff198316865281151582028601935061499e565b61497585614009565b5f5b8381101561499657815481890152600182019150602081019050614977565b838801955050505b50505092915050565b5f6149b282866148f7565b91506149be82856148f7565b91506149ca8284614927565b9150819050949350505050565b5f6149e182613508565b91505f82036149f3576149f26142da565b5b600182039050919050565b5f604082019050614a115f83018561372f565b614a1e602083018461372f565b9392505050565b5f81519050614a33816135d0565b92915050565b5f60208284031215614a4e57614a4d613392565b5b5f614a5b84828501614a25565b91505092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f614a98601f8361365e565b9150614aa382614a64565b602082019050919050565b5f6020820190508181035f830152614ac581614a8c565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f614af082614acc565b614afa8185614ad6565b9350614b0a81856020860161366e565b614b1381613451565b840191505092915050565b5f608082019050614b315f83018761372f565b614b3e602083018661372f565b614b4b60408301856137bf565b8181036060830152614b5d8184614ae6565b905095945050505050565b5f81519050614b76816133c5565b92915050565b5f60208284031215614b9157614b90613392565b5b5f614b9e84828501614b68565b9150509291505056fea2646970667358221220330abc69be303ca33d59c89b27af7cebedbc9b52e417dc0f6755a1aad714d92264736f6c63430008190033