[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "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": "ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "deleteDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isSoulboundActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_id", "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": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "resetTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newUri", "type": "string" } ], "name": "setBaseTokenUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "soulboundManager", "outputs": [ { "internalType": "contract ISoulboundManager", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isActive", "type": "bool" } ], "name": "updateSBActivation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ISoulboundManager", "name": "_address", "type": "address" } ], "name": "updateSoulboundManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405261012c600f5560405180602001604052805f8152506010908162000029919062000672565b50600160115f6101000a81548160ff02191690831515021790555034801562000050575f80fd5b5062000061620001e460201b60201c565b6040518060400160405280601981526020017f4d657461436c6173682047656e657369732047617465776179000000000000008152506040518060400160405280600f81526020017f47656e65736973204761746577617900000000000000000000000000000000008152508160029081620000de919062000672565b508060039081620000f0919062000672565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000166575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200015d919062000799565b60405180910390fd5b6200017781620001eb60201b60201c565b506200019b5f801b6200018f620001e460201b60201c565b620002ae60201b60201c565b50620001dd7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620001d1620001e460201b60201c565b620002ae60201b60201c565b50620007b4565b5f33905090565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f620002c18383620003aa60201b60201c565b620003a0576001600d5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200033c620001e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050620003a4565b5f90505b92915050565b5f600d5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200048a57607f821691505b602082108103620004a0576200049f62000445565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004c7565b620005108683620004c7565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200055a620005546200054e8462000528565b62000531565b62000528565b9050919050565b5f819050919050565b62000575836200053a565b6200058d620005848262000561565b848454620004d3565b825550505050565b5f90565b620005a362000595565b620005b08184846200056a565b505050565b5b81811015620005d757620005cb5f8262000599565b600181019050620005b6565b5050565b601f8211156200062657620005f081620004a6565b620005fb84620004b8565b810160208510156200060b578190505b620006236200061a85620004b8565b830182620005b5565b50505b505050565b5f82821c905092915050565b5f620006485f19846008026200062b565b1980831691505092915050565b5f62000662838362000637565b9150826002028217905092915050565b6200067d826200040e565b67ffffffffffffffff81111562000699576200069862000418565b5b620006a5825462000472565b620006b2828285620005db565b5f60209050601f831160018114620006e8575f8415620006d3578287015190505b620006df858262000655565b8655506200074e565b601f198416620006f886620004a6565b5f5b828110156200072157848901518255600182019150602085019450602081019050620006fa565b868310156200074157848901516200073d601f89168262000637565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007818262000756565b9050919050565b620007938162000775565b82525050565b5f602082019050620007ae5f83018462000788565b92915050565b6145d180620007c25f395ff3fe608060405234801561000f575f80fd5b506004361061025c575f3560e01c806370a0823111610144578063a22cb465116100c1578063cfc86f7b11610085578063cfc86f7b14610719578063d539139314610737578063d547741f14610755578063d5abeb0114610771578063e985e9c51461078f578063f2fde38b146107bf5761025c565b8063a22cb46514610689578063a6f2d768146106a5578063aa1b103f146106c3578063b88d4fde146106cd578063c87b56dd146106e95761025c565b80638da5cb5b116101085780638da5cb5b146105e357806391d148541461060157806395652cfa1461063157806395d89b411461064d578063a217fddf1461066b5761025c565b806370a082311461053f578063715018a61461056f57806375b238fc146105795780638462151c146105975780638a616bc0146105c75761025c565b80632f745c59116101dd57806342966c68116101a157806342966c681461046d578063462159ff146104895780634f6ccce7146104a75780635944c753146104d75780636352211e146104f35780636d68dedb146105235761025c565b80632f745c59146103cd57806336568abe146103fd5780633ba95cae1461041957806340c10f191461043557806342842e0e146104515761025c565b806318160ddd1161022457806318160ddd1461031657806323b872dd14610334578063248a9ca3146103505780632a55205a146103805780632f2ff15d146103b15761025c565b806301ffc9a71461026057806304634d8d1461029057806306fdde03146102ac578063081812fc146102ca578063095ea7b3146102fa575b5f80fd5b61027a600480360381019061027591906133b9565b6107db565b60405161028791906133fe565b60405180910390f35b6102aa60048036038101906102a591906134b2565b6107ec565b005b6102b4610825565b6040516102c1919061357a565b60405180910390f35b6102e460048036038101906102df91906135cd565b6108b5565b6040516102f19190613607565b60405180910390f35b610314600480360381019061030f9190613620565b6108d0565b005b61031e6108e6565b60405161032b919061366d565b60405180910390f35b61034e60048036038101906103499190613686565b6108f2565b005b61036a60048036038101906103659190613709565b6109f1565b6040516103779190613743565b60405180910390f35b61039a6004803603810190610395919061375c565b610a0e565b6040516103a892919061379a565b60405180910390f35b6103cb60048036038101906103c691906137c1565b610be9565b005b6103e760048036038101906103e29190613620565b610c0b565b6040516103f4919061366d565b60405180910390f35b610417600480360381019061041291906137c1565b610caf565b005b610433600480360381019061042e919061383a565b610d2a565b005b61044f600480360381019061044a9190613620565b610d99565b005b61046b60048036038101906104669190613686565b610e2a565b005b610487600480360381019061048291906135cd565b610e49565b005b610491610e5f565b60405161049e91906133fe565b60405180910390f35b6104c160048036038101906104bc91906135cd565b610e71565b6040516104ce919061366d565b60405180910390f35b6104f160048036038101906104ec9190613865565b610ee3565b005b61050d600480360381019061050891906135cd565b610f1e565b60405161051a9190613607565b60405180910390f35b61053d600480360381019061053891906138df565b610f2f565b005b6105596004803603810190610554919061390a565b610f76565b604051610566919061366d565b60405180910390f35b61057761102c565b005b61058161103f565b60405161058e9190613743565b60405180910390f35b6105b160048036038101906105ac919061390a565b611063565b6040516105be91906139ec565b60405180910390f35b6105e160048036038101906105dc91906135cd565b61110e565b005b6105eb611145565b6040516105f89190613607565b60405180910390f35b61061b600480360381019061061691906137c1565b61116d565b60405161062891906133fe565b60405180910390f35b61064b60048036038101906106469190613b38565b6111d1565b005b61065561120f565b604051610662919061357a565b60405180910390f35b61067361129f565b6040516106809190613743565b60405180910390f35b6106a3600480360381019061069e9190613b7f565b6112a5565b005b6106ad6112bb565b6040516106ba9190613c18565b60405180910390f35b6106cb6112e1565b005b6106e760048036038101906106e29190613ccf565b611316565b005b61070360048036038101906106fe91906135cd565b611333565b604051610710919061357a565b60405180910390f35b610721611345565b60405161072e919061357a565b60405180910390f35b61073f6113d1565b60405161074c9190613743565b60405180910390f35b61076f600480360381019061076a91906137c1565b6113f5565b005b610779611417565b604051610786919061366d565b60405180910390f35b6107a960048036038101906107a49190613d4f565b61141d565b6040516107b691906133fe565b60405180910390f35b6107d960048036038101906107d4919061390a565b6114ab565b005b5f6107e58261152f565b9050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610816816115a8565b61082083836115bc565b505050565b60606002805461083490613dba565b80601f016020809104026020016040519081016040528092919081815260200182805461086090613dba565b80156108ab5780601f10610882576101008083540402835291602001916108ab565b820191905f5260205f20905b81548152906001019060200180831161088e57829003601f168201915b5050505050905090565b5f6108bf82611756565b506108c9826117dc565b9050919050565b6108e282826108dd611815565b61181c565b5050565b5f600a80549050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610962575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016109599190613607565b60405180910390fd5b5f6109758383610970611815565b61182e565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109eb578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016109e293929190613dea565b60405180910390fd5b50505050565b5f600d5f8381526020019081526020015f20600101549050919050565b5f805f60015f8681526020019081526020015f206040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603610b96575f6040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b5f610b9f611940565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610bcb9190613e4c565b610bd59190613eba565b9050815f0151819350935050509250929050565b610bf2826109f1565b610bfb816115a8565b610c058383611949565b50505050565b5f610c1583610f76565b8210610c5a5782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610c5192919061379a565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b610cb7611815565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d1b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d258282611a33565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610d54816115a8565b81601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610dc3816115a8565b600f546001610dd06108e6565b610dda9190613eea565b1115610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290613f67565b60405180910390fd5b610e258383611b1d565b505050565b610e4483838360405180602001604052805f815250611316565b505050565b610e5b5f82610e56611815565b61182e565b5050565b60115f9054906101000a900460ff1681565b5f610e7a6108e6565b8210610ebf575f826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610eb692919061379a565b60405180910390fd5b600a8281548110610ed357610ed2613f85565b5b905f5260205f2001549050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610f0d816115a8565b610f18848484611c10565b50505050565b5f610f2882611756565b9050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610f59816115a8565b8160115f6101000a81548160ff0219169083151502179055505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe7575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610fde9190613607565b60405180910390fd5b60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611034611dbf565b61103d5f611e46565b565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b60605f61106f83610f76565b90505f8167ffffffffffffffff81111561108c5761108b613a14565b5b6040519080825280602002602001820160405280156110ba5781602001602082028036833780820191505090505b5090505f5b82811015611103576110d18582610c0b565b8282815181106110e4576110e3613f85565b5b60200260200101818152505080806110fb90613fb2565b9150506110bf565b508092505050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611138816115a8565b61114182611f09565b5050565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f600d5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756111fb816115a8565b816010908161120a919061418d565b505050565b60606003805461121e90613dba565b80601f016020809104026020016040519081016040528092919081815260200182805461124a90613dba565b80156112955780601f1061126c57610100808354040283529160200191611295565b820191905f5260205f20905b81548152906001019060200180831161127857829003601f168201915b5050505050905090565b5f801b81565b6112b76112b0611815565b8383611f63565b5050565b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561130b816115a8565b6113136120cc565b50565b6113218484846108f2565b61132d84848484612115565b50505050565b606061133e826122c7565b9050919050565b6010805461135290613dba565b80601f016020809104026020016040519081016040528092919081815260200182805461137e90613dba565b80156113c95780601f106113a0576101008083540402835291602001916113c9565b820191905f5260205f20905b8154815290600101906020018083116113ac57829003601f168201915b505050505081565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6113fe826109f1565b611407816115a8565b6114118383611a33565b50505050565b600f5481565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6114b3611dbf565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611523575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161151a9190613607565b60405180910390fd5b61152c81611e46565b50565b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115a157506115a0826123d2565b5b9050919050565b6115b9816115b4611815565b612432565b50565b5f6115c5611940565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff16111561162a5781816040517f6f483d0900000000000000000000000000000000000000000000000000000000815260040161162192919061428c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361169a575f6040517fb6d9900a0000000000000000000000000000000000000000000000000000000081526004016116919190613607565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff168152505f80820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f8061176183612483565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117d357826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016117ca919061366d565b60405180910390fd5b80915050919050565b5f60065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b61182983838360016124bc565b505050565b5f60115f9054906101000a900460ff161561192c575f61184d84612483565b9050601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5b5c6d182866040518363ffffffff1660e01b81526004016118ac92919061379a565b602060405180830381865afa1580156118c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118eb91906142c7565b61192a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192190614362565b60405180910390fd5b505b61193784848461267b565b90509392505050565b5f612710905090565b5f611954838361116d565b611a29576001600d5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506119c6611815565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611a2d565b5f90505b92915050565b5f611a3e838361116d565b15611b13575f600d5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611ab0611815565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611b17565b5f90505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b8d575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611b849190613607565b60405180910390fd5b5f611b9983835f61182e565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c0b575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401611c029190613607565b60405180910390fd5b505050565b5f611c19611940565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff161115611c80578382826040517fdfd1fc1b000000000000000000000000000000000000000000000000000000008152600401611c7793929190614380565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cf257835f6040517f969f0852000000000000000000000000000000000000000000000000000000008152600401611ce99291906143b5565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff1681525060015f8681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505050505050565b611dc7611815565b73ffffffffffffffffffffffffffffffffffffffff16611de5611145565b73ffffffffffffffffffffffffffffffffffffffff1614611e4457611e08611815565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611e3b9190613607565b60405180910390fd5b565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60015f8281526020019081526020015f205f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f820160146101000a8154906bffffffffffffffffffffffff0219169055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fd357816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611fca9190613607565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120bf91906133fe565b60405180910390a3505050565b5f805f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f820160146101000a8154906bffffffffffffffffffffffff02191690555050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156122c1578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02612158611815565b8685856040518563ffffffff1660e01b815260040161217a949392919061442e565b6020604051808303815f875af19250505080156121b557506040513d601f19601f820116820180604052508101906121b2919061448c565b60015b612236573d805f81146121e3576040519150601f19603f3d011682016040523d82523d5f602084013e6121e8565b606091505b505f81510361222e57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016122259190613607565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146122bf57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016122b69190613607565b60405180910390fd5b505b50505050565b60606122d282611756565b505f600c5f8481526020019081526020015f2080546122f090613dba565b80601f016020809104026020016040519081016040528092919081815260200182805461231c90613dba565b80156123675780601f1061233e57610100808354040283529160200191612367565b820191905f5260205f20905b81548152906001019060200180831161234a57829003601f168201915b505050505090505f612377612795565b90505f81510361238b5781925050506123cd565b5f825111156123bf5780826040516020016123a79291906144f1565b604051602081830303815290604052925050506123cd565b6123c884612825565b925050505b919050565b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061242b575061242a8261288b565b5b9050919050565b61243c828261116d565b61247f5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401612476929190614514565b60405180910390fd5b5050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806124f457505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612626575f61250384611756565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561256d57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612580575061257e818461141d565b155b156125c257826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016125b99190613607565b60405180910390fd5b811561262457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360065f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f80612688858585612904565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126cb576126c684612b0f565b61270a565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612709576127088185612b53565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361274b5761274684612c9d565b61278a565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612789576127888585612d5d565b5b5b809150509392505050565b6060601080546127a490613dba565b80601f01602080910402602001604051908101604052809291908181526020018280546127d090613dba565b801561281b5780601f106127f25761010080835404028352916020019161281b565b820191905f5260205f20905b8154815290600101906020018083116127fe57829003601f168201915b5050505050905090565b606061283082611756565b505f61283a612795565b90505f8151116128585760405180602001604052805f815250612883565b8061286284612de1565b6040516020016128739291906144f1565b6040516020818303038152906040525b915050919050565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806128fd57506128fc82612eab565b5b9050919050565b5f8061290f84612483565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146129505761294f818486612ebc565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146129db5761298f5f855f806124bc565b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612a5a57600160055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460045f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600a80549050600b5f8381526020019081526020015f2081905550600a81908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f612b5d83610f76565b90505f60095f8481526020019081526020015f20549050818114612c34575f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160095f8381526020019081526020015f2081905550505b60095f8481526020019081526020015f205f905560085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f6001600a80549050612cb0919061453b565b90505f600b5f8481526020019081526020015f205490505f600a8381548110612cdc57612cdb613f85565b5b905f5260205f200154905080600a8381548110612cfc57612cfb613f85565b5b905f5260205f20018190555081600b5f8381526020019081526020015f2081905550600b5f8581526020019081526020015f205f9055600a805480612d4457612d4361456e565b5b600190038181905f5260205f20015f9055905550505050565b5f6001612d6984610f76565b612d73919061453b565b90508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060095f8481526020019081526020015f2081905550505050565b60605f6001612def84612f7f565b0190505f8167ffffffffffffffff811115612e0d57612e0c613a14565b5b6040519080825280601f01601f191660200182016040528015612e3f5781602001600182028036833780820191505090505b5090505f82602001820190505b600115612ea0578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612e9557612e94613e8d565b5b0494505f8503612e4c575b819350505050919050565b5f612eb5826130d0565b9050919050565b612ec78383836131b1565b612f7a575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f3b57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612f32919061366d565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612f7192919061379a565b60405180910390fd5b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612fdb577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612fd157612fd0613e8d565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613018576d04ee2d6d415b85acef8100000000838161300e5761300d613e8d565b5b0492506020810190505b662386f26fc10000831061304757662386f26fc10000838161303d5761303c613e8d565b5b0492506010810190505b6305f5e1008310613070576305f5e100838161306657613065613e8d565b5b0492506008810190505b612710831061309557612710838161308b5761308a613e8d565b5b0492506004810190505b606483106130b857606483816130ae576130ad613e8d565b5b0492506002810190505b600a83106130c7576001810190505b80915050919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061319a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806131aa57506131a982613271565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561326857508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806132295750613228848461141d565b5b8061326757508273ffffffffffffffffffffffffffffffffffffffff1661324f836117dc565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f7f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806132e357506132e2826132ea565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61339881613364565b81146133a2575f80fd5b50565b5f813590506133b38161338f565b92915050565b5f602082840312156133ce576133cd61335c565b5b5f6133db848285016133a5565b91505092915050565b5f8115159050919050565b6133f8816133e4565b82525050565b5f6020820190506134115f8301846133ef565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61344082613417565b9050919050565b61345081613436565b811461345a575f80fd5b50565b5f8135905061346b81613447565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b61349181613471565b811461349b575f80fd5b50565b5f813590506134ac81613488565b92915050565b5f80604083850312156134c8576134c761335c565b5b5f6134d58582860161345d565b92505060206134e68582860161349e565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561352757808201518184015260208101905061350c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61354c826134f0565b61355681856134fa565b935061356681856020860161350a565b61356f81613532565b840191505092915050565b5f6020820190508181035f8301526135928184613542565b905092915050565b5f819050919050565b6135ac8161359a565b81146135b6575f80fd5b50565b5f813590506135c7816135a3565b92915050565b5f602082840312156135e2576135e161335c565b5b5f6135ef848285016135b9565b91505092915050565b61360181613436565b82525050565b5f60208201905061361a5f8301846135f8565b92915050565b5f80604083850312156136365761363561335c565b5b5f6136438582860161345d565b9250506020613654858286016135b9565b9150509250929050565b6136678161359a565b82525050565b5f6020820190506136805f83018461365e565b92915050565b5f805f6060848603121561369d5761369c61335c565b5b5f6136aa8682870161345d565b93505060206136bb8682870161345d565b92505060406136cc868287016135b9565b9150509250925092565b5f819050919050565b6136e8816136d6565b81146136f2575f80fd5b50565b5f81359050613703816136df565b92915050565b5f6020828403121561371e5761371d61335c565b5b5f61372b848285016136f5565b91505092915050565b61373d816136d6565b82525050565b5f6020820190506137565f830184613734565b92915050565b5f80604083850312156137725761377161335c565b5b5f61377f858286016135b9565b9250506020613790858286016135b9565b9150509250929050565b5f6040820190506137ad5f8301856135f8565b6137ba602083018461365e565b9392505050565b5f80604083850312156137d7576137d661335c565b5b5f6137e4858286016136f5565b92505060206137f58582860161345d565b9150509250929050565b5f61380982613436565b9050919050565b613819816137ff565b8114613823575f80fd5b50565b5f8135905061383481613810565b92915050565b5f6020828403121561384f5761384e61335c565b5b5f61385c84828501613826565b91505092915050565b5f805f6060848603121561387c5761387b61335c565b5b5f613889868287016135b9565b935050602061389a8682870161345d565b92505060406138ab8682870161349e565b9150509250925092565b6138be816133e4565b81146138c8575f80fd5b50565b5f813590506138d9816138b5565b92915050565b5f602082840312156138f4576138f361335c565b5b5f613901848285016138cb565b91505092915050565b5f6020828403121561391f5761391e61335c565b5b5f61392c8482850161345d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139678161359a565b82525050565b5f613978838361395e565b60208301905092915050565b5f602082019050919050565b5f61399a82613935565b6139a4818561393f565b93506139af8361394f565b805f5b838110156139df5781516139c6888261396d565b97506139d183613984565b9250506001810190506139b2565b5085935050505092915050565b5f6020820190508181035f830152613a048184613990565b905092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613a4a82613532565b810181811067ffffffffffffffff82111715613a6957613a68613a14565b5b80604052505050565b5f613a7b613353565b9050613a878282613a41565b919050565b5f67ffffffffffffffff821115613aa657613aa5613a14565b5b613aaf82613532565b9050602081019050919050565b828183375f83830152505050565b5f613adc613ad784613a8c565b613a72565b905082815260208101848484011115613af857613af7613a10565b5b613b03848285613abc565b509392505050565b5f82601f830112613b1f57613b1e613a0c565b5b8135613b2f848260208601613aca565b91505092915050565b5f60208284031215613b4d57613b4c61335c565b5b5f82013567ffffffffffffffff811115613b6a57613b69613360565b5b613b7684828501613b0b565b91505092915050565b5f8060408385031215613b9557613b9461335c565b5b5f613ba28582860161345d565b9250506020613bb3858286016138cb565b9150509250929050565b5f819050919050565b5f613be0613bdb613bd684613417565b613bbd565b613417565b9050919050565b5f613bf182613bc6565b9050919050565b5f613c0282613be7565b9050919050565b613c1281613bf8565b82525050565b5f602082019050613c2b5f830184613c09565b92915050565b5f67ffffffffffffffff821115613c4b57613c4a613a14565b5b613c5482613532565b9050602081019050919050565b5f613c73613c6e84613c31565b613a72565b905082815260208101848484011115613c8f57613c8e613a10565b5b613c9a848285613abc565b509392505050565b5f82601f830112613cb657613cb5613a0c565b5b8135613cc6848260208601613c61565b91505092915050565b5f805f8060808587031215613ce757613ce661335c565b5b5f613cf48782880161345d565b9450506020613d058782880161345d565b9350506040613d16878288016135b9565b925050606085013567ffffffffffffffff811115613d3757613d36613360565b5b613d4387828801613ca2565b91505092959194509250565b5f8060408385031215613d6557613d6461335c565b5b5f613d728582860161345d565b9250506020613d838582860161345d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613dd157607f821691505b602082108103613de457613de3613d8d565b5b50919050565b5f606082019050613dfd5f8301866135f8565b613e0a602083018561365e565b613e1760408301846135f8565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e568261359a565b9150613e618361359a565b9250828202613e6f8161359a565b91508282048414831517613e8657613e85613e1f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ec48261359a565b9150613ecf8361359a565b925082613edf57613ede613e8d565b5b828204905092915050565b5f613ef48261359a565b9150613eff8361359a565b9250828201905080821115613f1757613f16613e1f565b5b92915050565b7f4578636565646564206d617820737570706c79000000000000000000000000005f82015250565b5f613f516013836134fa565b9150613f5c82613f1d565b602082019050919050565b5f6020820190508181035f830152613f7e81613f45565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613fbc8261359a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fee57613fed613e1f565b5b600182019050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026140557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261401a565b61405f868361401a565b95508019841693508086168417925050509392505050565b5f61409161408c6140878461359a565b613bbd565b61359a565b9050919050565b5f819050919050565b6140aa83614077565b6140be6140b682614098565b848454614026565b825550505050565b5f90565b6140d26140c6565b6140dd8184846140a1565b505050565b5b81811015614100576140f55f826140ca565b6001810190506140e3565b5050565b601f8211156141455761411681613ff9565b61411f8461400b565b8101602085101561412e578190505b61414261413a8561400b565b8301826140e2565b50505b505050565b5f82821c905092915050565b5f6141655f198460080261414a565b1980831691505092915050565b5f61417d8383614156565b9150826002028217905092915050565b614196826134f0565b67ffffffffffffffff8111156141af576141ae613a14565b5b6141b98254613dba565b6141c4828285614104565b5f60209050601f8311600181146141f5575f84156141e3578287015190505b6141ed8582614172565b865550614254565b601f19841661420386613ff9565b5f5b8281101561422a57848901518255600182019150602085019450602081019050614205565b868310156142475784890151614243601f891682614156565b8355505b6001600288020188555050505b505050505050565b5f61427661427161426c84613471565b613bbd565b61359a565b9050919050565b6142868161425c565b82525050565b5f60408201905061429f5f83018561427d565b6142ac602083018461365e565b9392505050565b5f815190506142c1816138b5565b92915050565b5f602082840312156142dc576142db61335c565b5b5f6142e9848285016142b3565b91505092915050565b7f5472616e73666572206e6f7420616c6c6f7765643a20536f756c626f756e64205f8201527f7265737472696374696f6e730000000000000000000000000000000000000000602082015250565b5f61434c602c836134fa565b9150614357826142f2565b604082019050919050565b5f6020820190508181035f83015261437981614340565b9050919050565b5f6060820190506143935f83018661365e565b6143a0602083018561427d565b6143ad604083018461365e565b949350505050565b5f6040820190506143c85f83018561365e565b6143d560208301846135f8565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f614400826143dc565b61440a81856143e6565b935061441a81856020860161350a565b61442381613532565b840191505092915050565b5f6080820190506144415f8301876135f8565b61444e60208301866135f8565b61445b604083018561365e565b818103606083015261446d81846143f6565b905095945050505050565b5f815190506144868161338f565b92915050565b5f602082840312156144a1576144a061335c565b5b5f6144ae84828501614478565b91505092915050565b5f81905092915050565b5f6144cb826134f0565b6144d581856144b7565b93506144e581856020860161350a565b80840191505092915050565b5f6144fc82856144c1565b915061450882846144c1565b91508190509392505050565b5f6040820190506145275f8301856135f8565b6145346020830184613734565b9392505050565b5f6145458261359a565b91506145508361359a565b925082820390508181111561456857614567613e1f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220deeeeff6a8553a25f5626803eba62a2ead1cddc658c8af86492f1d698f87b0f264736f6c63430008140033